打印

test

[复制链接]
689|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
285454480|  楼主 | 2017-9-14 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 285454480 于 2017-9-15 15:16 编辑


4.1基础理论
每次扫描,设备会打开接收器去监听广播数据,称为一个扫描事件。扫描事件交替地发生在三个特定的广播信道:37,38,39,即第一次开始扫描是在37信道,第二次开始扫描是在38信道,第三次开始扫描是在39信道,第四次开始扫描是在37信道……扫描还有2个重要的参数:
扫描间隔:相邻2次扫描开始的时间间隔。
扫描窗口:每次扫描事件的持续时间。
这些扫描参数与广播间隔的关系见下图:

对应着广播数据和扫描响应数据,扫描也分2种,被动扫描和主动扫描。接收对端设备的广播数据,使用的是被动扫描。使用主动扫描可以接收对端设备的扫描响应数据,主动扫描就是向对端设备发起扫描请求,对端收到扫描请求后会发出扫描响应数据。扫描的过程如下:









注意:
1、主机不一定要发送扫描请求。
2、从机接收到扫描请求后,也可以选择不发送扫描响应数据。

4.2gBM01蓝牙模块的扫描控制
开始扫描命令
序号        命令ID        命令数据
任意        0x42        无
开始扫描后,模块会将扫描到的设备通过命令0x60进行上报。持续扫描一段时间后,扫描会自动停止,然后通过命令0x61上报扫描停止。
例子,开始扫描:A5 5A 00 02 78 42 BA
应答:
应答包中不包含应答数据。

上报扫描到的广播数据
序号        命令ID        命令数据(最多为38 bytes)
任意        0x60        MAC地址        信号强度        广播数据
                6 bytes        1 byte的有符号数        n段D格式数据
使用命令0x42开始扫描后,模块会将扫描到的广播数据(不包括扫描响应数据)通过该命令进行上报。
n段D格式数据其实就是广播包中的数据,目前我们只需要关心以下几个类型的D格式数据。类型为0x02,表示广播服务的UUID;类型为0x08或0x09,表示广播名;类型为0xFF,表示广播的自定义数据。其他类型暂不用考虑。广播数据最大为31字节。

上报扫描停止
序号        命令ID        命令数据
任意        0x61        无
当开始用命令0x42开始扫描,一段时间后,模块会自动停止扫描,然后通过该命令进行上报。如果是使用命令0x43进行停止扫描操作,也会通过该命令进行上报扫描停止。

停止扫描命令
序号        命令ID        命令数据
任意        0x43        无
停止扫描操作完成后,模块会通过命令0x61上报扫描已停止。
例子,停止扫描:A5 5A 00 02 AB 43 EE
应答:
如果应答结果是成功,则没有应答数据;如果应答结果是失败,则有1字节的应答数据,表示失败的原因,1表示设备没处于扫描状态,不能进行停止扫描操作,2表示命令执行出错。


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

49

帖子

1

粉丝