我使用Bluetooth Low Energy将处于中央模式的设备连接到外围模式下的多个设备。外围设备需要向中央设备发送4个字符串(所有少于20个字符)。
创建4个特性并让外围设备向中心发出4个写请求是否更好?或者更好的是拥有1个特性并将所有4个字符串组合成一个JSON对象,以便只发出1个写请求?
简单地说 - 在这种情况下,多次使用小块数据或者发送一次大量数据会更好吗?
哪种方法更适合允许尽可能多的外围设备连接到中心?这有关系吗?
感谢。
答案 0 :(得分:4)
由于你有四个独立的字符串,我建议你也有四个特征。 BLE中的数据包通常约为20个字节(23个字节减去一些ATT开销),因此您的数据适合单个数据包。当你执行read long(在一个long属性上)时,在你要求下一个数据块之前,你将获得一个读取响应数据包。您最终可能会使用相同数量的数据包来回读取数据。显然,发现四个与仅一个特征需要一些额外的数据包,但没有什么可担心的。
简单地说 - 在这种情况下,小块数据是否更好 多次或发送一大块数据一次?
仅当您的数据字符串远小于20个字节时。
您谈到让外围设备将其数据写入中央(可能是在连接后)。通常这是以另一种方式完成的,其中中心首先发现外围数据库(当然连接后),然后读取它感兴趣的数据。
您还可以考虑使用适应症,而不是阅读。这对于记录数据的外围传感器来说是典型的。中央连接,发现数据库,然后启用给定属性的通知。然后,外设将发送每个数据样本(可能以某种方式打包)并带有指示,直到所有本地记录的数据都已传输完毕。通过指示,每次传输都被确认,因此外围设备可以在本地删除数据之前等待确认,确保您不会丢失记录样本。
哪种方法对于允许尽可能多的外围设备更好 尽可能连接到中心?这有关系吗?
组织和传输数据的方式与中心可以连接的外围设备数量无关。但是如果外围设备写入中央数据库,则需要确保它们不写入相同的句柄。最好做一个由中央发起的阅读或指示/确认。