正在使用嵌入定制板的蓝牙低能量模块。每当我按下一个中断(按钮)时,ble模块会通告一些数字并进入休眠状态,再次在中断时,它会通知下一个数字(递增值)一次并进入休眠状态。这些值在运行的自定义Android应用程序中扫描在nexus 5.虽然手机正在扫描大部分数据包,但有时无法捕获一些数据包。自定义主板通告一次并进入睡眠状态,手机必须能够捕获此广告数据包,但有时会错过数据数据包。所以我的问题是BLE兼容手机无法从一个pheriperal设备捕获所有数据包是正常的,即可能会丢失一些数据包。或者它是智能手机连接硬件的问题。
答案 0 :(得分:1)
BLE在拥挤的频谱中以低功率发射。有些数据包会丢失(虽然我同意它比我想要的更多)。
更高级别的协议将检测数据包丢失并请求重新传输。对于BLE,您可以实际连接到设备,然后使用通知,而不是使用广告来获取数据。这些更可靠,不应该被删除。缺点是大多数设备仅支持连接少数几个外围设备,通常是7.听广告不需要连接,因此对您可以收听的广告商数量没有固定的限制。
数据包丢失还取决于正在收听的内容。 nRF51822在零范围内使用Android 5.0传输到我的Nexus 4,获得了> 50%的PLOS。当传输到另一个nRF51822时,它获得大约20%的PLOS。我想Nexus 4试图节省电力,所以也许它不会持续听。
答案 1 :(得分:0)
我有一个类似的问题,只有一些数据包到达。似乎使用ble扫描仪启用SCAN_MODE_LOW_LATENCY模式会有所帮助-您的设备将继续连续监听,因此不会丢失任何数据(除非出现混乱,范围错误等类似Timmmm的建议)。
https://developer.android.com/reference/android/bluetooth/le/ScanSettings
希望这会有所帮助