我的客户正在使用蓝牙低功耗加密狗构建应用程序。该装置可进行连续测量。他们最初选择BLE用于节能和节能。由于该设备在记录数据时一次运行约8小时,因此需要它运行整整8小时。
他们希望我设置他们的Android应用程序,以4个不同的频道轮询设备,频率高达250 /秒。对我来说,打败了低能耗方面。我很确定BLE的设计时考虑了通知,应该将数据发送到应用onChange,而不是应用程序向设备询问给定频率的数据。
目前我的应用设置包含设备通知。这意味着GattServer正在发送数据,然后应用程序仅接收数据更改通知。问题在于传感器有2个通道,需要250 /秒的数据量。即使没有变化。
服务器可能会也可能不会以该速率发送。对于一个通道,我得到约25秒读取,对于另一个通道,我得到每秒4次读取。由于这是使用通知设置的,只通知onChange我怀疑应用程序正在完成它的设计目的。因此,由于没有足够的数据点,我们正考虑将这两个通道切换为轮询。
这对您有意义吗?这是否会打败低能耗甚至是低能耗芯片设计的整个设计?
答案 0 :(得分:1)
250/sec = 1 packet per 4ms
。
BLE的最小连接间隔为7.5ms
。主站和从站之间交换的所有数据必须在连接间隔内完成。即使可以在单个连接间隔内来回发送多个数据包,我也不知道如何让Android将多个消息压缩到一个连接间隔中。这样,您无法确保250个民意调查的时间间隔相等。
我认为Android根本不允许您以该频率发送消息。发送网络数据包通常是阻塞操作。因此,当tx忙时,操作系统会阻止您的应用。最后,你可能得到的只是每秒数十条消息。