import QtQuick import QtQuick.Layouts import QtQuick.Controls import "./app.js" as App Item { id: root property var appId: App.appId property var plusFile: App.plusFile property var g_user: "" property var g_settingLocation: "北京" property var g_settingCompany: "北京XXX科技有限公司" property var g_settingSummary: "系统初始化测试描述" property var appPath: "/"+plusFile+"/"+appId+"/" property var firstPath: "" property var startDate: new Date() property var startTime: startDate.getTime() property var endTime: startTime property var g_PowerStat: [] property var g_VoltageThreshold: [] property var g_CurrentThreshold: [] property var g_settingGrafanaHost: "" property var g_settingGrafanaPort: "" property var g_settingGrafanaToken: "" property var g_settingGrafanaDashboards: "" property var g_settingGrafanaDashboardsUrl: "" property var g_stopTime: null property var instructionMap: {} signal sig_readRegisterFinished() Component.onCompleted: { firstPath = common.firstPath() g_user = common.getCurrentUser() common.initAppScript(appId, "gamma", "gamma.py", plusFile) taskActuatorManager.executeFinished.connect(onExecuteFinished) setConfigInfo() updateGrafana() } onVisibleChanged: { if(visible) { g_user = common.getCurrentUser() } } TabBar { id: bar width: parent.width/2 anchors.top: parent.top currentIndex: 0 TabButton { text: qsTr("数据采集") font.pixelSize: 16 font.family: "微软雅黑" } TabButton { text: qsTr("数据分析") font.pixelSize: 16 font.family: "微软雅黑" } TabButton { text: qsTr("历史数据") font.pixelSize: 16 font.family: "微软雅黑" } TabButton { text: qsTr("系统设置") font.pixelSize: 16 font.family: "微软雅黑" } } StackLayout { id: layout anchors.top: bar.bottom anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right currentIndex: bar.currentIndex DataGather {} DataAnalysis {} DataHistory {} SettingView{} } ListModel{ id: funcModel // ListElement{name:"采集数据";deviceName:"";deviceId:"";interfaceName:"";interfaceId:"";instructionName:"";instructionId:"";interfaceIndex:""} // ListElement{name:"读取寄存器";deviceName:"";deviceId:"";interfaceName:"";interfaceId:"";instructionName:"";instructionId:"";interfaceIndex:""} // ListElement{name:"写入寄存器";deviceName:"";deviceId:"";interfaceName:"";interfaceId:"";instructionName:"";instructionId:"";interfaceIndex:""} } ListModel{ id: table_set_model ListElement{name:"第1路"; v1:"0"; v2:"30000"; v3:"350"; v4:""} ListElement{name:"第2路"; v1:"0"; v2:"30000"; v3:"350"; v4:""} ListElement{name:"第3路"; v1:"0"; v2:"30000"; v3:"350"; v4:""} ListElement{name:"第4路"; v1:"0"; v2:"30000"; v3:"350"; v4:""} ListElement{name:"第5路"; v1:"0"; v2:"30000"; v3:"350"; v4:""} ListElement{name:"第6路"; v1:"0"; v2:"30000"; v3:"350"; v4:""} ListElement{name:"第7路"; v1:"0"; v2:"30000"; v3:"350"; v4:""} ListElement{name:"第8路"; v1:"0"; v2:"30000"; v3:"350"; v4:""} } function getFuncInstance(instructionName) { var funcInstance = {} for(var i = 0; i < funcModel.count; i++) { if(funcModel.get(i).name == instructionName) { funcInstance = funcModel.get(i) break } } return funcInstance } function setConfigInfo() { var config = common.getConfig(); var grafanaInfo = config.grafana g_settingGrafanaHost = grafanaInfo.host g_settingGrafanaPort = grafanaInfo.port g_settingGrafanaToken = "Bearer " + grafanaInfo.token g_settingGrafanaDashboards = grafanaInfo.dashboards console.info("g_settingGrafanaHost:" + g_settingGrafanaHost) console.info("g_settingGrafanaPort:" + g_settingGrafanaPort) console.info("g_settingGrafanaToken:" + g_settingGrafanaToken) console.info("g_settingGrafanaDashboards:" + g_settingGrafanaDashboards) } function save_json(fileName, jsonObj) { gamma.setJson(firstPath + appPath + fileName, jsonObj) } function get_json(fileName) { return gamma.getJson(firstPath + appPath + fileName) } function executeVirtualTask(taskName, instructionNames) { var taskInfo = { "id": taskName, "name": taskName, "type": 1, } var instructions = [] for(var i = 0; i < instructionNames.length; i++) { var funcInstance = getFuncInstance(instructionNames[i]) instructions.push({ "id": instructionNames[i] + funcInstance.instructionId, // 无意义,避免重复 "target_id": funcInstance.instructionId, "device_id": funcInstance.deviceId, "task_id" : taskInfo.task_id, "interface_index": funcInstance.interfaceIndex, "target_type": "instruction", "delay": 0, "loop": 1, "target_param": "" }) } taskActuatorManager.startVirtual(taskInfo, instructions) } function execute(instructionName, param={}) { var funcInstance = getFuncInstance(instructionName) var attr = { "deviceId": funcInstance.deviceId, "param": JSON.stringify(param), "interfaceIndex": funcInstance.interfaceIndex } taskActuatorManager.startInstruction(funcInstance.instructionId, attr) } function onExecuteFinished(id) { var funcInstance = getFuncInstance("读取寄存器") if (id == funcInstance.instructionId) { sig_readRegisterFinished() } } function makeTestInfo() { var testInfo = {} var tdCount = 0 for(var i = 0; i < g_PowerStat.length; i++) { if(g_PowerStat[i] == "1") tdCount++ } testInfo.startTime = startTime.toString() testInfo.endTime = endTime.toString() testInfo.user = g_user testInfo.csvFile = "" testInfo.settingLocation = g_settingLocation testInfo.settingCompany = g_settingCompany testInfo.settingSummary = g_settingSummary testInfo.tdCount = tdCount testInfo.PowerStat = JSON.stringify(g_PowerStat) testInfo.VoltageThreshold = JSON.stringify(g_VoltageThreshold) testInfo.CurrentThreshold = JSON.stringify(g_CurrentThreshold) var SNs = [] for(var i = 0; i < table_set_model.count; i++) { SNs.push(table_set_model.get(i).v4) } testInfo.SNs = JSON.stringify(SNs) var historyInfo = {} var jsonObj = get_json("history.json") if(jsonObj != undefined) historyInfo = jsonObj historyInfo[startTime] = testInfo save_json("history.json", historyInfo) } // 更新Grafana bucket function updateGrafana() { var url = "http://" + g_settingGrafanaHost + ":" + g_settingGrafanaPort var data = gamma.get_dashboard_uid(url,g_settingGrafanaToken,g_settingGrafanaDashboards) if(data) { if (data.length == 1) { var uid = data[0].uid g_settingGrafanaDashboardsUrl = data[0].url console.info("g_settingGrafanaDashboardsUrl: " + g_settingGrafanaDashboardsUrl) gamma.update_dashboard_data(uid,url,g_settingGrafanaToken) } } } // 更新Grafana Time function updateGrafanaTime(start, stop) { var url = "http://" + g_settingGrafanaHost + ":" + g_settingGrafanaPort var data = gamma.get_dashboard_uid(url,g_settingGrafanaToken,g_settingGrafanaDashboards) if(data) { if (data.length == 1) { var uid = data[0].uid g_settingGrafanaDashboardsUrl = data[0].url gamma.update_dashboard_time(uid, url,g_settingGrafanaToken,start, stop) } } } }