From a28d4921a04236322a69df07a80a1613242bb9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E5=BE=AE=E4=B8=80=E7=AC=91?= <709648985@qq.com> Date: Thu, 20 Nov 2025 17:51:26 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8D6155=E8=93=9D=E7=89=99?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/6155/deviceDetail.vue | 229 ++++++++++++++++++++---------------- 1 file changed, 129 insertions(+), 100 deletions(-) diff --git a/pages/6155/deviceDetail.vue b/pages/6155/deviceDetail.vue index 6c8b781..871ee27 100644 --- a/pages/6155/deviceDetail.vue +++ b/pages/6155/deviceDetail.vue @@ -446,6 +446,35 @@ } }, methods: { + calcTotalPackets(frames) { + if (!Array.isArray(frames) || frames.length === 0) { + return 0; + } + return frames.reduce((frameSum, frame) => { + if (!Array.isArray(frame)) { + return frameSum; + } + const packSum = frame.reduce((packAcc, pack) => { + if (!Array.isArray(pack)) { + return packAcc; + } + return packAcc + pack.length; + }, 0); + return frameSum + packSum; + }, 0); + }, + toByteValue(value) { + if (typeof value === 'number') { + return value; + } + if (typeof value === 'string') { + if (value.startsWith('0x') || value.startsWith('0X')) { + return parseInt(value, 16); + } + return parseInt(`0x${value}`, 16); + } + return 0; + }, deviceRecovry(res) { if (this.Status.pageHide) { return; @@ -921,37 +950,42 @@ } //视频切片 - let videoCutPacket = (array) => { + let videoCutPacket = (data) => { return new Promise((resolve, reject) => { try { - let imgSize = 25600; - let packetSize = 3200; - let tdSize = 500; + const imgSize = 25600; + const packetSize = 3200; + const chunkSize = 500; + const maxPacketCount = 30; + let source = Array.isArray(data) ? data.slice() : []; let results = []; - for (let i = 0; i < 30; i++) { //先切出30张,每张25600字节 - let packet = array.slice(0, imgSize); - array.splice(0, imgSize) + for (let i = 0; i < maxPacketCount && source.length >= imgSize; i++) { + let frameBytes = source.splice(0, imgSize); + let framePackets = []; - let secondLevel = []; - for (let j = 0; j < 8; j++) { //每张切8大包,每包3200字节 - let childPacket = packet.slice(0, packetSize); + for (let j = 0; j < 8 && frameBytes.length > 0; j++) { + let majorPacket = frameBytes.splice(0, packetSize); + let childPackets = []; - packet.splice(0, packetSize); - - let thirdLevel = []; - for (let k = 0; k < 7; k++) { //每1个大包切出7个小包,前6包500字节,第7包200字节,共计56小包 - - let arr = childPacket.slice(0, tdSize); - - childPacket.splice(0, tdSize) - thirdLevel.push(arr); + while (majorPacket.length > 0) { + let chunk = majorPacket.splice(0, chunkSize); + if (chunk.length) { + childPackets.push(chunk); + } + } + if (childPackets.length) { + framePackets.push(childPackets); } - secondLevel.push(thirdLevel); } - results.push(secondLevel); + + if (framePackets.length) { + results.push(framePackets); + } } - updateLoading(these,{text:'切片完成,正在发送'}); + updateLoading(these, { + text: '切片完成,正在发送' + }); resolve(results); } catch (error) { updateLoading(these, { @@ -960,31 +994,25 @@ reject(error); } }); - - - - } //发送视频到设备 let shotVideoClick = (array, type, ReSendNo) => { var sendImagePackets = () => { return new Promise((resolve, reject) => { - - - this.currentPacket = 0; - - // 总数据包数 - var totalPackets = 1680; + let totalPackets = these.calcTotalPackets(array); this.totalPackets = totalPackets; + if (totalPackets === 0) { + reject('没有可发送的数据'); + return; + } let currentPacket = 1; let imgIndex = 0; let imgPackIndex = 0; let childPacketIndex = 0; if (ReSendNo) { - this.currentPacket = ReSendNo - 1; currentPacket = ReSendNo; totalPackets = ReSendNo; @@ -992,96 +1020,88 @@ } // 发送单个数据包 const sendNextPacket = () => { - // console.log("111111") - if (currentPacket > totalPackets) { + if (imgIndex >= array.length) { resolve(); - return; } - // console.log("111111") - // 计算当前包的数据 - let packetSize = 500; - - if ((currentPacket - 1) % 56 === 0) { - - packetSize = 508; - + + if (!array[imgIndex]) { + console.error("没有找到对应的帧数据", imgIndex); + reject(`帧数据缺失,索引 ${imgIndex}`); + return; } - - if (childPacketIndex === 6) { - packetSize = 200; + + let childPacketsGroup = array[imgIndex][imgPackIndex]; + if (!childPacketsGroup || !childPacketsGroup.length) { + console.error("帧数据结构异常", imgIndex, imgPackIndex); + reject(`帧数据结构异常,帧 ${imgIndex}`); + return; } - - if ((currentPacket - 1) % 56 === 55) { - packetSize = 201; + + let packetData = childPacketsGroup[childPacketIndex]; + let packetSize = packetData.length; + + const isFirstChild = childPacketIndex === 0; + const isLastChild = childPacketIndex === (childPacketsGroup.length - 1); + + if (isFirstChild) { + packetSize = packetData.length + 8; } - - console.log("imgIndex=" + imgIndex + ",imgPackIndex=" + - imgPackIndex + - ",childPacketIndex=" + childPacketIndex) - - let packetData = array[imgIndex][imgPackIndex][childPacketIndex]; - - let buffer = new ArrayBuffer(packetSize); - let dataView = new DataView(buffer); - - let sortNo = currentPacket.toString(16).padStart(4, '0'); - // console.log("11111"); + + if (isLastChild) { + packetSize = packetData.length + (isFirstChild ? 9 : 1); + } + + const buffer = new ArrayBuffer(packetSize); + const dataView = new DataView(buffer); + let start = 0; - if ((currentPacket - 1) % 56 === 0) { + if (isFirstChild) { // 填充头部 dataView.setUint8(0, 0xFA); // 帧头 dataView.setUint8(1, 0x09); // 帧类型:开机画面 dataView.setUint8(2, 0x0C); dataView.setUint8(3, 0x84); - - dataView.setUint8(4, 0xFD); dataView.setUint8(5, 0x09); dataView.setUint8(6, imgIndex); 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]); + dataView.setUint8(start + i, these.toByteValue(packetData[i])); } - // console.log("333333333"); - if ((currentPacket - 1) % 56 === 55) { - dataView.setUint8(200, 0xFF); + + if (isLastChild) { + dataView.setUint8(packetSize - 1, 0xFF); } - // console.log("444444"); let inteval = parseInt(this.inteval ? this.inteval : 80); - - ble.sendData(f.deviceId, buffer, f.writeServiceId, f - .wirteCharactId, ).then(() => { + + ble.sendData(f.deviceId, buffer, f.writeServiceId, f.wirteCharactId).then(() => { if (ReSendNo) { - resolve(); return; } // 更新进度 this.currentPacket = currentPacket; - + updateLoading(these,{ text:'正在发送:'+currentPacket+"/"+totalPackets }); - - + childPacketIndex++; - if (childPacketIndex == 7) { - imgPackIndex++; - if (imgPackIndex == 8) { - imgIndex++; - imgPackIndex = 0; - } + if (childPacketIndex >= childPacketsGroup.length) { childPacketIndex = 0; + imgPackIndex++; + if (imgPackIndex >= array[imgIndex].length) { + imgPackIndex = 0; + imgIndex++; + } } // 发送下一个包(添加延迟避免蓝牙缓冲区溢出) currentPacket++; - - - + setTimeout(sendNextPacket, inteval); }).catch(err => { if (err.code == 10007) { @@ -1090,25 +1110,16 @@ setTimeout(sendNextPacket, 100); return; } - + console.error(err.errMsg + ",发送失败了" + currentPacket); updateLoading(these,{text:"发送失败,"+err.errMsg}); reject(err); }); }; - - - // console.log("111111") - sendNextPacket(); - }); } - return sendImagePackets(); - - - } uni.chooseVideo({ @@ -1143,7 +1154,25 @@ setTimeout(() => { uplploadVideo(path).then(result => { - videoCutPacket(result.data).then(array => { + let data = result.data; + let convertedData = []; + for (let i = 0; i < data.length; i += 2) { + if (i + 1 < data.length) { + const byte1 = these.toByteValue(data[i]); + const byte2 = these.toByteValue(data[i + 1]); + const rgb565 = (byte1 << 8) | byte2; + const red = (rgb565 & 0xF800) >> 11; + const green = (rgb565 & 0x07E0) >> 5; + const blue = (rgb565 & 0x001F); + const bgr565 = (blue << 11) | (green << 5) | red; + convertedData.push((bgr565 >> 8) & 0xFF); + convertedData.push(bgr565 & 0xFF); + } else { + convertedData.push(these.toByteValue(data[i])); + } + } + + videoCutPacket(convertedData).then(array => { let start = new Date(); console.log("开始发送"); @@ -1535,8 +1564,8 @@ }); console.log("result=", result); - // var str1="FA 06 01 00 FF FF F7 9F EF 6F EC F7 EA 09 CF FF AF FB EF EB EF EB EC 6B EF EB EC 6B EF EB EF FB EE 63 FF FF FF FF F7 9F EF 6F EC F7 EA 09 CF FF AF FB EF EB EF EB EC 6B EF EB EC 6B EF EB EF FB EE 63 FF FF FF FF F7 FF 81 03 ED BB DD B7 CB CF F3 C7 CD 39 BE FF FE FF C0 03 FE FB FD FB F3 F7 8F 87 FF FF FF FF FE FF FE FF FE FF C0 03 FF FB FD FB FD FB FD FB FD FB FB FB FB FF F7 F7 EF F7 9F 8F FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF" - // var str2="FA 07 01 00 FF FF EE DD EE DF EF 5B AB DF AA 03 AE FF AE FF EE 03 EE FF EE FF EE 03 EE FF EE FF EE E3 FF FF FF FF EE DD EE DF EF 5B AB DF AA 03 AE FF AE FF EE 03 EE FF EE FF EE 03 EE FF EE FF EE E3 FF FF FF FF EF 77 EF 73 EF 7F 80 01 EF 7F EF 7F EF 03 E7 3B 8E BB EE D7 EE EF ED E7 ED 9B 8B 7D FF FF FF FF FF FF F7 EF F7 F7 EF F7 DF FB FF FF FF FF FE FF 80 01 FE 7F FD BF FB DF F7 E7 9F F9 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF" + // var str1="FA 06 01 00 FF FF F7 9F EF 6F EC F7 EA 09 CF FF AF FB EF EB EF EB EC 6B EF EB EC 6B EF EB EF FB EE 63 FF FF FF FF F7 9F EF 6F EC F7 EA 09 CF FF AF FB EF EB EF EB EC 6B EF EB EC 6B EF EB EF FB EE 63 FF FF FF FF F7 FF 81 03 ED BB DD B7 CB CF F3 C7 CD 39 BE FF FE FF C0 03 FE FB FD FB F3 F7 8F 87 FF FF FF FF FE FF FE FF FE FF C0 03 FF FB FD FB FD FB FD FB FD FB FB FB FB FF F7 F7 EF F7 9F 8F FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF" + // var str2="FA 07 01 00 FF FF EE DD EE DF EF 5B AB DF AA 03 AE FF AE FF EE 03 EE FF EE FF EE 03 EE FF EE FF EE E3 FF FF FF FF EE DD EE DF EF 5B AB DF AA 03 AE FF AE FF EE 03 EE FF EE FF EE 03 EE FF EE FF EE E3 FF FF FF FF EF 77 EF 73 EF 7F 80 01 EF 7F EF 7F EF 03 E7 3B 8E BB EE D7 EE EF ED E7 ED 9B 8B 7D FF FF FF FF FF FF F7 EF F7 F7 EF F7 DF FB FF FF FF FF FE FF 80 01 FE 7F FD BF FB DF F7 E7 9F F9 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF" // var str3="FA 08 01 00 FF FF EF DF EC 01 EF FF AB FF AA 03 AA FB AE FB EE 03 EF DF EF DF EE DB ED DF ED DD EF 1F FF FF FF FF EF BF EF 87 81 77 EE F7 EC 03 81 7F EF 7F EF 7F EF 03 81 7F EF 7F EF 7D EF 7D EF 03 FF FF FF FF F9 F1 CF BF DF FF DF FF C1 FF DD 81 DD F7 DD F7 C1 F7 DF 77 FF 77 BF 77 BF 77 FF F7 FF FF FF FF FD FF FD FF FB FF FB FF F0 07 E7 F7 EF F7 D8 07 BF F7 FF F7 F8 07 FF F7 FF F7 FF C7 FF FF FF FF FF FF FF FF FF FF FE FF FE 7F FE 7F FE FF FD BF FD FF FB DF F7 EF EF F7 DF FB BF FD FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF" // let arr1=('0x'+(str1.split(' ').join(",0x"))).split(','); From ac7e1873cdb9d924de165d82db74f1822360c50d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E5=BE=AE=E4=B8=80=E7=AC=91?= <709648985@qq.com> Date: Fri, 21 Nov 2025 11:07:10 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8D6155=E7=94=B5=E9=87=8F?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/6155/deviceDetail.vue | 11 ++++++++++- utils/BleReceive.js | 3 +-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pages/6155/deviceDetail.vue b/pages/6155/deviceDetail.vue index 871ee27..41c041f 100644 --- a/pages/6155/deviceDetail.vue +++ b/pages/6155/deviceDetail.vue @@ -574,12 +574,21 @@ if (!json) { return; } + console.log("收到设备数据:", json); let keys = Object.keys(json); keys.forEach((key) => { if (key in these.formData) { - these.formData[key] = json[key]; + // 确保响应式更新 + console.log(`更新字段 ${key}: ${these.formData[key]} -> ${json[key]}`); + these.$set(these.formData, key, json[key]); + } else { + console.log(`字段 ${key} 不在 formData 中,跳过更新`); } }); + + // 强制触发视图更新,确保电量显示同步 + these.$forceUpdate(); + console.log("更新后的电量:", these.formData.battary); if (this.formData.battary <= 20) { this.showPop({ diff --git a/utils/BleReceive.js b/utils/BleReceive.js index b5f85e7..5d13216 100644 --- a/utils/BleReceive.js +++ b/utils/BleReceive.js @@ -476,8 +476,7 @@ class BleReceive { let recCnt = recArr.find(v => { - return v.key.replace(/\//g, "").toLowerCase() === f.device.detailPageUrl.replaceAll( - '/', '').toLowerCase(); + return v.key.replace(/\//g, "").toLowerCase() === f.device.detailPageUrl.replace(/\//g, '').toLowerCase(); From eea68b527616b0116c56090c72b158661d1aaffc Mon Sep 17 00:00:00 2001 From: fengerli <528575642@qq.com> Date: Fri, 21 Nov 2025 11:10:47 +0800 Subject: [PATCH 3/5] =?UTF-8?q?6155=E9=99=90=E5=88=B6=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E6=96=87=E5=AD=97=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E8=B6=85=E8=BF=877=E4=B8=AA=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/6155/deviceDetail.vue | 126 ++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 49 deletions(-) diff --git a/pages/6155/deviceDetail.vue b/pages/6155/deviceDetail.vue index 871ee27..1b7ce1a 100644 --- a/pages/6155/deviceDetail.vue +++ b/pages/6155/deviceDetail.vue @@ -77,7 +77,7 @@ 泛光模式 - + + @@ -929,7 +929,9 @@ if (res.statusCode === 200) { if (res.data.code == 200) { console.log("上传完成,耗时:" + m + "分" + s + "秒"); - updateLoading(these,{text:"上传完成,耗时:" + m + "分" + s + "秒,正在切片。"}) + updateLoading(these, { + text: "上传完成,耗时:" + m + "分" + s + "秒,正在切片。" + }) resolve(res.data); return; @@ -995,7 +997,7 @@ } }); } - + //发送视频到设备 let shotVideoClick = (array, type, ReSendNo) => { var sendImagePackets = () => { @@ -1024,37 +1026,38 @@ resolve(); return; } - + if (!array[imgIndex]) { console.error("没有找到对应的帧数据", imgIndex); reject(`帧数据缺失,索引 ${imgIndex}`); return; } - + let childPacketsGroup = array[imgIndex][imgPackIndex]; if (!childPacketsGroup || !childPacketsGroup.length) { console.error("帧数据结构异常", imgIndex, imgPackIndex); reject(`帧数据结构异常,帧 ${imgIndex}`); return; } - + let packetData = childPacketsGroup[childPacketIndex]; let packetSize = packetData.length; - + const isFirstChild = childPacketIndex === 0; - const isLastChild = childPacketIndex === (childPacketsGroup.length - 1); - + const isLastChild = childPacketIndex === (childPacketsGroup + .length - 1); + if (isFirstChild) { packetSize = packetData.length + 8; } - + if (isLastChild) { packetSize = packetData.length + (isFirstChild ? 9 : 1); } - + const buffer = new ArrayBuffer(packetSize); const dataView = new DataView(buffer); - + let start = 0; if (isFirstChild) { // 填充头部 @@ -1068,28 +1071,30 @@ dataView.setUint8(7, imgPackIndex + 1); start = 8; } - + for (let i = 0; i < packetData.length; i++) { dataView.setUint8(start + i, these.toByteValue(packetData[i])); } - + if (isLastChild) { dataView.setUint8(packetSize - 1, 0xFF); } let inteval = parseInt(this.inteval ? this.inteval : 80); - - ble.sendData(f.deviceId, buffer, f.writeServiceId, f.wirteCharactId).then(() => { + + ble.sendData(f.deviceId, buffer, f.writeServiceId, f + .wirteCharactId).then(() => { if (ReSendNo) { resolve(); return; } // 更新进度 this.currentPacket = currentPacket; - - updateLoading(these,{ - text:'正在发送:'+currentPacket+"/"+totalPackets + + updateLoading(these, { + text: '正在发送:' + currentPacket + "/" + + totalPackets }); - + childPacketIndex++; if (childPacketIndex >= childPacketsGroup.length) { childPacketIndex = 0; @@ -1101,7 +1106,7 @@ } // 发送下一个包(添加延迟避免蓝牙缓冲区溢出) currentPacket++; - + setTimeout(sendNextPacket, inteval); }).catch(err => { if (err.code == 10007) { @@ -1110,9 +1115,11 @@ setTimeout(sendNextPacket, 100); return; } - + console.error(err.errMsg + ",发送失败了" + currentPacket); - updateLoading(these,{text:"发送失败,"+err.errMsg}); + updateLoading(these, { + text: "发送失败," + err.errMsg + }); reject(err); }); }; @@ -1125,7 +1132,7 @@ uni.chooseVideo({ sourceType: ['album'], success: function(res) { - console.log("res=",res); + console.log("res=", res); let path = res.tempFilePath; let width = res.width; let height = res.height; @@ -1173,29 +1180,32 @@ } videoCutPacket(convertedData).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(); }); @@ -1458,6 +1468,24 @@ these.showBleUnConnect() return; } + let err = false; + this.formData.textLines.find((txt) => { + if (txt.length === 0 || txt.length > 7) { + console.log("txt=", txt); + err = true; + return true; + } + return false; + }) + if (err) { + this.showPop({ + message: "单位、部门、姓名必须填写且最多7字", + iconUrl: "/static/images/6155/DeviceDetail/uploadErr.png", + borderColor: "#e034344d", + buttonBgColor: "#E03434", + }); + return; + } showLoading(these, { text: "请稍候..." }); From a7f09dfbc22b3688a216a0e6e2d99eb1cf2a597e Mon Sep 17 00:00:00 2001 From: fengerli <528575642@qq.com> Date: Fri, 21 Nov 2025 11:24:04 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=94=B5=E9=87=8F=E4=BD=8E=EF=BC=8C=E9=87=8D=E5=A4=8D=E5=BC=B9?= =?UTF-8?q?=E6=A1=86=E6=8F=90=E7=A4=BA=E4=B8=A4=E4=B8=AA=E5=BC=B9=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/BleReceive.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/BleReceive.js b/utils/BleReceive.js index 5d13216..36aaea6 100644 --- a/utils/BleReceive.js +++ b/utils/BleReceive.js @@ -483,11 +483,11 @@ class BleReceive { }); if (!recCnt) { if (batteryLevel <= 20) { - - uni.showModal({ - content: "设备电量低", - title: "提示" - }); + // 会弹出两个框,暂且注释掉这段代码 + // uni.showModal({ + // content: "设备电量低", + // title: "提示" + // }); } } From ad85c922e19571615846a845ecdba5433eb247c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E5=BE=AE=E4=B8=80=E7=AC=91?= <709648985@qq.com> Date: Fri, 21 Nov 2025 13:25:38 +0800 Subject: [PATCH 5/5] =?UTF-8?q?6155=E8=A7=A3=E5=86=B3=20iOS=20=E4=B8=8A?= =?UTF-8?q?=E7=9A=84=E5=88=86=E8=BE=A8=E7=8E=87=E6=A3=80=E6=9F=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/6155/deviceDetail.vue | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pages/6155/deviceDetail.vue b/pages/6155/deviceDetail.vue index 41c041f..6dae39d 100644 --- a/pages/6155/deviceDetail.vue +++ b/pages/6155/deviceDetail.vue @@ -1136,16 +1136,19 @@ success: function(res) { console.log("res=",res); let path = res.tempFilePath; - let width = res.width; - let height = res.height; + // iOS可能返回浮点数,需要转换为整数进行比较 + let width = Math.round(res.width); + let height = Math.round(res.height); let duration = res.duration; + console.log("视频信息 - 宽度:", width, "高度:", height, "时长:", duration); let err = []; if (duration < 2) { err.push("视频时长至少2秒"); } - if (width != 160 || height != 80) { - err.push("视频宽高必须是160*80"); + // 使用容差比较,允许1像素的误差(iOS可能有精度问题) + if (Math.abs(width - 160) > 1 || Math.abs(height - 80) > 1) { + err.push("视频宽高必须是160*80,当前分辨率:" + width + "*" + height); } if (err.length > 0) { err = err.join(";");