建立一个网站要多久,wordpress的替代,深圳外贸网站建设公司,新手怎么做美工图问题#xff1a;连接蓝牙后#xff0c;调用小程序writeBLECharacteristicValue#xff0c;返回传输数据成功#xff0c;查询硬件响应发现没有存储进去#xff1f;
解决#xff1a;一直以为是这个write方法的问题#xff0c;找了很多相关贴#xff0c;后续进行硬件日志…问题连接蓝牙后调用小程序writeBLECharacteristicValue返回传输数据成功查询硬件响应发现没有存储进去
解决一直以为是这个write方法的问题找了很多相关贴后续进行硬件日志查询发现传输的数据确实传成功了但是只传输了二分之一。
原因微信小程序对于传输Value有默认字节限制默认是20传输内容超过了20所以只传过去了前20个字节。超过字节限制不会报错也会报传输成功。
行动查询小程序字节限制wx.getBLEMTU对传输内容做分包处理再传输注意在使用微信小程序getBLEMTU获取mtu时一定要减3
function stringToAsciiCodesAndSplit(str: string, mtuSize 20): Uint8Array[] {// 将字符串转换为 ASCII 码的 ArrayBufferconst asciiCodes: number[] []for (let i 0; i str.length; i) {asciiCodes.push(str.charCodeAt(i))}const uint8Array new Uint8Array(asciiCodes)console.log(uint8Array.buffer, uint8Array.buffer)// 定义一个 packets 数组它将存储多个 Uint8Array 类型的元素const packets: Uint8Array[] []// 根据 MTU字节 大小拆分数据for (let i 0; i uint8Array.length; i mtuSize) {packets.push(uint8Array.slice(i, i mtuSize))}return packets
}
const command atxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyy
//mtu为字节限制const buffer stringToAsciiCodesAndSplit(command, mtu)buffer.forEach((packet, index) {// 将每个包转换为 ArrayBufferconst addBuffer packet.bufferTaro.writeBLECharacteristicValue({deviceId: deviceId,serviceId: serviceId,characteristicId: characteristicId,value: addBuffer,success: function (res) {console.log(第 ${index 1} 个WIFI添加包发送成功:, res)},fail: function (err) {console.log(第 ${index 1} 个WIFI添加包发送失败:, err)}})})