我一直在开发一个Mac OS X应用程序,它通过蓝牙低功耗连续发送命令到硬件设备。在Yosemite下,该应用程序运行良好,对于命令传输,测量的往返延迟为7-12 ms。该命令以最小2秒和最长0.2秒的稳定间隔发送到自定义BLE服务。
现在,我在过去几个月没有开发(应用尚未上线),然后升级到El Capitan,现在同一个应用的延迟 500-1500 ms ,这使得整个事情绝对无法使用。我假设升级到El Capitan是原因,但我无法确定。
我检查了什么:
任何人都可以暗示我可能会导致这种情况,或者只是告诉我在他们的环境中一切正常吗? 要重现,请使用Mac连接任何支持Bluetooth Low Energy的设备,并向其发送十六进制数据串。您必须以某种方式记录它或打开LED左右,以查看是否存在明显的延迟。
非常感谢任何帮助!
答案 0 :(得分:3)
El Capitan使用的连接参数看起来不像以前在优胜美地那样。
在OS X下,无论客户端应用程序如何,CoreBluetooth都会决定给定设备使用哪些连接参数。不幸的是,CoreBluetooth依赖于计算参数的规则有些不透明并且依赖于设备(公开的服务,DIS,AD)。 El Capitan可能会改变一些规则。
您应该开始寻找一些方向:
Apple Bluetooth Accessory Design Guidelines详细说明了apple Centrals接受的有关连接参数的一些规则,
延迟问题也可能是因为slaveLatency连接参数较高。它有助于节省外设的电池寿命,但会使中心 - >外围延迟有些不可预测。您可以减少设备接受的Slave Latency,
嗅探器日志或外围设备端调试肯定有助于了解Yosemite和El Capitan之间实际发生的变化。
答案 1 :(得分:1)