首先是确定与APP通信的BLE服务,这个服务如果不是公共服务,就定义私有服务,比如SDK里面的0X1800为公共服务,为显示电池电量等来用的。定义一个与APP通信的私有服务为0X2020。至于哪些为公共服务,可以查看BLE协议相关手册,除了公共服务以外其余皆为私有服务。平时我们在手机搜索到的BLE图标显示为键盘,手柄等等,就是因为搜索到的蓝牙定义的服务有公共服务,有什么公共服务,就显示为什么样的图标。
确定好私有服务0X2020,剩下的就是特征值了,一般定义3个特征值,一个用来写(0xa0a0),一个读(0xa0a1),一个Notify(0xa0a2),之后用gatt工具生成profile表格,替换掉sdk里面表格,到这里特征值和服务的工作已经做完。
接下去是sdk的读写回调,里面代码已经实现,需要做的是把自己定义的读写notify三个通道替换掉原来的。读回调,即app读蓝牙端数据后蓝牙给出怎样的结果,通道替换成0xa0a1即可。举例:用APP读取蓝牙端的音量,是通过0xa0a1这个通道来读取的,只要在回调中把音量放进去,APP即可读回蓝牙端音量。写回调:同理,在app发一个0x01过来,就会调用一次写回调函数。至于发送怎样的数据,跟读回调一个道理。接下去是notify,这个比较重要,这个通道是APP用来监听的通道,也是蓝牙端最常用的通道,蓝牙端想要主动发送数据到APP端就是通过这个通道来实现的,相关的代码在sdk里面都已经实现了,这里就不再赘述。
来源:CSDN
作者:渔夫与魔鬼的故事
链接:https://blog.csdn.net/louis_bao/article/details/104816266