From a8ce1d9680329ca7f4f122a85c53d80ed4bf586d Mon Sep 17 00:00:00 2001 From: liub Date: Fri, 21 Nov 2025 14:18:36 +0800 Subject: [PATCH] =?UTF-8?q?6155=E5=8F=91=E9=80=81=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=96=B9=E4=BE=BF=E9=9A=8F=E6=97=B6?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=88=87=E7=89=87=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 3 +- config/index.js | 2 +- manifest.json | 6 +- pages/6155/deviceDetail.vue | 159 +++++++++++++++++++++--------------- pages/670/HBY670.vue | 42 +++++----- utils/BleHelper.js | 2 +- 6 files changed, 124 insertions(+), 90 deletions(-) diff --git a/App.vue b/App.vue index 022d225..4d86eee 100644 --- a/App.vue +++ b/App.vue @@ -36,6 +36,7 @@ }, onShow: function() { console.log('App Show'); + //将检查更新换到onshow,因为苹果用户喜欢一直挂着 uni.getSystemInfo({ success: function(res) { @@ -46,8 +47,6 @@ console.log("appid=", appid); upgrade.checkAndUpdateWgt(); } - - } } }); diff --git a/config/index.js b/config/index.js index 93e0224..e9edc18 100644 --- a/config/index.js +++ b/config/index.js @@ -2,7 +2,7 @@ const config = { // 开发环境 development: { - BASE_URL: 'https://www.cnxhyc.com/jq', + BASE_URL: 'http://139.224.253.23:8000', API_PREFIX: '', // MQTT 配置 MQTT_HOST: 'www.cnxhyc.com', diff --git a/manifest.json b/manifest.json index a9d9a5c..9058167 100644 --- a/manifest.json +++ b/manifest.json @@ -56,7 +56,8 @@ "" ], "minSdkVersion" : 21, - "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ] + "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ], + "schemes" : "" }, /* ios打包配置 */ "ios" : { @@ -72,7 +73,8 @@ "NSCameraUsageDescription" : "App需要您的同意访问相机,用于上传头像,设备开机画面", "NSMicrophoneUsageDescription" : "App需要您的同意访问麦克风,用于上传语音包" }, - "idfa" : false + "idfa" : false, + "urltypes" : "" }, /* SDK配置 */ "sdkConfigs" : { diff --git a/pages/6155/deviceDetail.vue b/pages/6155/deviceDetail.vue index 6c8b781..a14f4fa 100644 --- a/pages/6155/deviceDetail.vue +++ b/pages/6155/deviceDetail.vue @@ -877,7 +877,7 @@ "clientid": clientid }, formData: { - code: 2 + code: 1 }, timeout: 600000, fail: (ex) => { @@ -899,8 +899,10 @@ if (res.statusCode === 200) { if (res.data.code == 200) { - console.log("上传完成,耗时:" + m + "分" + s + "秒"); - updateLoading(these,{text:"上传完成,耗时:" + m + "分" + s + "秒,正在切片。"}) + console.log("上传完成,耗时:" + m + "分" + s + "秒,获得数据:"+res.data.length); + updateLoading(these, { + text: "上传完成,耗时:" + m + "分" + s + "秒,正在切片。" + }) resolve(res.data); return; @@ -922,12 +924,14 @@ //视频切片 let videoCutPacket = (array) => { + console.log("开始切片:",array.length); return new Promise((resolve, reject) => { try { + let index=0; let imgSize = 25600; let packetSize = 3200; - let tdSize = 500; - + let tdSize = 500; //只能是400/500 + let childPackLength = (tdSize === 400 ? 8 : 7); let results = []; for (let i = 0; i < 30; i++) { //先切出30张,每张25600字节 let packet = array.slice(0, imgSize); @@ -940,18 +944,24 @@ packet.splice(0, packetSize); let thirdLevel = []; - for (let k = 0; k < 7; k++) { //每1个大包切出7个小包,前6包500字节,第7包200字节,共计56小包 + for (let k = 0; k < childPackLength; k++) { + //如果每小包500字节的话,每1个大包切出7个小包,前6包500字节,第7包200字节,共计56小包 + //如果每小包400字节的话,每1个大包切出8个小包,每包400字节,共计64小包 let arr = childPacket.slice(0, tdSize); childPacket.splice(0, tdSize) thirdLevel.push(arr); + index++; + console.log("第"+index+"包长度:"+arr.length); } secondLevel.push(thirdLevel); } results.push(secondLevel); } - updateLoading(these,{text:'切片完成,正在发送'}); + updateLoading(these, { + text: '切片完成,正在发送' + }); resolve(results); } catch (error) { updateLoading(these, { @@ -965,7 +975,7 @@ } - + //发送视频到设备 let shotVideoClick = (array, type, ReSendNo) => { var sendImagePackets = () => { @@ -974,9 +984,9 @@ this.currentPacket = 0; - - // 总数据包数 - var totalPackets = 1680; + let smallPacketLen = array[0][0][0].length; + // 总数据包数,每包400字节就是1920包,每包500字节时1680包 + var totalPackets = smallPacketLen === 400 ? 1920 : 1680; this.totalPackets = totalPackets; let currentPacket = 1; @@ -1000,27 +1010,35 @@ } // console.log("111111") // 计算当前包的数据 - let packetSize = 500; + let packetSize = smallPacketLen; - if ((currentPacket - 1) % 56 === 0) { - packetSize = 508; + if (smallPacketLen === 500) { + if ((currentPacket - 1) % 56 === 0) { + packetSize = 508; + } + + if (childPacketIndex === 6) { + packetSize = 200; + } + + if ((currentPacket - 1) % 56 === 55) { + packetSize = 201; + } + } else if (smallPacketLen === 400) { + if ((currentPacket - 1) % 64 === 0) { + packetSize = 408; + } + if ((currentPacket - 1) % 64 === 63) { + packetSize = 401; + } } - if (childPacketIndex === 6) { - packetSize = 200; - } - - if ((currentPacket - 1) % 56 === 55) { - packetSize = 201; - } - - console.log("imgIndex=" + imgIndex + ",imgPackIndex=" + - imgPackIndex + - ",childPacketIndex=" + childPacketIndex) + let packetData = array[imgIndex][imgPackIndex][childPacketIndex]; + console.log("imgIndex=" + imgIndex + ",imgPackIndex=" +imgPackIndex +",childPacketIndex=" + childPacketIndex+',packetData='+packetData.length); let buffer = new ArrayBuffer(packetSize); let dataView = new DataView(buffer); @@ -1028,7 +1046,8 @@ let sortNo = currentPacket.toString(16).padStart(4, '0'); // console.log("11111"); let start = 0; - if ((currentPacket - 1) % 56 === 0) { + if (((currentPacket - 1) % 56 === 0 && smallPacketLen === 500) + || ((currentPacket - 1) % 64 ===0 && smallPacketLen === 400)) { // 填充头部 dataView.setUint8(0, 0xFA); // 帧头 dataView.setUint8(1, 0x09); // 帧类型:开机画面 @@ -1042,19 +1061,24 @@ dataView.setUint8(7, imgPackIndex + 1); start = 8; } - console.log("222222"); + for (let i = 0; i < packetData.length; i++) { dataView.setUint8(start + i, '0x' + packetData[i]); } - // console.log("333333333"); - if ((currentPacket - 1) % 56 === 55) { - dataView.setUint8(200, 0xFF); + if (smallPacketLen === 500) { + if ((currentPacket - 1) % 56 === 55) { + dataView.setUint8(200, 0xFF); + } + } else if (smallPacketLen === 400) { + if ((currentPacket - 1) % 64 === 63) { + dataView.setUint8(200, 0xFF); + } } // console.log("444444"); let inteval = parseInt(this.inteval ? this.inteval : 80); ble.sendData(f.deviceId, buffer, f.writeServiceId, f - .wirteCharactId, ).then(() => { + .wirteCharactId,15).then(() => { if (ReSendNo) { resolve(); @@ -1063,13 +1087,14 @@ // 更新进度 this.currentPacket = currentPacket; - updateLoading(these,{ - text:'正在发送:'+currentPacket+"/"+totalPackets + updateLoading(these, { + text: '正在发送:' + currentPacket + "/" + + totalPackets }); childPacketIndex++; - if (childPacketIndex == 7) { + if (childPacketIndex == (smallPacketLen === 500?7:8)) { imgPackIndex++; if (imgPackIndex == 8) { imgIndex++; @@ -1092,7 +1117,9 @@ } console.error(err.errMsg + ",发送失败了" + currentPacket); - updateLoading(these,{text:"发送失败,"+err.errMsg}); + updateLoading(these, { + text: "发送失败," + err.errMsg + }); reject(err); }); }; @@ -1106,15 +1133,16 @@ } return sendImagePackets(); - - + + } uni.chooseVideo({ sourceType: ['album'], + compressed:false, success: function(res) { - console.log("res=",res); + console.log("res=", res); let path = res.tempFilePath; let width = res.width; let height = res.height; @@ -1124,9 +1152,9 @@ err.push("视频时长至少2秒"); } - if (width != 160 || height != 80) { - err.push("视频宽高必须是160*80"); - } + // if (width != 160 || height != 80) { + // err.push("视频宽高必须是160*80"); + // } if (err.length > 0) { err = err.join(";"); these.showPop({ @@ -1144,29 +1172,32 @@ uplploadVideo(path).then(result => { videoCutPacket(result.data).then(array => { - - let start = new Date(); - console.log("开始发送"); - shotVideoClick(array).then(() => { - console.log("发送完成"); - let end = new Date(); - var diff = (end.getTime() - start.getTime()) / 1000; - let s =parseInt(diff % 60); - let m =parseInt((diff - s) / 60); - console.log("发送完成,耗时:" + m + "分" + s + "秒"); - updateLoading(these,{ - text: "发送完成,耗时:" + m + "分" + s + "秒", - }); - - }).catch((ex1) => { - console.log("出现了异常", ex1) - }).finally(() => { - timeDelayCloseLoading(); - }); - - - - + + let start = new Date(); + console.log("开始发送"); + shotVideoClick(array).then(() => { + console.log("发送完成"); + let end = new Date(); + var diff = (end.getTime() - start + .getTime()) / 1000; + let s = parseInt(diff % 60); + let m = parseInt((diff - s) / 60); + console.log("发送完成,耗时:" + m + "分" + + s + "秒"); + updateLoading(these, { + text: "发送完成,耗时:" + m + + "分" + s + "秒", + }); + + }).catch((ex1) => { + console.log("出现了异常", ex1) + }).finally(() => { + timeDelayCloseLoading(); + }); + + + + }).catch(err => { timeDelayCloseLoading(); }); diff --git a/pages/670/HBY670.vue b/pages/670/HBY670.vue index 6d78fae..b128ee6 100644 --- a/pages/670/HBY670.vue +++ b/pages/670/HBY670.vue @@ -2,9 +2,9 @@ - - - + + + @@ -35,7 +35,7 @@ 设备IMEI {{device.deviceImei}} - + Mac地址 {{device.deviceMac}} @@ -219,7 +219,7 @@ - @@ -309,8 +309,8 @@ data() { return { Status: { - msgOkIntval:null,//紧急通知等待的时间 - msgOkTime:null,// + msgOkIntval: null, //紧急通知等待的时间 + msgOkTime: null, // pageHide: false, apiType: "listA", navbar: { @@ -391,7 +391,7 @@ bleLinkCnt: 0 }, formData: { - img:'/static/images/common/HBY670.png', + img: '/static/images/common/HBY670.png', battary: "", //电量 xuhang: "", //续航 imei: "", //imei @@ -530,7 +530,7 @@ let keys = Object.keys(form); for (var i = keys.length; i >= 0; i--) { let key = keys[i]; - + these.formData[key] = form[key]; } } @@ -867,22 +867,24 @@ // console.log("收到文本回复", payload); // // this.SendTxtMQ(json); // } - if (keys.indexOf('sta_BreakNews') > -1) { //紧急通知 - if(json.sta_BreakNews==='I get it')// && this.Status.msgOkTime && this.Status.msgOkIntval){ + if (keys.indexOf('sta_BreakNews') > - + 1) { //紧急通知 + if (json.sta_BreakNews === + 'I get it') // && this.Status.msgOkTime && this.Status.msgOkIntval){ { these.showPop({ showPop: true, message: "用户已确认收到紧急通知", iconUrl: "/static/images/6155/DeviceDetail/uploadSuccess.png" }); - + // this.Status.msgOkTime=null // clearInterval(this.Status.msgOkIntval); - + } - - - } + + + } // else { // console.log("收到不能处理的数据", payload); // } @@ -2522,9 +2524,9 @@ modelValue: '', visibleClose: true }); - + // clearInterval(this.Status.msgOkIntval); - + // this.Status.msgOkTime=0; // this.Status.msgOkIntval=setInterval(()=>{ // this.Status.msgOkTime++; @@ -2534,8 +2536,8 @@ // this.Status.msgOkIntval=null; // } // }); - - + + } else { these.showPop({ message: res.msg, diff --git a/utils/BleHelper.js b/utils/BleHelper.js index e7f4296..cd65153 100644 --- a/utils/BleHelper.js +++ b/utils/BleHelper.js @@ -1828,7 +1828,7 @@ class BleHelper { Promise.race([timeOut(ms), promise]).then(resolve).catch((ex) => { // console.error("ex=", ex); if (ex.code == -1) { - console.error('专业给Uniapp填坑,发送消息永无回调'); + // console.error('专业给Uniapp填坑,发送消息永无回调'); resolve(ex); } else { reject(ex);