443 lines
15 KiB
QML
443 lines
15 KiB
QML
|
|
import QtQuick
|
|||
|
|
import QtQuick.Controls
|
|||
|
|
import QtQuick.Layouts
|
|||
|
|
import QtCharts
|
|||
|
|
import "./common"
|
|||
|
|
Item {
|
|||
|
|
id: self
|
|||
|
|
property var currentStepIndex: -1
|
|||
|
|
property var currentIndex: 0
|
|||
|
|
property var isStart: curTaskIndex == 4
|
|||
|
|
property var stepInstructId: ""
|
|||
|
|
property var stepIncId: ""
|
|||
|
|
property var targetTemperature: 35
|
|||
|
|
property var currentTemperature: 0
|
|||
|
|
property var progress: stepModel.count > 0 ? (currentIndex / stepModel.count) : 0.0
|
|||
|
|
property var imageNames: ["方位1", "方位2"]
|
|||
|
|
property var lstDetialTexts: ["Inc 126.24° Gtf 45°", "Inc 54.76° Gtf 225°"]
|
|||
|
|
property var g_inc: "0°"
|
|||
|
|
property var g_gtf: "0°"
|
|||
|
|
ListModel{
|
|||
|
|
id: stepModel
|
|||
|
|
ListElement{name:"方位1标定"; tips: "请放置到1方位"; _state: "0"; src: "./step1.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位2标定"; tips: "请放置到2方位"; _state: "0"; src: "./方位2.png"; endTime: ""}
|
|||
|
|
}
|
|||
|
|
Component.onCompleted: {
|
|||
|
|
stopBd.connect(onStopBd)
|
|||
|
|
taskActuatorManager.executeFinished.connect(onExecuteFinished)
|
|||
|
|
}
|
|||
|
|
onIsStartChanged: {
|
|||
|
|
if (isStart) {
|
|||
|
|
startSteps()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function startSteps()
|
|||
|
|
{
|
|||
|
|
aw_Digital = []
|
|||
|
|
clearSteps()
|
|||
|
|
task5State = "1"
|
|||
|
|
stepIncId = ""
|
|||
|
|
stepInstructId = ""
|
|||
|
|
currentStepIndex = 0
|
|||
|
|
taskModel.get(curTaskIndex).state = task5State
|
|||
|
|
tipText.visible = true
|
|||
|
|
runIncStep()
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function clearSteps(){
|
|||
|
|
tipText.visible = false
|
|||
|
|
for(var i = 0; i < stepModel.count; i++)
|
|||
|
|
{
|
|||
|
|
stepModel.get(i)._state = "0"
|
|||
|
|
}
|
|||
|
|
currentStepIndex = -1
|
|||
|
|
currentIndex = 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Rectangle{
|
|||
|
|
id: stepLst
|
|||
|
|
width: parent.width/ 2
|
|||
|
|
anchors.top: parent.top
|
|||
|
|
anchors.bottom: parent.bottom
|
|||
|
|
radius: 9
|
|||
|
|
clip: true
|
|||
|
|
|
|||
|
|
QxText{
|
|||
|
|
id: tTitle
|
|||
|
|
text: "标定进度"
|
|||
|
|
font.pixelSize: 20
|
|||
|
|
anchors.left: parent.left
|
|||
|
|
anchors.leftMargin: 30
|
|||
|
|
anchors.top: parent.top
|
|||
|
|
anchors.topMargin: 18
|
|||
|
|
}
|
|||
|
|
ListView{
|
|||
|
|
id: listView
|
|||
|
|
model: stepModel
|
|||
|
|
boundsBehavior: Flickable.StopAtBounds
|
|||
|
|
anchors.top: tTitle.bottom
|
|||
|
|
anchors.left: parent.left
|
|||
|
|
anchors.right: parent.right
|
|||
|
|
anchors.bottom: parent.bottom
|
|||
|
|
anchors.leftMargin: 30
|
|||
|
|
anchors.topMargin: 39
|
|||
|
|
delegate: Item{
|
|||
|
|
id: itemDelegate
|
|||
|
|
width: ListView.view.width
|
|||
|
|
height: 42
|
|||
|
|
Row{
|
|||
|
|
spacing: 10
|
|||
|
|
anchors.verticalCenter: parent.verticalCenter
|
|||
|
|
Image{
|
|||
|
|
source: "./resource/state"+_state+".png"
|
|||
|
|
width: 20
|
|||
|
|
height: 20
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
QxListText{
|
|||
|
|
text: imageNames[index]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
QxListText{
|
|||
|
|
text: lstDetialTexts[index]
|
|||
|
|
color: "#007EFF"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
QxListText{
|
|||
|
|
text: _state == "0" ? "未完成" :(_state == "2" ? endTime : "进行中")
|
|||
|
|
color: _state == "0" ? "#BFBFBF" :(_state == "2" ? "#007EFF" : "#40A362")
|
|||
|
|
anchors.verticalCenter: parent.verticalCenter
|
|||
|
|
anchors.right: stopButton.left
|
|||
|
|
anchors.rightMargin: 10
|
|||
|
|
}
|
|||
|
|
Rectangle
|
|||
|
|
{
|
|||
|
|
id: stopButton
|
|||
|
|
anchors.right: parent.right
|
|||
|
|
anchors.rightMargin: 49
|
|||
|
|
width: _state == "1" ? 30: 0
|
|||
|
|
height: 30
|
|||
|
|
anchors.verticalCenter: parent.verticalCenter
|
|||
|
|
radius: 5
|
|||
|
|
border.width: 1
|
|||
|
|
border.color: "#e5e5e5"
|
|||
|
|
visible: _state == "1"
|
|||
|
|
Rectangle{
|
|||
|
|
anchors.centerIn: parent
|
|||
|
|
width: 10
|
|||
|
|
height: 10
|
|||
|
|
radius: 2
|
|||
|
|
color: "red"
|
|||
|
|
}
|
|||
|
|
MouseArea{
|
|||
|
|
anchors.fill: parent
|
|||
|
|
onClicked:
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
_state = "2"
|
|||
|
|
endTime = Qt.formatDateTime(new Date(), "MM-dd hh:mm:ss")
|
|||
|
|
var info = common.getG("A_Digital")
|
|||
|
|
if(currentStepIndex < stepModel.count-1)
|
|||
|
|
{
|
|||
|
|
aw_Digital.push(info)
|
|||
|
|
writeACsv(1)
|
|||
|
|
info.x_Atemp = 0
|
|||
|
|
info.y_Atemp = 0
|
|||
|
|
info.z_Atemp = 0
|
|||
|
|
common.setG("A_Digital",JSON.stringify(info))
|
|||
|
|
reportJson["aw_Digital1"] = aw_Digital
|
|||
|
|
save_json("aw_Digital1.json", {"infos":aw_Digital})
|
|||
|
|
aw_Digital = []
|
|||
|
|
stepInstructId = ""
|
|||
|
|
tipText.visible = true
|
|||
|
|
runIncStep() // 调角度
|
|||
|
|
currentStepIndex++
|
|||
|
|
currentIndex++
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
task5State = "2"
|
|||
|
|
currentStepIndex = -1
|
|||
|
|
currentIndex = stepModel.count
|
|||
|
|
aw_Digital.push(common.getG("A_Digital"))
|
|||
|
|
reportJson["aw_Digital2"] = aw_Digital
|
|||
|
|
save_json("aw_Digital2.json", {"infos":aw_Digital})
|
|||
|
|
writeACsv(2)
|
|||
|
|
taskModel.get(curTaskIndex).state = task5State
|
|||
|
|
runNextStep()
|
|||
|
|
skLayout.currentIndex = curTaskIndex
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Rectangle{
|
|||
|
|
id: tipText
|
|||
|
|
width: 315
|
|||
|
|
height: 170
|
|||
|
|
radius: 19
|
|||
|
|
z:2
|
|||
|
|
color: "#FFFFFF"
|
|||
|
|
border.color: "#e5e5e5"
|
|||
|
|
border.width: 1
|
|||
|
|
anchors.centerIn: parent
|
|||
|
|
visible: false
|
|||
|
|
Row
|
|||
|
|
{
|
|||
|
|
spacing: 4
|
|||
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|||
|
|
anchors.top: parent.top
|
|||
|
|
anchors.topMargin: 37
|
|||
|
|
Image{
|
|||
|
|
width: 20
|
|||
|
|
height: 20
|
|||
|
|
source: "./resource/tip.png"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
QxText{
|
|||
|
|
font.pixelSize: 16
|
|||
|
|
text: "当前方位 Inc:" + g_inc + " Gtf:" + g_gtf
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Rectangle{
|
|||
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|||
|
|
anchors.bottom: parent.bottom
|
|||
|
|
anchors.bottomMargin: 37
|
|||
|
|
width: 129
|
|||
|
|
height: 39
|
|||
|
|
radius: 8
|
|||
|
|
color: "#007EFF"
|
|||
|
|
QxText{
|
|||
|
|
text:"已就绪"
|
|||
|
|
font.pixelSize: 14
|
|||
|
|
anchors.centerIn: parent
|
|||
|
|
color: "#FFFFFF"
|
|||
|
|
}
|
|||
|
|
MouseArea{
|
|||
|
|
anchors.fill: parent
|
|||
|
|
onClicked: {
|
|||
|
|
runStep()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
property var maxTValue: 0
|
|||
|
|
property var minTValue: 0
|
|||
|
|
property var minTemp: 0
|
|||
|
|
property var maxTemp: 90
|
|||
|
|
Rectangle{
|
|||
|
|
id: chartRect
|
|||
|
|
anchors.left: stepLst.right
|
|||
|
|
anchors.top: stepLst.top
|
|||
|
|
anchors.bottom: stepLst.bottom
|
|||
|
|
anchors.right: parent.right
|
|||
|
|
anchors.leftMargin: 10
|
|||
|
|
radius: 9
|
|||
|
|
ChartView {
|
|||
|
|
id: chartView
|
|||
|
|
// title: "温度"
|
|||
|
|
//![1]
|
|||
|
|
anchors.fill: parent
|
|||
|
|
legend.alignment: Qt.AlignTop
|
|||
|
|
antialiasing: true
|
|||
|
|
ValueAxis {
|
|||
|
|
id: valueAxisX
|
|||
|
|
titleText: "点数/个"
|
|||
|
|
min: 0
|
|||
|
|
max: maxTValue == 0 ? 20 : maxTValue
|
|||
|
|
labelFormat: "%.0f"
|
|||
|
|
tickCount: 10
|
|||
|
|
}
|
|||
|
|
ValueAxis{
|
|||
|
|
id: valueAxisY
|
|||
|
|
min: minTemp > 30 ? minTemp - 30 : 0
|
|||
|
|
max: maxTemp + 10
|
|||
|
|
titleText: "温度/mV"
|
|||
|
|
tickCount: 21
|
|||
|
|
tickInterval: 0.5
|
|||
|
|
labelFormat: "%.0f"
|
|||
|
|
}
|
|||
|
|
ValueAxis{
|
|||
|
|
id: valueAxisY2
|
|||
|
|
min: -1
|
|||
|
|
max: 1
|
|||
|
|
titleText: "姿态/V"
|
|||
|
|
tickCount: 21
|
|||
|
|
tickInterval: 0.5
|
|||
|
|
labelFormat: "%.1f"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lsAsTemperature
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisY: valueAxisY
|
|||
|
|
name: "tempAs"
|
|||
|
|
color: "#de8204"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lsAbTemperature
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisY: valueAxisY
|
|||
|
|
name: "tempAb"
|
|||
|
|
color: "#cbc13a"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lsMTemperature
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisY: valueAxisY
|
|||
|
|
name: "tempM"
|
|||
|
|
color: "#316846"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lsxAValue
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisYRight: valueAxisY2
|
|||
|
|
name: "ax"
|
|||
|
|
color: "#2695B4"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lsyAValue
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisYRight: valueAxisY2
|
|||
|
|
name: "ay"
|
|||
|
|
color: "#bf3eff"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lszAValue
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisYRight: valueAxisY2
|
|||
|
|
name: "az"
|
|||
|
|
color: "#4cd05c"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lsxMValue
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisYRight: valueAxisY2
|
|||
|
|
name: "mx"
|
|||
|
|
color: "#6016b8"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lsyMValue
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisYRight: valueAxisY2
|
|||
|
|
name: "my"
|
|||
|
|
color: "#76D3D9"
|
|||
|
|
}
|
|||
|
|
QxLineSeries {
|
|||
|
|
id: lszMValue
|
|||
|
|
axisX: valueAxisX
|
|||
|
|
axisYRight: valueAxisY2
|
|||
|
|
name: "mz"
|
|||
|
|
color: "#007dfc"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function runStep()
|
|||
|
|
{
|
|||
|
|
tipText.visible = false
|
|||
|
|
var handel = taskModel.get(curTaskIndex)
|
|||
|
|
stepModel.get(currentStepIndex)._state = "1"
|
|||
|
|
var group = parseInt(handel.v1)
|
|||
|
|
var groupcount = parseInt(handel.v3)
|
|||
|
|
var total = group*groupcount
|
|||
|
|
var firstName = handel.v5 == "数字量" ? "数字" : "模拟"
|
|||
|
|
stepInstructId = execute(firstName+"加速度计采集",{"total":total, "skip": 0})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function runIncStep()
|
|||
|
|
{
|
|||
|
|
var handel = taskModel.get(curTaskIndex)
|
|||
|
|
var group = parseInt(handel.v1)
|
|||
|
|
var groupcount = parseInt(handel.v3)
|
|||
|
|
var total = group*groupcount
|
|||
|
|
var firstName = handel.v5 == "数字量" ? "数字" : "模拟"
|
|||
|
|
stepIncId = execute(firstName+"加速度计采集",{"total": 1})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function onStopBd(){
|
|||
|
|
if(isStart)
|
|||
|
|
{
|
|||
|
|
stopExecute(stepInstructId)
|
|||
|
|
clearSteps()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function onExecuteFinished(id)
|
|||
|
|
{
|
|||
|
|
if(id == stepInstructId && isStart)
|
|||
|
|
{
|
|||
|
|
console.info("onExecuteFinished",currentStepIndex)
|
|||
|
|
var info = common.getG("A_Digital")
|
|||
|
|
currentTemperature = info.x_Atemp
|
|||
|
|
lsAsTemperature.append(Number(maxTValue), currentTemperature)
|
|||
|
|
lsAbTemperature.append(Number(maxTValue), info.a_tempb)
|
|||
|
|
lsMTemperature.append(Number(maxTValue), info.m_temp)
|
|||
|
|
lsxAValue.append(Number(maxTValue), info.x_Avalue)
|
|||
|
|
lsyAValue.append(Number(maxTValue), info.y_Avalue)
|
|||
|
|
lszAValue.append(Number(maxTValue), info.z_Avalue)
|
|||
|
|
lsxMValue.append(Number(maxTValue), info.x_Mvalue)
|
|||
|
|
lsyMValue.append(Number(maxTValue), info.y_Mvalue)
|
|||
|
|
lszMValue.append(Number(maxTValue), info.z_Mvalue)
|
|||
|
|
|
|||
|
|
if(maxTValue - minTValue > 20)
|
|||
|
|
minTValue = maxTValue - 20;
|
|||
|
|
maxTValue++
|
|||
|
|
if ( maxTemp < parseFloat(currentTemperature) )
|
|||
|
|
{
|
|||
|
|
maxTemp = parseFloat(currentTemperature)
|
|||
|
|
}
|
|||
|
|
console.info("currentStepIndex:",currentStepIndex,"currentTemperature:" + currentTemperature,"targetTemperature:" + targetTemperature)
|
|||
|
|
if (currentStepIndex >= 0)
|
|||
|
|
{
|
|||
|
|
if(stepModel.get(currentStepIndex)._state == "2")
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
aw_Digital.push(info)
|
|||
|
|
runStep()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if(id == stepIncId && isStart)
|
|||
|
|
{
|
|||
|
|
if(tipText.visible)
|
|||
|
|
{
|
|||
|
|
var a_Digital = common.getG("A_Digital")
|
|||
|
|
var x_value = (a_Digital && a_Digital.x_Avalue !== undefined) ? a_Digital.x_Avalue : ""
|
|||
|
|
var y_value = (a_Digital && a_Digital.y_Avalue !== undefined) ? a_Digital.y_Avalue : ""
|
|||
|
|
var z_value = (a_Digital && a_Digital.z_Avalue !== undefined) ? a_Digital.z_Avalue : ""
|
|||
|
|
var x_temp = (a_Digital && a_Digital.x_Atemp !== undefined) ? a_Digital.x_Atemp : ""
|
|||
|
|
var y_temp = (a_Digital && a_Digital.y_Atemp !== undefined) ? a_Digital.y_Atemp : ""
|
|||
|
|
var z_temp = (a_Digital && a_Digital.z_Atemp !== undefined) ? a_Digital.z_Atemp : ""
|
|||
|
|
var templateName = "MWD.xlsx"
|
|||
|
|
calibrate.setAValue(firstPath + appPath + "/template/" + templateName,{"ax": x_value, "ay": y_value, "az": z_value, "tx": x_temp, "ty": y_temp, "tz": z_temp})
|
|||
|
|
var data = calibrate.getMWD(firstPath + appPath + "/template/" + templateName)
|
|||
|
|
g_inc = parseFloat(data.inc).toFixed(2) + "°"
|
|||
|
|
g_gtf = parseFloat(data.gtf).toFixed(2) + "°"
|
|||
|
|
runIncStep()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function writeACsv(num)
|
|||
|
|
{
|
|||
|
|
// 创建CSV表头
|
|||
|
|
const header = "X轴加表输出,X轴加表温度,Y轴加表输出,Y轴加表温度,Z轴加表输出,Z轴加表温度\n";
|
|||
|
|
var csvData = header;
|
|||
|
|
var filename = 'A_' + g_sn +'-'+num+ "_" + Qt.formatDateTime(new Date(startTime), "yyyy_MM_dd_hh_mm_ss") + '.csv';
|
|||
|
|
// 遍历aw_Digital数组,将每条结果写入CSV文件
|
|||
|
|
for(var i = 0; i < aw_Digital.length; i++)
|
|||
|
|
{
|
|||
|
|
csvData += aw_Digital[i].x_Avalue +","+aw_Digital[i].x_Atemp+","+aw_Digital[i].y_Avalue+","+aw_Digital[i].y_Atemp+","+aw_Digital[i].z_Avalue+","+aw_Digital[i].z_Atemp+'\n';
|
|||
|
|
}
|
|||
|
|
save_csv(filename, csvData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|