341 lines
13 KiB
QML
341 lines
13 KiB
QML
|
|
import QtQuick
|
|||
|
|
import QtQuick.Controls
|
|||
|
|
import QtQuick.Layouts
|
|||
|
|
import "./common"
|
|||
|
|
Item {
|
|||
|
|
id: self
|
|||
|
|
property var currentStepIndex: -1
|
|||
|
|
property var currentIndex: 0
|
|||
|
|
property var isStart: curTaskIndex == 0
|
|||
|
|
property var stepInstructId: ""
|
|||
|
|
property var progress: stepModel.count > 0 ? (currentIndex / (stepModel.count)) : 0.0
|
|||
|
|
property var imageNames: ["1-1", "1-2", "1-3","1-4","2-1", "2-2", "2-3","2-4","3-1", "3-2", "3-3","3-4"]
|
|||
|
|
property var imageTexts: ["东北上", "东上南", "东南下","东下北","北上东", "上南东", "南下东","下北东","上东北", "南东上", "下东南","北东下"]
|
|||
|
|
property var lstDetialTexts: ["X [东] Y [北] Z [上]","X [东] Y [上] Z [南]","X [东] Y [南] Z [下]","X [东] Y [下] Z [北]","X [北] Y [上] Z [东]","X [上] Y [南] Z [东]","X [南] Y [下] Z [东]","X [下] Y [北] Z [东]","X [上] Y [东] Z [北]","X [南] Y [东] Z [上]","X [下] Y [ 东] Z [南]","X [北] Y [东] Z [下]"]
|
|||
|
|
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: ""}
|
|||
|
|
ListElement{name:"方位3标定"; tips: "请放置到3方位"; _state: "0"; src: "./step3.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位4标定"; tips: "请放置到4方位"; _state: "0"; src: "./step4.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位5标定"; tips: "请放置到5方位"; _state: "0"; src: "./step5.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位6标定"; tips: "请放置到6方位"; _state: "0"; src: "./step6.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位7标定"; tips: "请放置到7方位"; _state: "0"; src: "./step7.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位8标定"; tips: "请放置到8方位"; _state: "0"; src: "./step8.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位9标定"; tips: "请放置到9方位"; _state: "0"; src: "./step9.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位10标定"; tips: "请放置到10方位"; _state: "0"; src: "./step10.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位11标定"; tips: "请放置到11方位"; _state: "0"; src: "./step11.png"; endTime: ""}
|
|||
|
|
ListElement{name:"方位12标定"; tips: "请放置到12方位"; _state: "0"; src: "./step12.png"; endTime: ""}
|
|||
|
|
}
|
|||
|
|
Component.onCompleted: {
|
|||
|
|
stopBd.connect(onStopBd)
|
|||
|
|
taskActuatorManager.executeFinished.connect(onExecuteFinished)
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
onIsStartChanged: {
|
|||
|
|
if (isStart) {
|
|||
|
|
startSteps()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// 生成数组
|
|||
|
|
function fillDetialTexts() {
|
|||
|
|
for (var i = 0; i < imageTexts.length; ++i) {
|
|||
|
|
var directions = imageTexts[i].split('');
|
|||
|
|
var detialText = "X [" + directions[0] + "] Y [" + directions[1] + "] Z [" + directions[2] + "]";
|
|||
|
|
lstDetialTexts.push(detialText);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function startSteps()
|
|||
|
|
{
|
|||
|
|
clearSteps()
|
|||
|
|
task1State = "1"
|
|||
|
|
currentStepIndex = 0
|
|||
|
|
a_Digital = []
|
|||
|
|
taskModel.get(curTaskIndex).state = task1State
|
|||
|
|
tipText.visible = true
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
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
|
|||
|
|
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.right: parent.right
|
|||
|
|
anchors.rightMargin: 49
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Rectangle{
|
|||
|
|
id: stepText
|
|||
|
|
anchors.left: stepLst.right
|
|||
|
|
anchors.leftMargin: 10
|
|||
|
|
anchors.right: parent.right
|
|||
|
|
anchors.top: stepLst.top
|
|||
|
|
anchors.bottom: stepLst.bottom
|
|||
|
|
radius: 9
|
|||
|
|
Image{
|
|||
|
|
anchors.left: parent.left
|
|||
|
|
anchors.leftMargin: 23
|
|||
|
|
anchors.right: parent.right
|
|||
|
|
anchors.rightMargin: 23
|
|||
|
|
anchors.top: parent.top
|
|||
|
|
anchors.topMargin: 24
|
|||
|
|
anchors.bottom: parent.bottom
|
|||
|
|
anchors.bottomMargin: 24
|
|||
|
|
source: currentStepIndex > -1 ? "./resource/step1/"+ imageNames[currentStepIndex]+".JPG" : "./resource/step1/default.jpg"
|
|||
|
|
QxText{
|
|||
|
|
text: currentStepIndex > -1 ? imageTexts[currentStepIndex] : ""
|
|||
|
|
anchors.top: parent.top
|
|||
|
|
anchors.right: parent.right
|
|||
|
|
anchors.rightMargin: 20
|
|||
|
|
anchors.topMargin: 20
|
|||
|
|
font.pixelSize: 25
|
|||
|
|
font.bold: true
|
|||
|
|
color: "#007EFF"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Rectangle{
|
|||
|
|
id: tipText
|
|||
|
|
width: 315
|
|||
|
|
height: 170
|
|||
|
|
radius: 19
|
|||
|
|
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: "请放置到" + imageNames[currentStepIndex] + " " + imageTexts[currentStepIndex] + "方位"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
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()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
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})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function onStopBd(){
|
|||
|
|
if(isStart)
|
|||
|
|
{
|
|||
|
|
stopExecute(stepInstructId)
|
|||
|
|
clearSteps()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function onExecuteFinished(id)
|
|||
|
|
{
|
|||
|
|
if(id == stepInstructId && isStart)
|
|||
|
|
{
|
|||
|
|
a_Digital.push(common.getG("A_Digital"))
|
|||
|
|
stepModel.get(currentStepIndex)._state = "2"
|
|||
|
|
stepModel.get(currentStepIndex).endTime = Qt.formatDateTime(new Date(), "MM-dd hh:mm:ss")
|
|||
|
|
if(currentStepIndex < stepModel.count-1)
|
|||
|
|
{
|
|||
|
|
tipText.visible = true
|
|||
|
|
currentStepIndex++
|
|||
|
|
currentIndex++
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
writeACsv()
|
|||
|
|
updateDxlsx()
|
|||
|
|
exportFormula()
|
|||
|
|
task1State = "2"
|
|||
|
|
currentIndex = stepModel.count
|
|||
|
|
currentStepIndex = -1
|
|||
|
|
taskModel.get(curTaskIndex).state = task1State
|
|||
|
|
reportJson["a_Digital"] = a_Digital
|
|||
|
|
save_json("a_Digital.json", {"infos":a_Digital})
|
|||
|
|
runNextStep()
|
|||
|
|
skLayout.currentIndex = curTaskIndex
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function exportFormula()
|
|||
|
|
{
|
|||
|
|
var ax_values = []
|
|||
|
|
var ay_values = []
|
|||
|
|
var az_values = []
|
|||
|
|
|
|||
|
|
for(var i = 0; i < a_Digital.length; i++)
|
|||
|
|
{
|
|||
|
|
var ax_value = !!a_Digital[i].x_Avalue ? parseFloat(a_Digital[i].x_Avalue) : 0
|
|||
|
|
var ay_value = !!a_Digital[i].y_Avalue ? parseFloat(a_Digital[i].y_Avalue) : 0
|
|||
|
|
var az_value = !!a_Digital[i].z_Avalue ? parseFloat(a_Digital[i].z_Avalue) : 0
|
|||
|
|
ax_values.push(ax_value)
|
|||
|
|
ay_values.push(ay_value)
|
|||
|
|
az_values.push(az_value)
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
a_seri = [
|
|||
|
|
[
|
|||
|
|
parseFloat((ax_values[4] + ax_values[6] + ax_values[9] + ax_values[11]) /4).toFixed(6),
|
|||
|
|
parseFloat((ay_values[0] + ay_values[2] + ay_values[5] + ay_values[7])/4).toFixed(6),
|
|||
|
|
parseFloat((az_values[1] + az_values[3] + az_values[8] + az_values[10])/4).toFixed(6)
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
parseFloat((ax_values[7] + ax_values[10] - ax_values[5] - ax_values[8]) /4).toFixed(6),
|
|||
|
|
parseFloat((ay_values[3] + ay_values[6] - ay_values[1] - ay_values[4]) /4).toFixed(6),
|
|||
|
|
parseFloat((az_values[2] + az_values[11] - az_values[0] - az_values[9]) /4).toFixed(6)
|
|||
|
|
]
|
|||
|
|
]
|
|||
|
|
var templateName = "MWD.xlsx"
|
|||
|
|
calibrate.setAModel(firstPath + appPath + "/template/" + templateName,a_Digital)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function writeACsv()
|
|||
|
|
{
|
|||
|
|
// 创建CSV表头
|
|||
|
|
const header = "X轴加表输出,X轴加表温度,Y轴加表输出,Y轴加表温度,Z轴加表输出,Z轴加表温度\n";
|
|||
|
|
var csvData = header;
|
|||
|
|
var filename = 'A_' + g_sn + "_" + Qt.formatDateTime(new Date(startTime), "yyyy_MM_dd_hh_mm_ss") + '.csv';
|
|||
|
|
// 遍历a_Digital数组,将每条结果写入CSV文件
|
|||
|
|
for(var i = 0; i < a_Digital.length; i++)
|
|||
|
|
{
|
|||
|
|
csvData += a_Digital[i].x_Avalue +","+a_Digital[i].x_Atemp+","+a_Digital[i].y_Avalue+","+a_Digital[i].y_Atemp+","+a_Digital[i].z_Avalue+","+a_Digital[i].z_Atemp+'\n';
|
|||
|
|
}
|
|||
|
|
save_csv(filename, csvData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function updateDxlsx()
|
|||
|
|
{
|
|||
|
|
var filename = "D_"+g_sn+ "_" + Qt.formatDateTime(new Date(startTime), "yyyy-MM-dd_hh-mm-ss") + ".xlsx"
|
|||
|
|
overwrite_xlsx("template.xlsx", filename, templateStr());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function templateStr()
|
|||
|
|
{
|
|||
|
|
var data_str = ""
|
|||
|
|
var xTempSum = 0
|
|||
|
|
var yTempSum = 0
|
|||
|
|
var zTempSum = 0
|
|||
|
|
var mTempSum = 0
|
|||
|
|
for( var i = 0; i < a_Digital.length; i++)
|
|||
|
|
{
|
|||
|
|
var ax_value = (a_Digital[i] && a_Digital[i].x_Avalue !== undefined) ? a_Digital[i].x_Avalue : ""
|
|||
|
|
var ay_value = (a_Digital[i] && a_Digital[i].y_Avalue !== undefined) ? a_Digital[i].y_Avalue : ""
|
|||
|
|
var az_value = (a_Digital[i] && a_Digital[i].z_Avalue !== undefined) ? a_Digital[i].z_Avalue : ""
|
|||
|
|
var ax_temp = (a_Digital[i] && a_Digital[i].x_Atemp !== undefined) ? a_Digital[i].x_Atemp : ""
|
|||
|
|
var ay_temp = (a_Digital[i] && a_Digital[i].y_Atemp !== undefined) ? a_Digital[i].y_Atemp : ""
|
|||
|
|
var az_temp = (a_Digital[i] && a_Digital[i].z_Atemp !== undefined) ? a_Digital[i].z_Atemp : ""
|
|||
|
|
var mx_value = (m_Digital[i] && m_Digital[i].x_Mvalue !== undefined) ? m_Digital[i].x_Mvalue : ""
|
|||
|
|
var my_value = (m_Digital[i] && m_Digital[i].y_Mvalue !== undefined) ? m_Digital[i].y_Mvalue : ""
|
|||
|
|
var mz_value = (m_Digital[i] && m_Digital[i].z_Mvalue !== undefined) ? m_Digital[i].z_Mvalue : ""
|
|||
|
|
var mtemp = (m_Digital[i] && m_Digital[i].m_temp !== undefined) ? m_Digital[i].m_temp : ""
|
|||
|
|
|
|||
|
|
data_str += ax_value +","+ ay_value+"," + az_value+',';
|
|||
|
|
data_str += mx_value +","+ my_value+","+ mz_value+'\n';
|
|||
|
|
xTempSum += parseFloat(ax_temp)
|
|||
|
|
yTempSum += parseFloat(ay_temp)
|
|||
|
|
zTempSum += parseFloat(az_temp)
|
|||
|
|
mTempSum += parseFloat(mtemp)
|
|||
|
|
}
|
|||
|
|
data_str += (xTempSum/a_Digital.length)+","+(yTempSum/a_Digital.length)+","+(zTempSum/a_Digital.length)+","+(mTempSum/m_Digital.length);
|
|||
|
|
console.info("data_str",data_str)
|
|||
|
|
return data_str;
|
|||
|
|
}
|
|||
|
|
}
|