123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890 |
- 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 <root.count && ret === true)
- testStop()
- //选择阀门 开启
- choosevalve.menuEnable = true
- }
- }
- Timer{
- id:stopTimer
- repeat: false
- interval: 500
- onTriggered: {
- // ModbusJs.closeAllValve(controlSerial)
- testStop()
- }
- }
- function testStop(){
- SaveValveTestJs.exit = true
- processWindow.exit()
- reuslt.visible = true
- startStopButton.running = false
- }
- Connections{
- target: reportButton
- onUserClicked:{
- var tab = tabview1.getTab(0)
- var axisxMin = 0;var axisyMin = 0; var axisyMax=500;
- tab = tabview1.getTab(0)
- reportPicture0.generateTabPicture(tab,0,axisxMin,axisyMin,axisyMax)
- groupbox.pointList0 = reportPicture0.pointList;
- tab = tabview1.getTab(1)
- reportPicture1.generateTabPicture(tab,1,axisxMin,axisyMin,axisyMax)
- groupbox.pointList1 = reportPicture1.pointList;
- tab = tabview1.getTab(2)
- reportPicture2.generateTabPicture(tab,2,axisxMin,axisyMin,axisyMax)
- groupbox.pointList2 = reportPicture2.pointList;
- tab = tabview1.getTab(3)
- reportPicture3.generateTabPicture(tab,3,axisxMin,axisyMin,axisyMax)
- groupbox.pointList3 = reportPicture3.pointList;
- tab = tabview1.getTab(4)
- reportPicture4.generateTabPicture(tab,4,axisxMin,axisyMin,axisyMax)
- groupbox.pointList4 = reportPicture4.pointList;
- tab = tabview1.getTab(5)
- reportPicture5.generateTabPicture(tab,5,axisxMin,axisyMin,axisyMax)
- groupbox.pointList5 = reportPicture5.pointList;
- var fileName = root.manufacture+"_"+root.type+"_"+root.serialNumber+"_"+root.carplate
- var text = getWordSaveFileName(fileName)
- saveWordDialog.currentFile = getWordSaveFileName(text)
- saveWordDialog.open()
- }
- }
- FileDialog {
- id: saveWordDialog
- title: "保存为"
- nameFilters: [ "Word files (*.doc)"]
- fileMode: FileDialog.SaveFile
- onAccepted: {
- var savePath = file.toString().substring(8)
- // reportWord.generate(savePath,"安全阀","浙江嘉隆机械设备有限公司","XH001","BH001","浙江中石油有限公司","浙A55555",groupbox.pointList0)
- //reportWord.generate(savePath,"安全阀",root.manufacture,
- //// root.type,root.serialNumber,root.user,root.carplate,root.state,SaveValveTestJs.setPressure,
- //groupbox.pointList0,groupbox.pointList1,groupbox.pointList2,groupbox.pointList3,groupbox.pointList4,groupbox.pointList5)
- var obj={}
- obj.pointList0 = groupbox.pointList0
- obj.pointList1 = groupbox.pointList1
- obj.pointList2 = groupbox.pointList2
- obj.pointList3 = groupbox.pointList3
- obj.pointList4 = groupbox.pointList4
- obj.pointList5 = groupbox.pointList5
- obj.manufacture = root.manufacture
- obj.type = root.type
- obj.serialNumber = root.serialNumber
- obj.user = root.user
- obj.carplate = root.carplate
- obj.state = root.state
- obj.setPressure = SaveValveTestJs.setPressure+"kPa"
- obj.valve="安全阀"
- // resultSetPressure1.paraResult="90"
- // resultSealPressure1.paraResult="80"
- obj.resultSetPressure1 = resultSetPressure1.paraResult
- obj.resultSetPressure2 = resultSetPressure2.paraResult
- obj.resultSetPressure3 = resultSetPressure3.paraResult
- obj.resultSealPressure1 = resultSealPressure1.paraResult
- obj.resultSealPressure2 = resultSealPressure2.paraResult
- obj.resultSealPressure3 = resultSealPressure3.paraResult
- reportWord.generateWord(savePath,obj)
- // reportWord.generate(savePath, "安全阀", "浙江嘉隆机械设备有限公司", "XH001", "BH001", "浙江中石油有限公司",
- // "浙A55555", "在用阀", "100",
- // groupbox.pointList0, groupbox.pointList0, groupbox.pointList0, groupbox.pointList0,groupbox.pointList0,groupbox.pointList0)
- }
- }
- function show(){
- animationShow.running = true
- }
- function exit(){
- animationExit.running = true
- startStopButton.running = false
- stopTimer.start()
- }
- //加载任务动画效果
- NumberAnimation {
- id: animationShow
- target: groupbox
- property: "x"
- from: groupbox.x
- to: 0
- duration: 500
- }
- NumberAnimation {
- id: animationExit
- target: groupbox
- property: "x"
- from: groupbox.x
- to: 1024
- duration: 500
- }
- Column{
- anchors.left: parent.left
- anchors.leftMargin: 6
- anchors.top: parent.top
- anchors.topMargin: 10
- spacing: 0
- Rectangle{
- width: 980
- height: 70+30
- color: "white"
- radius: 6
- Row{
- spacing: 10
- Item {
- width: 815+15
- height: 70+30
- Column{
- anchors.left: parent.left
- anchors.leftMargin: 10
- anchors.top: parent.top
- anchors.topMargin: 10
- spacing: 4
- Row{
- spacing: 10
- InputLine{
- id:manufactureInputLine
- paraName: "制造单位:"
- paraLength: 180
- onTextChanged: {
- root.manufacture = text
- }
- }
- InputLine{
- id:typeInputLine
- paraName: "型号:"
- paraLength: 130
- validator:RegExpValidator {
- regExp: /[0-9a-zA-Z.-]*/
- }
- onTextChanged: {
- root.type = text
- }
- }
- InputLine{
- id:serialNumberInputLine
- paraName: "编号:"
- paraLength: 139
- validator:RegExpValidator {
- regExp: /[0-9a-zA-Z.-]*/
- }
- onTextChanged: {
- root.serialNumber = text
- }
- }
- InputLine{
- id:openPressureTimeMaxInputLine
- paraName: "整定计时:"
- paraLength: 40
- text: SaveValveTestJs.openPressureTimeMax
- validator:RegExpValidator {
- regExp: /[0-9]*/
- }
- inputMethodHints: Qt.ImhDigitsOnly
- onTextChanged: {
- SaveValveTestJs.openPressureTimeMax = Number(text)
- console.log("openPressureTimeMax:",SaveValveTestJs.openPressureTimeMax)
- if(Number(text) >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<max; i++){
- var number= Math.round(Math.random()*100)
- //number *= 10
- var obj={}
- obj.pressure=number
- modelData.append(obj)
- }
- }
- TabView {
- id:tabview1
- width: record.tableWidth
- height: 265-25
- GraphButton{
- id:graphButton
- x:890
- y:-25
- width: 48
- height: 24
- onUserClicked: {
- var tab = tabview1.getTab(tabview1.currentIndex)
- var axisxMax = tab.item.modelData.count
- generateCurve.show(0,axisxMax,0,500,tab.item.modelData,tab.title,"横轴时间(秒) 纵轴压力(kPa)")
- }
- }
- Tab {
- title: "第一次整定记录"
- active: true
- RecordTable{
- // Component.onCompleted: {
- // record.dataRandomSet(modelData,20)
- // }
- }
- }
- Tab {
- active: true
- title: "第二次整定记录"
- RecordTable{
- Component.onCompleted: {
- // record.dataRandomSet(modelData,20)
- }
- }
- }
- Tab {
- active: true
- title: "第三次整定记录"
- RecordTable{
- Component.onCompleted: {
- // record.dataRandomSet(modelData,20)
- }
- }
- }
- Tab {
- active: true
- title: "第一次密封记录"
- RecordTable{
- // Component.onCompleted: {
- // record.dataRandomSet(modelData,20)
- // }
- }
- }
- Tab {
- active: true
- title: "第二次密封记录"
- RecordTable{
- // Component.onCompleted: {
- // //record.dataRandomSet(modelData,20)
- // }
- }
- }
- Tab {
- active: true
- title: "第三次密封记录"
- RecordTable{
- // Component.onCompleted: {
- // // record.dataRandomSet(modelData,20)
- // }
- }
- }
- }
- }
- }
- InputPanel {
- id: inputPanel
- visible: window.virtualkeyboard
- z: 99
- x: -10
- y: window.height
- width: window.width
- onActiveChanged: {
- if(!active)
- {
- manufactureInputLine.textFocus = false
- typeInputLine.textFocus = false
- serialNumberInputLine.textFocus = false
- userInputLine.textFocus = false
- carplateInputLine.textFocus = false
- pressureInputline.textFocus = false
- sealPressureTimemaxInputLine.textFocus = false
- openPressureTimeMaxInputLine.textFocus = false
- }
- }
- states:
- State {
- name: "visible"
- when: inputPanel.active
- PropertyChanges {
- target: inputPanel
- y: window.height/2
- }
- }
- transitions: Transition {
- from: ""
- to: "visible"
- reversible: true
- ParallelAnimation {
- NumberAnimation {
- properties: "y"
- duration: 250
- easing.type: Easing.InOutQuad
- }
- }
- }
- Component.onCompleted: {
- VirtualKeyboardSettings.styleName = "retro"
- VirtualKeyboardSettings.activeLocales=["en_GB","zh_CN"]
- VirtualKeyboardSettings.locale = "en_GB";//"fi_FI";
- }
- }
- }
- }
- }
|