我的客户正在使用蓝牙低能耗加密狗构建一个应用程序。此单元进行连续测量。它们最初与BLE一起使用是为了节能。由于此设备在记录数据时将一次运行约8小时,因此他们将需要它来运行完整的8小时。
他们想让我设置他们的android应用程序,让我在4个不同的频道上以高达250/秒的频率轮询设备。对我来说,这击败了低能量方面。我非常肯定,BLE的设计考虑到了通知,应该将数据发送到应用程序onChange,而不是应用程序以给定的频率向设备请求数据。
目前,我已经设置了设备通知的应用程序。这意味着GattServer正在发送数据,然后应用程序只接收数据更改的通知。这样做的问题是,传感器有2个通道,需要250/秒的数据量。即使没有变化。
服务器可能以该速率发送,也可能不以该速率发送。对于一个通道,我得到了大约25个读数,而对于另一个通道,我得到了大约每秒4个读数。由于这一切都是通过通知来设置的,只通知onChange,我怀疑这个应用程序正在做它所设计的事情。因此,由于没有足够的数据点,我们正在考虑将这两个通道切换为轮询。
这对你有意义吗?这不会破坏低能耗甚至整个低能耗芯片设计的设计吗?
发布于 2014-08-21 09:36:15
250/sec = 1 packet per 4ms。
BLE的最小连接间隔是7.5ms。主机和从机之间的所有数据交换必须在连接间隔内完成。即使可以在单个连接间隔内来回发送多个数据包,我也不知道如何让Android将多个消息压缩到一个连接间隔中。这样,您就无法确保250个投票在时间上均匀分布。
我认为Android根本不会让你以这种频率发送消息。发送网络数据包通常是阻塞操作。因此,当tx繁忙时,您的应用程序将被操作系统阻止。最后,你可能得到的仅仅是每秒几十条消息。
https://stackoverflow.com/questions/25304441
复制相似问题