蓝牙BLE主机Central讲解四(连接血压计)
static uint8_t PeerAddrDef[B_ADDR_LEN] = {0x0A, 0xD9, 0x7C, 0x59, 0xAC, 0xC4}; //AND从机的MAC地址
建立连接之前,我们先使用BLE调试助手与血压计建立连接,这里的目的是查询相应服务的UUID。我们发现自定义服务的UUID为128bit的格式,582主机的UUID默认是16bit的,这里可以参考一下这篇博客,进行UUID的修改:CH573 CH582 CH579 peripheral通用外设例子讲解五 修改16bit UUID为128bit - debugdabiaoge - 博客园 (cnblogs.com)
582作主机需要做如下修改:
这里的UUID:0x233bf0015a341b6d975c000d5690abe4是使能CCCD,在上面的流程图上第一个操作是打开CCCD,因此我们根据流程进行。
使能成功之后,从机会返回Write response。结合到程序会返回Write success。这里成功之后我们Write Request,同样会返回Write success。
接下来我们需要使能CCCD Indication,原理和上面一样,因为我们已经知道了对应handle所对应的含义,所以直接使能打开就可以,如图可见:
(所有的handle值以及对应的UUID表格都已罗列出来,前面对CCCD和Write的操作也可以直接输入handle值进行使能,打开相应的通道)
具体处理如图:
此时相应的通道已经打通,从机发送数据主机会接收到。接下来需要处理主机端的接收方式,在582的默认例程中,只有接收noti数据,接收Indication数据需要手动添加,如图可见:
二、
最终接收到血压计传过来的数据,如图可见:
如上所述,数据已经接收完成,最终数据还需要厂家进行处理后得要我们所能看懂的血压数据。
三、
综上所述,我们在进行蓝牙连接与透传需要进行以下几点操作:
1、使用手机端BLE调试助手与待建立连接的从机建立连接,且进行数据透传;
2、手机连接无问题,使用CH582连接理论也不会出问题,只需要先根据从机确定相应服务的UUID,找到对应的handle值,打通“通道”,进行数据的接收;
3、有的时候UUID输入正确了,但是handle值获取到的是一个范围,我们可以一个个的去尝试处理,或者使用蓝牙分析仪,分析手机与从机连接时通过某个通道进行数据传输,在582程序制造一个相同的通道进行数据传输。
这里附录一份博客关于BLE分析仪的使用讲解,配合使用会更加方便:
BLE分析仪讲解 - SweetTea_lllpc - 博客园 (cnblogs.com)