import QtQuick 2.11 import QtQuick.Layouts 1.3 import QtQuick.Controls 2.14 import QtQuick.Controls.Styles 1.2 import TService 1.0 Item { id: root property var pagetype:rootitem.Page_Type_Testing property string title_str:"PID 参数整定" property var volume: [0,0,0,0,0] property var keeptime: [0,0,0,0,0] property var outermax: [0.0, 0.0, 0.0, 0.0, 0.0] property var outermini: [0.0, 0.0, 0.0, 0.0, 0.0] property var outerKp: [0.0, 0.0, 0.0, 0.0, 0.0] property var outerKi: [0.0, 0.0, 0.0, 0.0, 0.0] property var outerKd: [0.0, 0.0, 0.0, 0.0, 0.0] property var innermax: [0.0, 0.0, 0.0, 0.0, 0.0] property var innermini: [0.0, 0.0, 0.0, 0.0, 0.0] property var innerKp: [0.0, 0.0, 0.0, 0.0, 0.0] property var innerKi: [0.0, 0.0, 0.0, 0.0, 0.0] property var innerKd: [0.0, 0.0, 0.0, 0.0, 0.0] property var innermaxI: [0.0, 0.0, 0.0, 0.0, 0.0] property var innermaxIstep: [0.0, 0.0, 0.0, 0.0, 0.0] property var innermaxDstep: [0.0, 0.0, 0.0, 0.0, 0.0] function set_paras(){ var Jsonobj={} var itemArrayJson=[] for(var i = 0; i<5; i++){ if(volume[i] > 0){ var item={} item.max_volume = volume[i] item.keep_time = keeptime[i] item.outermax = outermax[i] item.outermin = outermini[i] item.outerkp = outerKp[i] item.outerki = outerKi[i] item.outerkd = outerKd[i] item.innermax = innermax[i] item.innermin =innermini[i] item.innerkp = innerKp[i] item.innerki = innerKi[i] item.innerkd = innerKd[i] item.innermaxI = innermaxI[i] item.innerIstep = innermaxIstep[i] item.innerDstep = innermaxDstep[i] itemArrayJson[i] = item } } Jsonobj.pids = itemArrayJson CalibrationPara.set_paras(JSON.stringify(Jsonobj) ); } function update_paras(index, item){ if(index === 0){ volume1.text = item.max_volume keep1.text = item.keep_time outmax1.text = item.outermax outmini1.text = item.outermin outp1.text = item.outerkp outi1.text = item.outerki outd1.text = item.outerkd inmax1.text = item.innermax inmini1.text = item.innermin inp1.text = item.innerkp ini1.text = item.innerki ind1.text = item.innerkd inmaxI1.text = item.innermaxI inmaxIstep1.text = item.innerIstep inmaxDstep1.text = item.innerDstep }else if(index === 1){ volume2.text = item.max_volume keep2.text = item.keep_time outmax2.text = item.outermax outmini2.text = item.outermin outp2.text = item.outerkp outi2.text = item.outerki outd2.text = item.outerkd inmax2.text = item.innermax inmini2.text = item.innermin inp2.text = item.innerkp ini2.text = item.innerki ind2.text = item.innerkd inmaxI2.text = item.innermaxI inmaxIstep2.text = item.innerIstep inmaxDstep2.text = item.innerDstep }else if(index === 2){ volume3.text = item.max_volume keep3.text = item.keep_time outmax3.text = item.outermax outmini3.text = item.outermin outp3.text = item.outerkp outi3.text = item.outerki outd3.text = item.outerkd inmax3.text = item.innermax inmini3.text = item.innermin inp3.text = item.innerkp ini3.text = item.innerki ind3.text = item.innerkd inmaxI3.text = item.innermaxI inmaxIstep3.text = item.innerIstep inmaxDstep3.text = item.innerDstep }else if(index === 3){ volume4.text = item.max_volume keep4.text = item.keep_time outmax4.text = item.outermax outmini4.text = item.outermin outp4.text = item.outerkp outi4.text = item.outerki outd4.text = item.outerkd inmax4.text = item.innermax inmini4.text = item.innermin inp4.text = item.innerkp ini4.text = item.innerki ind4.text = item.innerkd inmaxI4.text = item.innermaxI inmaxIstep4.text = item.innerIstep inmaxDstep4.text = item.innerDstep }else if(index === 4){ volume5.text = item.max_volume keep5.text = item.keep_time outmax5.text = item.outermax outmini5.text = item.outermin outp5.text = item.outerkp outi5.text = item.outerki outd5.text = item.outerkd inmax5.text = item.innermax inmini5.text = item.innermin inp5.text = item.innerkp ini5.text = item.innerki ind5.text = item.innerkd inmaxI5.text = item.innermaxI inmaxIstep5.text = item.innerIstep inmaxDstep5.text = item.innerDstep } } function clear_paras(index){ if(index === 0){ volume1.text = 0 keep1.text = 0 outmax1.text = 0 outmini1.text = 0 outp1.text = 0 outi1.text = 0 outd1.text = 0 inmax1.text = 0 inmini1.text = 0 inp1.text = 0 ini1.text = 0 ind1.text = 0 inmaxI1.text = 0 inmaxIstep1.text = 0 inmaxDstep1.text = 0 }else if(index === 1){ volume2.text = 0 keep2.text = 0 outmax2.text = 0 outmini2.text = 0 outp2.text = 0 outi2.text = 0 outd2.text = 0 inmax2.text = 0 inmini2.text = 0 inp2.text = 0 ini2.text = 0 ind2.text = 0 inmaxI2.text = 0 inmaxIstep2.text = 0 inmaxDstep2.text = 0 }else if(index === 2){ volume3.text = 0 keep3.text = 0 outmax3.text = 0 outmini3.text = 0 outp3.text = 0 outi3.text = 0 outd3.text = 0 inmax3.text = 0 inmini3.text = 0 inp3.text = 0 ini3.text = 0 ind3.text = 0 inmaxI3.text = 0 inmaxIstep3.text = 0 inmaxDstep3.text = 0 }else if(index === 3){ volume4.text = 0 keep4.text = 0 outmax4.text = 0 outmini4.text = 0 outp4.text = 0 outi4.text = 0 outd4.text = 0 inmax4.text = 0 inmini4.text = 0 inp4.text = 0 ini4.text = 0 ind4.text = 0 inmaxI4.text = 0 inmaxIstep4.text = 0 inmaxDstep4.text = 0 }else if(index === 4){ volume5.text = 0 keep5.text = 0 outmax5.text = 0 outmini5.text = 0 outp5.text = 0 outi5.text = 0 outd5.text = 0 inmax5.text = 0 inmini5.text = 0 inp5.text = 0 ini5.text = 0 ind5.text = 0 inmaxI5.text = 0 inmaxIstep5.text = 0 inmaxDstep5.text = 0 } } function update_detail(){ var jsonobj = CalibrationPara.get_paras(); for(var i=0; i<5; i++){ clear_paras(i) } for(var index= 0; index< jsonobj.count; index++){ update_paras(index, jsonobj.pids[index]) } } DynamicGroupBox{ id:groupbox anchors.centerIn: parent anchors.fill: parent title: title_str Column{ //spacing:10 anchors.centerIn: parent width: 1200 Row{ width: parent.width height: 120 spacing: 50 Text { text: "1区参数 "; font.bold: true; font.pointSize: 12; } Column{ //spacing:10 Row{ spacing:10 InputLine{ id:volume1 paraName: "容积≤(L): " paraLength: 80 onTextChanged: { volume[0] = Number(text) } } InputLine{ id:keep1 paraName: "保持时间(秒): " paraLength: 80 onTextChanged: { keeptime[0] = Number(text) } } } Row{ //spacing:10 Text { text: "外环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:outmax1 paraName: "Max:" paraLength: 60 onTextChanged: { outermax[0] = Number(text) } } InputLine{ id:outmini1 paraName: "Mini:" paraLength: 60 onTextChanged: { outermini[0] = Number(text) } } InputLine{ id:outp1 paraName: "Kp:" paraLength: 60 onTextChanged: { outerKp[0] = Number(text) } } InputLine{ id:outi1 paraName: "Ki:" paraLength: 60 onTextChanged: { outerKi[0] = Number(text) } } InputLine{ id:outd1 paraName: "Kd:" paraLength: 60 onTextChanged: { outerKd[0] = Number(text) } } } Row{ //spacing:10 Text { text: "内环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:inmax1 paraName: "Max:" paraLength: 60 onTextChanged: { innermax[0] = Number(text) } } InputLine{ id:inmini1 paraName: "Mini:" paraLength: 60 onTextChanged: { innermini[0] = Number(text) } } InputLine{ id:inp1 paraName: "Kp:" paraLength: 60 onTextChanged: { innerKp[0] = Number(text) } } InputLine{ id:ini1 paraName: "Ki:" paraLength: 60 onTextChanged: { innerKi[0] = Number(text) } } InputLine{ id:ind1 paraName: "Kd:" paraLength: 60 onTextChanged: { innerKd[0] = Number(text) } } InputLine{ id:inmaxI1 paraName: "maxI:" paraLength: 60 onTextChanged: { innermaxI[0] = Number(text) } } InputLine{ id:inmaxIstep1 paraName: "maxIstep:" paraLength: 60 onTextChanged: { innermaxIstep[0] = Number(text) } } InputLine{ id:inmaxDstep1 paraName: "maxDstep:" paraLength: 60 onTextChanged: { innermaxDstep[0] = Number(text) } } } } } Row{ width: parent.width height: 120 spacing: 50 Text { text: "2区参数 "; font.bold: true; font.pointSize: 12; } Column{ //spacing:10 Row{ spacing:10 InputLine{ id:volume2 paraName: "容积≤(L): " paraLength: 80 onTextChanged: { volume[1] = Number(text) } } InputLine{ id:keep2 paraName: "保持时间(秒): " paraLength: 80 onTextChanged: { keeptime[1] = Number(text) } } } Row{ //spacing:30 Text { text: "外环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:outmax2 paraName: "Max:" paraLength: 60 onTextChanged: { outermax[1] = Number(text) } } InputLine{ id:outmini2 paraName: "Mini:" paraLength: 60 onTextChanged: { outermini[1] = Number(text) } } InputLine{ id:outp2 paraName: "Kp:" paraLength: 60 onTextChanged: { outerKp[1] = Number(text) } } InputLine{ id:outi2 paraName: "Ki:" paraLength: 60 onTextChanged: { outerKi[1] = Number(text) } } InputLine{ id:outd2 paraName: "Kd:" paraLength: 60 onTextChanged: { outerKd[1] = Number(text) } } } Row{ //spacing:30 Text { text: "内环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:inmax2 paraName: "Max:" paraLength: 60 onTextChanged: { innermax[1] = Number(text) } } InputLine{ id:inmini2 paraName: "Mini:" paraLength: 60 onTextChanged: { innermini[1] = Number(text) } } InputLine{ id:inp2 paraName: "Kp:" paraLength: 60 onTextChanged: { innerKp[1] = Number(text) } } InputLine{ id:ini2 paraName: "Ki:" paraLength: 60 onTextChanged: { innerKi[1] = Number(text) } } InputLine{ id:ind2 paraName: "Kd:" paraLength: 60 onTextChanged: { innerKd[1] = Number(text) } } InputLine{ id:inmaxI2 paraName: "maxI:" paraLength: 60 onTextChanged: { innermaxI[1] = Number(text) } } InputLine{ id:inmaxIstep2 paraName: "maxIstep:" paraLength: 60 onTextChanged: { innermaxIstep[1] = Number(text) } } InputLine{ id:inmaxDstep2 paraName: "maxDstep:" paraLength: 60 onTextChanged: { innermaxDstep[1] = Number(text) } } } } } Row{ width: parent.width height: 120 spacing: 50 Text { text: "3区参数 "; font.bold: true; font.pointSize: 12; } Column{ //spacing:10 Row{ spacing:10 InputLine{ id:volume3 paraName: "容积≤(L): " paraLength: 80 onTextChanged: { volume[2] = Number(text) } } InputLine{ id:keep3 paraName: "保持时间(秒): " paraLength: 80 onTextChanged: { keeptime[2] = Number(text) } } } Row{ //spacing:30 Text { text: "外环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:outmax3 paraName: "Max:" paraLength: 60 onTextChanged: { outermax[2] = Number(text) } } InputLine{ id:outmini3 paraName: "Mini:" paraLength: 60 onTextChanged: { outermini[2] = Number(text) } } InputLine{ id:outp3 paraName: "Kp:" paraLength: 60 onTextChanged: { outerKp[2] = Number(text) } } InputLine{ id:outi3 paraName: "Ki:" paraLength: 60 onTextChanged: { outerKi[2] = Number(text) } } InputLine{ id:outd3 paraName: "Kd:" paraLength: 60 onTextChanged: { outerKd[2] = Number(text) } } } Row{ //spacing:30 Text { text: "内环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:inmax3 paraName: "Max:" paraLength: 60 onTextChanged: { innermax[2] = Number(text) } } InputLine{ id:inmini3 paraName: "Mini:" paraLength: 60 onTextChanged: { innermini[2] = Number(text) } } InputLine{ id:inp3 paraName: "Kp:" paraLength: 60 onTextChanged: { innerKp[2] = Number(text) } } InputLine{ id:ini3 paraName: "Ki:" paraLength: 60 onTextChanged: { innerKi[2] = Number(text) } } InputLine{ id:ind3 paraName: "Kd:" paraLength: 60 onTextChanged: { innerKd[2] = Number(text) } } InputLine{ id:inmaxI3 paraName: "maxI:" paraLength: 60 onTextChanged: { innermaxI[2] = Number(text) } } InputLine{ id:inmaxIstep3 paraName: "maxIstep:" paraLength: 60 onTextChanged: { innermaxIstep[2] = Number(text) } } InputLine{ id:inmaxDstep3 paraName: "maxDstep:" paraLength: 60 onTextChanged: { innermaxDstep[2] = Number(text) } } } } } Row{ width: parent.width height: 120 spacing: 50 Text { text: "4区参数 "; font.bold: true; font.pointSize: 12; } Column{ //spacing:10 Row{ spacing:10 InputLine{ id:volume4 paraName: "容积≤(L): " paraLength: 80 onTextChanged: { volume[3] = Number(text) } } InputLine{ id:keep4 paraName: "保持时间(秒): " paraLength: 80 onTextChanged: { keeptime[3] = Number(text) } } } Row{ //spacing:30 Text { text: "外环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:outmax4 paraName: "Max:" paraLength: 60 onTextChanged: { outermax[3] = Number(text) } } InputLine{ id:outmini4 paraName: "Mini:" paraLength: 60 onTextChanged: { outermini[3] = Number(text) } } InputLine{ id:outp4 paraName: "Kp:" paraLength: 60 onTextChanged: { outerKp[3] = Number(text) } } InputLine{ id:outi4 paraName: "Ki:" paraLength: 60 onTextChanged: { outerKi[3] = Number(text) } } InputLine{ id:outd4 paraName: "Kd:" paraLength: 60 onTextChanged: { outerKd[3] = Number(text) } } } Row{ //spacing:30 Text { text: "内环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:inmax4 paraName: "Max:" paraLength: 60 onTextChanged: { innermax[3] = Number(text) } } InputLine{ id:inmini4 paraName: "Mini:" paraLength: 60 onTextChanged: { innermini[3] = Number(text) } } InputLine{ id:inp4 paraName: "Kp:" paraLength: 60 onTextChanged: { innerKp[3] = Number(text) } } InputLine{ id:ini4 paraName: "Ki:" paraLength: 60 onTextChanged: { innerKi[3] = Number(text) } } InputLine{ id:ind4 paraName: "Kd:" paraLength: 60 onTextChanged: { innerKd[3] = Number(text) } } InputLine{ id:inmaxI4 paraName: "maxI:" paraLength: 60 onTextChanged: { innermaxI[3] = Number(text) } } InputLine{ id:inmaxIstep4 paraName: "maxIstep:" paraLength: 60 onTextChanged: { innermaxIstep[3] = Number(text) } } InputLine{ id:inmaxDstep4 paraName: "maxDstep:" paraLength: 60 onTextChanged: { innermaxDstep[3] = Number(text) } } } } } Row{ width: parent.width height: 120 spacing: 50 Text { text: "5区参数 "; font.bold: true; font.pointSize: 12; } Column{ //spacing:10 Row{ spacing:10 InputLine{ id:volume5 paraName: "容积≤(L): " paraLength: 80 onTextChanged: { volume[4] = Number(text) } } InputLine{ id:keep5 paraName: "保持时间(秒): " paraLength: 80 onTextChanged: { keeptime[4] = Number(text) } } } Row{ //spacing:30 Text { text: "外环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:outmax5 paraName: "Max:" paraLength: 60 onTextChanged: { outermax[4] = Number(text) } } InputLine{ id:outmini5 paraName: "Mini:" paraLength: 60 onTextChanged: { outermini[4] = Number(text) } } InputLine{ id:outp5 paraName: "Kp:" paraLength: 60 onTextChanged: { outerKp[4] = Number(text) } } InputLine{ id:outi5 paraName: "Ki:" paraLength: 60 onTextChanged: { outerKi[4] = Number(text) } } InputLine{ id:outd5 paraName: "Kd:" paraLength: 60 onTextChanged: { outerKd[4] = Number(text) } } } Row{ //spacing:30 Text { text: "内环:"; font.bold: true; font.pointSize: 12; } InputLine{ id:inmax5 paraName: "Max:" paraLength: 60 onTextChanged: { innermax[4] = Number(text) } } InputLine{ id:inmini5 paraName: "Mini:" paraLength: 60 onTextChanged: { innermini[4] = Number(text) } } InputLine{ id:inp5 paraName: "Kp:" paraLength: 60 onTextChanged: { innerKp[4] = Number(text) } } InputLine{ id:ini5 paraName: "Ki:" paraLength: 60 onTextChanged: { innerKi[4] = Number(text) } } InputLine{ id:ind5 paraName: "Kd:" paraLength: 60 onTextChanged: { innerKd[4] = Number(text) } } InputLine{ id:inmaxI5 paraName: "maxI:" paraLength: 60 onTextChanged: { innermaxI[4] = Number(text) } } InputLine{ id:inmaxIstep5 paraName: "maxIstep:" paraLength: 60 onTextChanged: { innermaxIstep[4] = Number(text) } } InputLine{ id:inmaxDstep5 paraName: "maxDstep:" paraLength: 60 onTextChanged: { innermaxDstep[4] = Number(text) } } } } } Row{ spacing:30 UserButton { id: refresh_button; text: "刷新"; font.pixelSize: 20 anchors.verticalCenter: parent.verticalCenter width: 120 height: 45 onClicked: { update_detail() } } UserButton { id: save_button; text: "保存"; font.pixelSize: 20 anchors.verticalCenter: parent.verticalCenter width: 120 height: 45 onClicked: { set_paras() } } } } } Component.onCompleted: { update_detail() } }