经过一个月左右的开发 总结出小程序调用蓝牙模块的经常遇到的问题
1、广播包: 在搜索的蓝牙信号时可以获取蓝牙设备的广播包。里面可以存储一些不需要连接蓝牙都获取的数据,可以以通过广播包内数据的不同进行其他的逻辑操作
2、deviceid: 蓝牙设备的ID,通过此ID可以进行连接蓝牙设备,连接成功之后可以获取serviceId,serviceId可以有多个,每个serviceId可以看作是服务,每个serviceId中可以定义多个uuid(特征值)。
3、UUID: 每个特征值中可以存储20byte的数据,微信小程序每次发送接收时最大单个特征值为20byte.
4、接收数据: 接收数据时,一定要从单片机中控制数据的发送,不要尝试自己从程序中定时读取,这个功能只有单片机主动发送才行。定时读取虽然功能可以实现,但体验极差,无法当做产品使用。
5、发送数据流程:搜索蓝牙————>通过serviceId连接蓝牙————>获取蓝牙设备所有服务————>获取蓝牙设备某个服务中所有的特征值(发送接收时需要使用特征值)————>
启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值————>监听低功耗蓝牙设备的特征值变化(获取订阅特征值数据的变化)
6、数据转化: var a= new DataView(value,0,1) var aa= a.getInt8() 注释:0为起始位置,1为结束位置,若为2byte的长度 1即为2 aa即为转换之后的数据 若不理解查看dateView官方文档