From c7ec831768073846de70195e150a422589890ae3 Mon Sep 17 00:00:00 2001 From: liuwu <975499773@qq.com> Date: Fri, 27 Oct 2023 09:13:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=8F=AD=E6=AC=A1=E9=A5=B2?= =?UTF-8?q?=E5=96=82=E5=AE=8C=E6=88=90led=E6=98=BE=E7=A4=BA=E9=A5=B2?= =?UTF-8?q?=E5=96=82=E5=AE=8C=E6=88=90=E4=B8=8D=E5=88=B7=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=8C=E9=97=B4=E9=9A=94=E4=B8=A4=E7=A7=92=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=81=9C=E6=AD=A2=E8=9C=82=E9=B8=A3=EF=BC=8C=E9=87=8D?= =?UTF-8?q?=E9=87=8F=E7=A8=B3=E5=AE=9A=E8=B7=B3=E6=96=99=EF=BC=8C=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E4=B8=A4=E7=A7=8D=E5=8D=8F=E8=AE=AE=E7=A7=B0=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9led=E4=B8=89=E4=B8=A2=E4=B8=80=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A8=B3=E5=AE=9A40=E5=8C=85=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/index1.html | 5 +- script/ble.js | 123 +++++++++++++++++++++++++++++++++------------ script/electric.js | 2 + script/index.js | 64 +++++++++++++++++++++-- 4 files changed, 155 insertions(+), 39 deletions(-) diff --git a/html/index1.html b/html/index1.html index 35bae74..4e14ffa 100644 --- a/html/index1.html +++ b/html/index1.html @@ -584,9 +584,8 @@ function getDateStr(date) { } // 初始化当前车次饲料信息 function initOne(param) { - if (sid) { - document.getElementById('submitData').setAttribute("class", 'btnc mui-btn-success'); - } + document.getElementById('submitData').setAttribute("class", 'btnc mui-btn-success'); + feedStatus = true api.ajax({ url: 'https://tmr.nxcyx.com/api/app/tmr/planDay', headers: { diff --git a/script/ble.js b/script/ble.js index bceebb0..4ce7c72 100644 --- a/script/ble.js +++ b/script/ble.js @@ -163,38 +163,63 @@ var msgLed = ''; var msgChan = ''; var msgVoice = ''; var sendStatus = true; +var msgList = []; var timerLed = null; -clearInterval(timerLed) -timerLed = setInterval(function(){ - if (sendStatus && connetcedStatus && peripheralUUID && serviceUUID && characteristicUUID) { - sendStatus = false; +clearInterval(timerssss) +var timerssss = setInterval(function(){ + // console.log(new Date().getSeconds()+ ' ' + new Date().getMilliseconds() +' ' + msgList.length) + if (msgList.length > 0) { + // 发送报文 + var msg = msgList[0]; + msgList.splice(0, 1); var param1 = { peripheralUUID: peripheralUUID, serviceUUID: serviceUUID, characteristicUUID: characteristicUUID, - value: msgLed + value: msg }; - // console.log("msgLed"+new Date().getMilliseconds()) - writeValueForCharacteristic(param1, function (ret) {}); - setTimeout(function () { - param1.value = msgVoice - // console.log("msgVoice"+new Date().getMilliseconds()) - writeValueForCharacteristic(param1, function (ret) {}); - setTimeout(function () { - param1.value = msgChan - // console.log("msgChan"+new Date().getMilliseconds()) - writeValueForCharacteristic(param1, function (ret) {}); - setTimeout(function () { - // console.log("sendStatus"+new Date().getMilliseconds()) - sendStatus = true - }, 30); - }, 50); - }, 50); + if(connetcedStatus && peripheralUUID && serviceUUID && characteristicUUID){ + writeValueForCharacteristic(param1, function (ret) { + // console.log(ret.status) + }); + } + } },150) +// clearInterval(timerLed) +// timerLed = setInterval(function(){ +// if (sendStatus && connetcedStatus && peripheralUUID && serviceUUID && characteristicUUID) { +// sendStatus = false; +// var param1 = { +// peripheralUUID: peripheralUUID, +// serviceUUID: serviceUUID, +// characteristicUUID: characteristicUUID, +// value: msgLed +// }; +// // console.log("msgLed"+new Date().getMilliseconds()) +// writeValueForCharacteristic(param1, function (ret) {}); +// setTimeout(function () { +// param1.value = msgVoice +// // console.log("msgVoice"+new Date().getMilliseconds()) +// writeValueForCharacteristic(param1, function (ret) {}); +// setTimeout(function () { +// param1.value = msgChan +// // console.log("msgChan"+new Date().getMilliseconds()) +// writeValueForCharacteristic(param1, function (ret) {}); +// setTimeout(function () { +// // console.log("sendStatus"+new Date().getMilliseconds()) +// sendStatus = true +// }, 30); +// }, 50); +// }, 50); +// } +// },150) + +var bleConunt=0; + function discoverService(param) { ble.discoverService(param, function (ret) { if (ret.services.length > 0) { @@ -214,6 +239,9 @@ function discoverService(param) { serviceUUID: ret4, characteristicUUID: ret5 }, function (ret6) { + if(!feedStatus){ + return false + } if (ret6 !== undefined) { if (isNaN(ret6)) { return false @@ -264,13 +292,15 @@ function discoverService(param) { } var ration = feedErr / count; // console.log("ration" + ration.toFixed(2)); - if (ration > 0.2 ) { - if (statusEle) { - console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum); + if (ration > 0.2) { + bleConunt ++; + if (statusEle || (bleConunt >= 10)===true) { + console.log("停止蜂鸣"+statusEle+' '+(bleConunt)); + bleConunt=0; ledStatus = false; status = ''; statusEle = false; - console.log("停止蜂鸣"); + msgList = []; control("00", "00"); setTimeout(function () { ledStatus = true; @@ -284,6 +314,7 @@ function discoverService(param) { ledStatus = false; status = '间隔'; statusEle = true; + msgList = []; console.log("开始蜂鸣" + time); control("60", time); setTimeout(function () { @@ -298,6 +329,7 @@ function discoverService(param) { ledStatus = false; status = '间隔'; statusEle = true; + msgList = []; console.log("开始蜂鸣" + time); control("60", time); setTimeout(function () { @@ -312,6 +344,7 @@ function discoverService(param) { ledStatus = false; status = '间隔'; statusEle = true; + msgList = []; console.log("开始蜂鸣" + time); control("60", time); setTimeout(function () { @@ -324,6 +357,7 @@ function discoverService(param) { ledStatus = false; status = '长鸣'; statusEle = true; + msgList = []; console.log("开始长鸣"); control("40", "02"); setTimeout(function () { @@ -341,9 +375,9 @@ function discoverService(param) { } if (feedErr <= allow) { var filteredValue = weightDataFilter.filter(nowWeight); - if (weightDataFilter.dataBuffer.length === 80) { + if (weightDataFilter.dataBuffer.length == 40) { console.log("重量稳定", currTimeFn(new Date())); - weightDataFilter.dataBuffer = []; + weightDataFilter.dataBuffer = [] document.getElementById('submitData').click(); } } @@ -377,13 +411,36 @@ function discoverCharacteristics(param, callback) { }); } +function StringToNum(hexx){ + var hex = hexx.toString(); //force conversion + var str = ''; + var num = ''; + for (var i = 0; i < hex.length; i += 2) { + num = String.fromCharCode(parseInt(hex.substr(i, 2), 16)); + if((num >= '0' && num <= '9') || (num == '-')) + { + str += num; + } + else + { + if(str.length != 0) + { + return str + } + } + }return str; +} + function setNotify(param, callback) { ble.setNotify(param, function (ret) { // console.log(JSON.stringify(ret)) var value = ret.characteristic.value; - if (ret && value.indexOf('ff01') !== -1) { - var wei = value.substr(12, 12); - wei = Math.round(Number(hex2a(wei))); + // if (ret && value.indexOf('ff01') !== -1) { + if (ret && value.substr(0,4) === 'ff01') { + var wei = value.substr(8, value.length-8); + // var wei = value.substr(12, 12); + // wei = Math.round(Number(hex2a(wei))); + wei = Math.round(Number(StringToNum(wei))); } callback(wei); }); @@ -452,8 +509,8 @@ function getMess(param, callback) { var num = str.length / 2; param.value = "FF0500" + num.toString(16) + str; count ++; - if (count >= 5){ - // msgList.push(param.value); + if (count >= 3){ + msgList.push(param.value); msgLed = param.value; // var ms = strToHex(sbId,4)+strToHex(classCode,2)+strToHex(trainNumber,2)+strToHex(feedIndex,2)+strToHex(_planSum,4)+strToHex(_feedNum,4)+strToHex(nowWeight,4); // var num1 = ms.length / 2; @@ -491,7 +548,7 @@ function initWeight() { modal: true }); weightStatus = true; - weightDataFilter = new WeightDataFilter(80, _weightSum); + weightDataFilter = new WeightDataFilter(40, _weightSum); renderUnload(); renderLoad(); feedMyChart.setOption({ diff --git a/script/electric.js b/script/electric.js index 5739d30..9384896 100644 --- a/script/electric.js +++ b/script/electric.js @@ -53,4 +53,6 @@ var lastMsg = ''; function control(status, time) { var msg = "FFFF000D" + getControlCmd(status, time); msgVoice = msg; + msgList=[] + msgList.push(msg); } diff --git a/script/index.js b/script/index.js index 0b58bd5..b501708 100644 --- a/script/index.js +++ b/script/index.js @@ -81,8 +81,64 @@ function submitData() { trainIndex = trainIndex + 1; // 没有下一个车次,饲喂完成 if (trainIndex > trainArr.length - 1) { - mui.toast('本班次饲喂完成'); + // mui.alert("本班次饲喂完成"); + feedStatus = false + _feedNum = batchName+'次饲喂完成' + renderUnload(); + renderLoad(); + feedMyChart.setOption({ + dataset: { + source: [[1, _feedNum]] + } + }); + weightMyChart.setOption({ + dataset: { + source: [[1, nowWeight]] + } + }); + var param1 = { + SF: "AA A5 ", + LEN: '1A 00 ', + DES: 'FF FF ', + SRC: '12 34 ', + TID: 'B0 A1 ', + CMD1: '38 02 ', + X: '00 00 ', + Y: '00 00 ', + WIDTH: '40 00 ', + HEIGHT: '20 00 ', + FORMAT: '00 00 01 00 ', + CNT: '04 00 ', + CRC: '00 00 ', + EF: '5A 55 ', + msg: '' + }; + // param1.msg = batchName+'饲喂完成' + var newmsg = batchName+'次'; + var msglen = newmsg.getByteLen(); + var ttr = ''; + if (msglen < 8) { + for (var i = 0; i < 8 - msglen; i++) { + newmsg = newmsg + ' '; + } + newmsg = newmsg + ttr; + } else { + newmsg = feedName + ttr; + } + param1.msg = newmsg + '饲喂完成'; + + zfk.getMsg(param1, function (ret, err) { + var str = ret.sendMsg; + str = str.replace(/\s+/g, ""); + var num = str.length / 2; + param.value = "FF0500" + num.toString(16) + str; + msgList.push(param.value); + }) document.getElementById('submitData').setAttribute("class", 'btnc mui-btn-success dis'); + setTimeout(function(){ + console.log("停止蜂鸣"); + control("00", "00"); + },500) return false; } // 自动点击下一车,并定位,同时刷新下一个开始装料时间 @@ -143,6 +199,7 @@ var serviceUUID = ''; var characteristicUUID = ''; var lastTime = ""; var time = ""; +var feedStatus = false; var connetcedStatus = false; @@ -363,8 +420,9 @@ function renderItemFeed(params, api) { } function makeTextFeed(valOnRadian) { - // if (load) { - if (Math.abs(_planSum - _feedNum) >= 0) { + if (isNaN(_feedNum )) { + return batchName + '次' + '\n' + '饲喂完成' + }else if (Math.abs(_planSum - _feedNum) >= 0) { // return '剩余应装\n' + valOnRadian.toFixed(1) + 'kg'; return feedName + '\n' + echartsType + Math.abs(_planSum - _feedNum).toFixed(0) + 'kg'; } else {