智能手机中数据包的BLE丢失



正在研究嵌入在定制板中的 BLuetooth 低功耗模块。 每当我按下中断(按钮)时,BLE模块都会通告某个数字一次并进入睡眠状态,再次中断时,它会通告下一个数字(递增的值)一次并进入睡眠状态。这些值在 nexus 5 中运行的自定义 android 应用程序中进行扫描,虽然手机正在扫描大部分数据包,但有时它无法捕获某些数据包.自定义板广告一次并进入睡眠状态,手机必须能够捕获此广告数据包,但有时它会丢失数据包。所以我的问题是BLE兼容手机无法从虚拟设备捕获所有数据包是否正常,即可能会丢失某些数据包。还是智能手机 nexus 5 ble 硬件的问题。

BLE 在拥挤的频谱中以低功率传输。一些数据包丢失是可以预期的(尽管我同意它比我想要的要多)。

更高级别的协议将检测数据包丢失并请求重新传输。在BLE的情况下,您可以实际连接到设备,然后使用通知,而不是使用数据广告。这些更可靠,不应该丢弃。缺点是大多数设备仅支持连接到少数外围设备,通常是 7 个。收听广告不需要连接,因此您可以收听的广告商数量没有固定限制。

数据包丢失还取决于正在侦听的内容。nRF51822 在零范围内传输到我的 Nexus 4 和 Android 5.0 会得到>50% 的 PLOS。当传输到另一个nRF51822时,它得到大约20%的PLOS。我猜Nexus 4试图节省电量,所以也许它不会连续收听。

我有一个类似的问题,只有一些数据包到达。似乎使用 ble 扫描仪启用 SCAN_MODE_LOW_LATENCY 模式会有所帮助 - 您的设备将继续连续收听,因此不会丢失任何数据(除非像 Timmmm 建议的那样有混乱、范围不好等)。

https://developer.android.com/reference/android/bluetooth/le/ScanSettings

希望这有帮助

最新更新