应用场景,用观察者角色,扫描特别的遥控器(广播模式,非连接)。
添加了白名单(MAC为 11:22:33:44:55:66)
但是没有扫描到,有搞错的地方吗?
首先,需要知道MAC地址的类型,这边如果使用的是evt里广播的例程,类型参数传0即可,第二个参数传数组首地址
添加白名单时需要注意,添加的mac地址与ble调试助手上显示的大小端相反。
为什么参数我写0不行,写1才可以。
而且扫描得很慢,按了好多次长按按键,才有一次扫描到。
参数写零不行,写1才可以,那你可以打印的时候打印一下addrtype,看看究竟是什么类型,扫描很慢是因为例程里面的扫描时长设置的是3s,你可以将参数DEFAULT_SCAN_DURATION下调,单位为0.625ms。
根据你前面的建议,函数改成 GAP_SetParamValue( TGAP_FILTER_ADV_REPORTS, FALSE );这个了,整个程序与DEFAULT_SCAN_DURATION 定义无关。
改回不过虑白名单的,DEFAULT_SCAN_DURATION 这个数据改为1. 测试到像是间隔10S收一次信号。
你屏蔽了这条设置扫描时长的语句,这句话不要屏蔽,你下面加的那句话是设置广播的,扫描传参应该是2,
你这边10s扫描一次也是正常的,你没有设置时间,默认时间是10.24s。
快速扫描可以实现了。
现在发现另一个问题,就是遥控器广播的信息,用573打印出来的和Nrf Connect测出来的不一致,相差还挺大。
573到收51长度的广播。
打印数据:
NRF CONNECT 截取的数据:
请问,前两图数据相差那么大,长度也不一样,程序写法对了吗?
首先,广播包的大小是有规定的,最大为31个字节,其次根据实际长度去操作,
测试到收到广播的数据不对,方便确认一下吗?
打印出的结果与手机app搜到的广播结果一致。
确认一下,你的打印是否在这个事件中去打印的。
原来是事件没搞对,现在可以了,谢谢