当前位置: 首页 > news >正文

微信小程序蓝牙writeBLECharacteristicValue写入数据返回成功后,实际硬件内信息查询未存储?

问题:连接蓝牙后,调用小程序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)}})})

http://www.lryc.cn/news/493364.html

相关文章:

  • 5G NR:带宽与采样率的计算
  • go 和java 编写方式的理解
  • C# 7.1 .Net Framwork4.7 VS2017环境下,方法的引用与调用
  • etcd、kube-apiserver、kube-controller-manager和kube-scheduler有什么区别
  • 每日一题 LCR 057. 存在重复元素 III
  • 使用IDEA编写测试用例,复杂度校验
  • 搭建私有云存储
  • 【从零开始的LeetCode-算法】3304. 找出第 K 个字符 I
  • 深入解析分布式遗传算法及其Python实现
  • gitee:创建仓库,存入本地文件至仓库
  • 计算分数的浮点数值
  • 在 C/C++ 中,volatile 关键字的作用是什么?.volatile 关键字与 const 关键字有什么区别?
  • golang debug调试
  • 自动化运维(k8s)之微服务信息自动抓取:namespaceName、deploymentName等全解析
  • 07 初始 Oracle 优化器
  • Java对象与XML互相转换(xstream)
  • 一键生成唯美动漫图:ComfyUI-tPonynai详细搭建教程
  • C++设计模式(工厂模式)
  • 多阶段报童问题动态规划求解,Python 实现
  • 【C++进阶篇】像传承家族宝藏一样理解C++继承
  • Java基础面试题09:Java异常处理完成以后,Exception对象会发生什么变化?
  • mysql sql语句 between and 是否边界值
  • Java接收LocalDateTime、LocalDatee参数
  • 方差分析、相关分析、回归分析
  • SQLModel入门
  • 单片机蓝牙手机 APP
  • PostgreSQL在Linux环境下的常用命令总结
  • Unity shaderlab 实现LineSDF
  • Ubuntu中的apt update 和 apt upgrade
  • Android 中 Swipe、Scroll 和 Fling 的区别