修改样式,小于100的饲料不点击校准不自动跳转,班次完成一直显示饲喂完成,车内总重量实时显示,led屏幕一直显示班次完成

This commit is contained in:
liuwu 2023-11-01 10:48:09 +08:00
parent 03cfb549bb
commit ab1b5f183e
3 changed files with 178 additions and 135 deletions

View File

@ -496,10 +496,6 @@ function getDateStr(date) {
console.log('蓝牙'+JSON.stringify(items[0])); console.log('蓝牙'+JSON.stringify(items[0]));
showBlePickerButton.innerHTML = items[0].text; showBlePickerButton.innerHTML = items[0].text;
uuid = items[0].value uuid = items[0].value
api.setPrefs({
key: 'uuid',
value: uuid
});
connect({peripheralUUID: items[0].value}); connect({peripheralUUID: items[0].value});
}); });
}, false); }, false);
@ -621,7 +617,7 @@ function getDateStr(date) {
var json = [].concat(_toConsumableArray(e.feedJson), _toConsumableArray(e.cowshedJson)); var json = [].concat(_toConsumableArray(e.feedJson), _toConsumableArray(e.cowshedJson));
feedList = json; feedList = json;
json.forEach(function (j, index) { json.forEach(function (j, index) {
if (index == 0) { if (index === 0) {
html += '<span id="feed_' + index + '" class="mui-badge mui-badge-purple" style="font-size: xx-large;font-weight: 900;">' + UNICODE_CHARS[index + 1] + j.name + ':' + Number(j.weight).toFixed(0) + '</span>'; html += '<span id="feed_' + index + '" class="mui-badge mui-badge-purple" style="font-size: xx-large;font-weight: 900;">' + UNICODE_CHARS[index + 1] + j.name + ':' + Number(j.weight).toFixed(0) + '</span>';
} else { } else {
html += '<span id="feed_' + index + '" class="mui-badge" style="font-size: xx-large;font-weight: 900;">' + UNICODE_CHARS[index + 1] + j.name + ':' + Number(j.weight).toFixed(0) + '</span>'; html += '<span id="feed_' + index + '" class="mui-badge" style="font-size: xx-large;font-weight: 900;">' + UNICODE_CHARS[index + 1] + j.name + ':' + Number(j.weight).toFixed(0) + '</span>';
@ -641,6 +637,7 @@ function getDateStr(date) {
allow = json[0].allow; allow = json[0].allow;
// 计划 // 计划
_planSum = json[0].weight.toFixed(0); _planSum = json[0].weight.toFixed(0);
allowAuto = _planSum >= 100;
document.getElementById('feedNum').innerHTML = '<font style="color:blue">:' + _planSum + '</font>/<font style="color:green">已装:' + _feedNum + '</font>'; document.getElementById('feedNum').innerHTML = '<font style="color:blue">:' + _planSum + '</font>/<font style="color:green">已装:' + _feedNum + '</font>';
text = feedName + _planSum; text = feedName + _planSum;
batchName = e.className + e.trainNumber; batchName = e.className + e.trainNumber;

View File

@ -116,6 +116,11 @@ function connect(param) {
ble.connect(param, function (ret, err) { ble.connect(param, function (ret, err) {
if (ret.status) { if (ret.status) {
connetcedStatus = true connetcedStatus = true
// 缓存蓝牙设备uuid方便自动连接
api.setPrefs({
key: 'uuid',
value: param.peripheralUUID
});
wifiDom.innerHTML = '已连接'; wifiDom.innerHTML = '已连接';
connectTimes = 0; connectTimes = 0;
document.getElementById('text').innerHTML = '设备已连接'; document.getElementById('text').innerHTML = '设备已连接';
@ -192,6 +197,8 @@ var timerMsgList = setInterval(function(){
},150) },150)
// 未装料状态计数采集达到10次发送一次停止蜂鸣指令 // 未装料状态计数采集达到10次发送一次停止蜂鸣指令
var bleConunt=0; var bleConunt=0;
// 默认不自动跳转
var allowAuto = false;
/*扫描蓝牙服务*/ /*扫描蓝牙服务*/
function discoverService(param) { function discoverService(param) {
ble.discoverService(param, function (ret) { ble.discoverService(param, function (ret) {
@ -214,36 +221,34 @@ function discoverService(param) {
serviceUUID: ret4, serviceUUID: ret4,
characteristicUUID: ret5 characteristicUUID: ret5
}, function (ret6) { }, function (ret6) {
if(!feedStatus){
return false
}
if (ret6 !== undefined) { if (ret6 !== undefined) {
if (isNaN(ret6)) { if (isNaN(ret6)) {
return false return false
} }
nowWeight = ret6; nowWeight = ret6;
// console.log(ret6) // 装料状态
if (first) { if(feedStatus){
first = false; if (first) {
beforeWeight = nowWeight; first = false;
} beforeWeight = nowWeight;
if (load) { }
_feedNum = nowWeight - beforeWeight; if (load) {
} else { _feedNum = nowWeight - beforeWeight;
_feedNum = beforeWeight - nowWeight; } else {
} _feedNum = beforeWeight - nowWeight;
text = feedName + _planSum; }
if (!isNaN(nowWeight)) { text = feedName + _planSum;
// 实时重量保存 if (!isNaN(nowWeight)) {
totalList.push({ // 实时重量保存
time: currTimeFn(new Date()), totalList.push({
nowWeight: nowWeight time: currTimeFn(new Date()),
}); nowWeight: nowWeight
});
}
document.getElementById('feedNum').innerHTML = '<font style="color:blue">:' + _planSum + '</font>/<font style="color:green">已装:' + _feedNum + '</font>';
} }
serviceUUID = ret4; serviceUUID = ret4;
characteristicUUID = ret5; characteristicUUID = ret5;
// console.log(_feedNum,_weightSum,_planSum);
document.getElementById('feedNum').innerHTML = '<font style="color:blue">:' + _planSum + '</font>/<font style="color:green">已装:' + _feedNum + '</font>';
// 组装led报文 // 组装led报文
if (ledStatus && !isNaN(nowWeight)) { if (ledStatus && !isNaN(nowWeight)) {
getMess({ getMess({
@ -252,114 +257,117 @@ function discoverService(param) {
characteristicUUID: ret5, characteristicUUID: ret5,
value: ret6 value: ret6
}, function (ret7) { }, function (ret7) {
// console.log(JSON.stringify(ret7))
}); });
} }
// 计划-饲喂 // 装料状态
var feedErr = _planSum-_feedNum; if(feedStatus){
if (isNaN(feedErr)) { // 计划-饲喂
return false var feedErr = _planSum-_feedNum;
} if (isNaN(feedErr)) {
// 蜂鸣器校验基础值大于500的饲料取500为标准 return false
var count;
if (_planSum >= 500) {
count = 500
} else {
count = _planSum
}
// 计算饲料装料量与基础值的误差比例
var ration = feedErr / count;
// console.log("ration" + ration.toFixed(2));
// 误差分为100%-20%(停止蜂鸣)10%-20%(间隔05)5%-10%(间隔03),2%-5%(间隔01),-100%-2%(长鸣)
if (ration > 0.2) {
bleConunt ++;
if (statusEle || (bleConunt >= 10)) {
bleConunt=0;
ledStatus = false;
status = '';
statusEle = false;
msgList = [];
control("00", "00");
setTimeout(function () {
ledStatus = true;
}, 500);
} }
} else if (0.1 < ration && ration <= 0.2) { // 蜂鸣器校验基础值大于500的饲料取500为标准
time = "05"; var count;
if (!statusEle || lastTime !== time) { if (_planSum >= 500) {
console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum); count = 500
lastTime = time; } else {
ledStatus = false; count = _planSum
status = '间隔';
statusEle = true;
msgList = [];
console.log("开始蜂鸣" + time);
control("60", time);
setTimeout(function () {
ledStatus = true;
}, 500);
} }
} else if (0.05 < ration && ration <= 0.1) { // 计算饲料装料量与基础值的误差比例
time = "03"; var ration = feedErr / count;
if (!statusEle || lastTime !== time) { // console.log("ration" + ration.toFixed(2));
console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum); // 误差分为100%-20%(停止蜂鸣)10%-20%(间隔05)5%-10%(间隔03),2%-5%(间隔01),-100%-2%(长鸣)
lastTime = time; if (ration > 0.2) {
ledStatus = false; bleConunt ++;
status = '间隔'; if (statusEle || (bleConunt >= 10)) {
statusEle = true; bleConunt=0;
msgList = []; ledStatus = false;
console.log("开始蜂鸣" + time); status = '';
control("60", time); statusEle = false;
setTimeout(function () { msgList = [];
ledStatus = true; control("00", "00");
}, 500); setTimeout(function () {
}
} else if (0.02 < ration && ration <= 0.05) {
time = "01";
if (!statusEle || lastTime !== time) {
console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum);
lastTime = time;
ledStatus = false;
status = '间隔';
statusEle = true;
msgList = [];
console.log("开始蜂鸣" + time);
control("60", time);
setTimeout(function () {
ledStatus = true;
}, 500);
}
} else {
if (status === '间隔' || status === '') {
console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum);
ledStatus = false;
status = '长鸣';
statusEle = true;
msgList = [];
console.log("开始长鸣");
control("40", "02");
setTimeout(function () {
ledStatus = true;
}, 500);
setTimeout(function() {
console.log("开始长鸣")
control("40", "02");
setTimeout(function() {
ledStatus = true; ledStatus = true;
}, 500);
}
} else if (0.1 < ration && ration <= 0.2) {
time = "05";
if (!statusEle || lastTime !== time) {
console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum);
lastTime = time;
ledStatus = false;
status = '间隔';
statusEle = true;
msgList = [];
console.log("开始蜂鸣" + time);
control("60", time);
setTimeout(function () {
ledStatus = true;
}, 500);
}
} else if (0.05 < ration && ration <= 0.1) {
time = "03";
if (!statusEle || lastTime !== time) {
console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum);
lastTime = time;
ledStatus = false;
status = '间隔';
statusEle = true;
msgList = [];
console.log("开始蜂鸣" + time);
control("60", time);
setTimeout(function () {
ledStatus = true;
}, 500);
}
} else if (0.02 < ration && ration <= 0.05) {
time = "01";
if (!statusEle || lastTime !== time) {
console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum);
lastTime = time;
ledStatus = false;
status = '间隔';
statusEle = true;
msgList = [];
console.log("开始蜂鸣" + time);
control("60", time);
setTimeout(function () {
ledStatus = true;
}, 500);
}
} else {
if (status === '间隔' || status === '') {
console.log(feedErr + ' ' + allow + ' ' + _feedNum + ' ' + _planSum);
ledStatus = false;
status = '长鸣';
statusEle = true;
msgList = [];
console.log("开始长鸣");
control("40", "02");
setTimeout(function () {
ledStatus = true;
}, 500);
setTimeout(function() {
console.log("开始长鸣")
control("40", "02");
setTimeout(function() {
ledStatus = true;
}, 500)
}, 500) }, 500)
}, 500) }
} }
} // console.log(weightStabilization("weightStabilization"+nowWeight))
// 在误差范围内 // 在误差范围内
if (feedErr <= allow) { if (feedErr <= allow && allowAuto) {
// 重量稳定计数 // 重量稳定计数
var filteredValue = weightDataFilter.filter(nowWeight); var filteredValue = weightDataFilter.filter(nowWeight);
// 重量稳定自动跳转 // 重量稳定自动跳转
if (weightDataFilter.dataBuffer.length === 40) { if (weightDataFilter.dataBuffer.length === 40) {
console.log("重量稳定", currTimeFn(new Date())); console.log("重量稳定", currTimeFn(new Date()));
weightDataFilter.dataBuffer = [] weightDataFilter.dataBuffer = []
document.getElementById('submitData').click(); document.getElementById('submitData').click();
}
} }
} }
} }
@ -483,7 +491,23 @@ function getMess(param, callback) {
} else { } else {
newmsg = feedName + ttr; newmsg = feedName + ttr;
} }
param1.msg = newmsg + Math.abs(Number(_planSum - _feedNum)).toFixed(0) + 'kg'; // 不是装料状态班次饲喂完成显示
if(!feedStatus){
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 + '饲喂完成';
}else{
param1.msg = newmsg + Math.abs(Number(_planSum - _feedNum)).toFixed(0) + 'kg';
}
// param1.msg = newmsg + Math.abs(Number(param.value)).toFixed(0) + 'kg' // param1.msg = newmsg + Math.abs(Number(param.value)).toFixed(0) + 'kg'
// console.log(param1.msg) // console.log(param1.msg)
//组装字符卡LED报文 //组装字符卡LED报文
@ -499,13 +523,16 @@ function getMess(param, callback) {
// var ms = strToHex(sbId,4)+strToHex(classCode,2)+strToHex(trainNumber,2)+strToHex(feedIndex,2)+strToHex(_planSum,4)+strToHex(_feedNum,4)+strToHex(nowWeight,4); // 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; // var num1 = ms.length / 2;
// 同步刷新图表 // 同步刷新图表
renderUnload(); // 饲喂状态刷新实时状态,否则不刷新装料信息
if(feedStatus){
renderUnload();
feedMyChart.setOption({
dataset: {
source: [[1, _feedNum]]
}
});
}
renderLoad(); renderLoad();
feedMyChart.setOption({
dataset: {
source: [[1, _feedNum]]
}
});
weightMyChart.setOption({ weightMyChart.setOption({
dataset: { dataset: {
source: [[1, nowWeight]] source: [[1, nowWeight]]
@ -559,3 +586,20 @@ function initWeight() {
document.getElementById('text').innerHTML = 'V' + api.appVersion; document.getElementById('text').innerHTML = 'V' + api.appVersion;
api.setGlobalData({key: 'startTime', value: currTimeFn(new Date())}); api.setGlobalData({key: 'startTime', value: currTimeFn(new Date())});
} }
var lastWeight = 0;
function weightStabilization(weight) {
// 计算当前重量与上一次记录的重量之间的差值
var diff = weight - lastWeight;
// 如果差值在一定范围内,则认为重量是稳定的
if (Math.abs(diff) < 2) {
weight = weight;
lastWeight = weight;
return true;
} else {
// 如果差值超过一定范围,则认为重量是不稳定的,重新开始计算
weight = 0;
lastWeight = weight;
return false;
}
}

View File

@ -172,6 +172,8 @@ function submitData() {
document.querySelector('#feed_' + feedIndex).scrollIntoView(true); document.querySelector('#feed_' + feedIndex).scrollIntoView(true);
allow = feedList[feedIndex].allow; allow = feedList[feedIndex].allow;
_planSum = feedList[feedIndex].weight.toFixed(0); _planSum = feedList[feedIndex].weight.toFixed(0);
// 误差小于100必须校准才能自动跳转
allowAuto = _planSum >= 100;
text = feedName + _planSum; text = feedName + _planSum;
document.getElementById('nowFeed').innerHTML = '<font style="color:blue;margin-left:10px;">' + batchName + ',' + feedName + '</font>'; document.getElementById('nowFeed').innerHTML = '<font style="color:blue;margin-left:10px;">' + batchName + ',' + feedName + '</font>';
ledStatus = false; ledStatus = false;