import QtQuick 2.11 import QtQuick.Controls 1.4 import QtQuick.VirtualKeyboard 2.14 import QtQuick.VirtualKeyboard.Settings 2.14 import QtTest 1.14 import Qt.labs.platform 1.1 import "safeValveTest.js" as SaveValveTestJs import "modbus.js" as ModbusJs Item { id:root property string manufacture property string type property string serialNumber property string user property string carplate property string state property int count:1 Loader{ id:loader anchors.fill: parent anchors.margins: 2 } function show(){ if(loader.sourceComponent === null){ loader.sourceComponent = componet } loader.item.show() } function exit(){ if(loader.sourceComponent !== null){ loader.item.exit() } } Component{ id:componet GroupBox{ id:groupbox x:width title: "安全阀试验" property bool running:startStopButton.running property var pointList:[] property int pressureCnt:0 property var dataArray: [] property var pointList0:[] property var pointList1:[] property var pointList2:[] property var pointList3:[] property var pointList4:[] property var pointList5:[] property var currentIndex :0 signal pressureDisplaySigFun(var pressureNumber) signal resultSigFun(var result) onResultSigFun: { //需要区分第一次 第二次 第三次 switch(groupbox.currentIndex){ case 0: resultSetPressure1.paraResult = result.openPressureNumber resultSealPressure1.paraResult = result.sealPressureNumber break; case 1: resultSetPressure2.paraResult = result.openPressureNumber resultSealPressure2.paraResult = result.sealPressureNumber break; case 2: resultSetPressure3.paraResult = result.openPressureNumber resultSealPressure3.paraResult = result.sealPressureNumber break; } } onPressureDisplaySigFun: { pressureDisplayInput(pressureNumber) } onRunningChanged: { SaveValveTestJs.running = running if(running === true){ startTimer.start() } } //这里需要优化 function pressureDisplayInput(number){ pressureCnt++ if(pressureCnt <= 61){ dataArray.push(number) curveDisplay.spline.append(pressureCnt-1,number) } else{ dataArray.push(number) dataArray.shift() curveDisplay.spline.clear() for(var i=0; i<61; i++){ curveDisplay.spline.append(i,dataArray[i]) } } gauge.value = number } Timer{ id:releaseTimer property bool upflag:false repeat: false interval: 100 onTriggered: { //选择阀门类型 禁用 startStopButton.enabled = false choosevalve.menuEnable = false reuslt.visible = false curveDisplay.spline.clear() groupbox.pressureCnt =0 groupbox.dataArray = [] processWindow.show("检查压力....") SaveValveTestJs.runningBackup = groupbox.running var ret = SaveValveTestJs.valvePressureCheckStop(controlSerial,processWindow,pressureDisplaySigFun,spy,log) //下降 if(upflag === true && ret === true){ processWindow.text("液压升") ModbusJs.hydraulicUpIoCtrl(controlSerial,true) } else if(upflag === false && ret === true){ processWindow.text("液压降") ModbusJs.hydraulicUpIoCtrl(controlSerial,false) } spy.wait(500) testStop() downButton.enabled = true upButton.enabled = true choosevalve.menuEnable = true startStopButton.enabled = true curveDisplay.spline.clear() groupbox.pressureCnt =0 groupbox.dataArray = [] } } Timer{ id:startTimer repeat: false interval: 500 onTriggered: { //选择阀门类型 禁用 choosevalve.menuEnable = false SaveValveTestJs.exit = false console.log("正在自检....") var ret = ModbusJs.checkModebusDevice(controlSerial,sensorSerial,log) if(ret === false){ log.show("自检错误") testStop() choosevalve.menuEnable = true return } console.log("自检正常") reuslt.visible = false curveDisplay.spline.clear() groupbox.pressureCnt =0 groupbox.dataArray = [] groupbox.currentIndex = 0 do{ var tab = tabview1.getTab(groupbox.currentIndex) var tabView = tabview1 var openPressureModel = tab.item.modelData tab = tabview1.getTab(groupbox.currentIndex+3) var sealPressureModel = tab.item.modelData openPressureModel.clear() sealPressureModel.clear() ret = SaveValveTestJs.valveStart(groupbox.currentIndex,tabView,processWindow,controlSerial,sensorSerial, openPressureModel,sealPressureModel, pressureDisplaySigFun,resultSigFun,spy,log) if(ret === false){ processWindow.show("测试退出,泄气中...") SaveValveTestJs.runningBackup = groupbox.running SaveValveTestJs.valveStop(controlSerial,pressureDisplaySigFun,spy,log) } spy.wait(1500) //延时 确认全关继电器 groupbox.currentIndex++ }while(groupbox.currentIndex 180){ text = 180 } } // onTextFocusChanged: { // if(Number(text) >180){ // text = 180 // } // } } UserComboBox{ id:userComboBox anchors.verticalCenter: parent.verticalCenter width: 80 height:25 bgColor:"#D2D5D9" model: ["试验1次","试验2次", "试验3次"] Binding{ target: root property: "count" value: userComboBox.currentIndex+1 } } } Row{ spacing: 10 InputLine{ id:userInputLine paraName: "使用单位:" paraLength: 180 onTextChanged: { root.user = text } } CarPlate{ id:carplateInputLine paraName: "车牌:" paraLength: 130-55 onPlattextChanged: { root.carplate = plattext console.log("SafeValve Carplattext:" + plattext) } } InputLine{ id:pressureInputline paraName: "整定压力(kPa):" paraLength: 77 validator:RegExpValidator { regExp: /[0-9]*/ } text: SaveValveTestJs.setPressure inputMethodHints: Qt.ImhDigitsOnly onTextChanged: { SaveValveTestJs.setPressure = Number(text) } } InputLine{ id:sealPressureTimemaxInputLine paraName: "密封计时:" paraLength: 39 text: SaveValveTestJs.sealPressureTimemax validator:RegExpValidator { regExp: /[0-9]*/ } inputMethodHints: Qt.ImhDigitsOnly onTextChanged: { SaveValveTestJs.sealPressureTimemax = Number(text) console.log("sealPressureTimemax:",SaveValveTestJs.sealPressureTimemax) if(Number(text) >180){ text = 180 } } // onTextFocusChanged: { // if(Number(text) >180){ // text = 180 // } // } } UserComboBox{ id:valveStateComboBox anchors.verticalCenter: parent.verticalCenter width: 80 height:25 bgColor:"#D2D5D9" model: ["在用阀","新阀"] onCurrentTextChanged: { root.state = currentText } } } Row{ spacing: 10 Button{ text: "液压泵开启" width: 100 height: 25 onClicked: { ModbusJs.hydraulicOpenIoCtrl(controlSerial,true) } } Button{ text: "液压泵关闭" width: 100 height: 25 onClicked: { ModbusJs.hydraulicOpenIoCtrl(controlSerial,false) } } Button{ id:upButton text: "液压爪升" width: 100 height: 25 onClicked: { downButton.enabled = false upButton.enabled = false releaseTimer.upflag = true releaseTimer.start() } } Button{ id:downButton text: "液压爪降" width: 100 height: 25 onClicked: { downButton.enabled = false upButton.enabled = false releaseTimer.upflag = false releaseTimer.start() } } } } } Item { width: 150-15 height: 70 Row{ anchors.verticalCenter: parent.verticalCenter spacing: 15 StartStopButton{ id:startStopButton width: 50 height: 50 anchors.verticalCenter: parent.verticalCenter onRunningChanged: { groupbox.running = running } } ReportButton{ id:reportButton width: 50 height: 50 anchors.verticalCenter: parent.verticalCenter } } } } } Row{ x:-10 CurveDisplay{ id:curveDisplay anchors.verticalCenter: parent.verticalCenter width: 450 height: 300 axisxMax:60 axisxMin:0 axisyMax:500 axisyMin:0 name:"高压曲线 单位kPa" } Rectangle{ width: (300-18)*0.75 height: 300-18 color: "white" radius: 6 anchors.verticalCenter: parent.verticalCenter Gauge { id:gauge width: parent.width height: parent.width anchors.centerIn: parent value: 0 maximumValue: 1000 minimumValue: 0 tickmarkStepSize:100 labelStepSize:100 Behavior on value { NumberAnimation { duration: 800 }} } } Item { width: 338 height: 300 anchors.verticalCenter: parent.verticalCenter Rectangle{ id:resultWindow anchors.fill: parent anchors.margins: 10 color: "white" radius: 6 ProcessWindow{ id:processWindow width: 280 height: 50 hideWith:resultWindow.width anchors.centerIn: parent } Item { id:reuslt anchors.fill: parent anchors.margins: 10 property int resultHeight: 25 Column{ anchors.centerIn: parent ResultDisplayText{ width: reuslt.width height: reuslt.resultHeight color: "white" paraName: "整定压力" paraResult:"" paraUnit:"" } ResultDisplayText{ id:resultSetPressure1 width: reuslt.width height: reuslt.resultHeight color: "#D2D5D9" paraName: "第一次:" paraResult:"" paraUnit:"kPa" } ResultDisplayText{ id:resultSetPressure2 width: reuslt.width height: reuslt.resultHeight color: "#DFE2E6" paraName: "第二次:" paraResult:"" paraUnit:"kPa" } ResultDisplayText{ id:resultSetPressure3 width: reuslt.width height: reuslt.resultHeight color: "#D2D5D9" paraName: "第三次:" paraResult:"" paraUnit:"kPa" } ResultDisplayText{ width: reuslt.width height: reuslt.resultHeight color: "white" paraName: "" paraResult:"" paraUnit:"" } ResultDisplayText{ width: reuslt.width height: reuslt.resultHeight color: "white" paraName: "密封压力" paraResult:"" paraUnit:"" } ResultDisplayText{ id:resultSealPressure1 width: reuslt.width height: reuslt.resultHeight color: "#DFE2E6" paraName: "第一次:" paraResult:"" paraUnit:"kPa" } ResultDisplayText{ id:resultSealPressure2 width: reuslt.width height: reuslt.resultHeight color: "#D2D5D9" paraName: "第二次:" paraResult:"" paraUnit:"kPa" } ResultDisplayText{ id:resultSealPressure3 width: reuslt.width height: reuslt.resultHeight color: "#DFE2E6" paraName: "第三次:" paraResult:"" paraUnit:"kPa" } } } } } } Row{ id:record spacing: 10 property int tableWidth:980 function dataRandomSet(modelData,max){ for(var i=0;i