首页 文章

蓝牙LE - 具有大负载或多负载小负载的单一特性?

提问于
浏览
1

我正在使用蓝牙低功耗将中央模式的设备连接到外围模式下的多个设备 . 外围设备需要向中央设备发送4个字符串(所有少于20个字符) .

创建4个特性并让外围设备向中央发出4个写请求是否更好?或者更好的是拥有1个特性并将所有4个字符串组合成一个JSON对象,以便只发出1个写请求?

简单地说 - 在这种情况下,多次使用小块数据或者发送一次更大的数据块会更好吗?

哪种方法可以更好地允许尽可能多的外围设备连接到中心?有关系吗?

谢谢 .

1 回答

  • 4

    由于你有四个单独的字符串,我建议你也有四个特征 . BLE中的数据包通常约为20个字节(23个字节减去一些ATT开销),因此您的数据适合单个数据包 . 当你执行read long(在一个long属性上)时,在你要求下一个数据块之前,你将获得一个读取响应数据包 . 您最终可能会使用相同数量的数据包来回读取数据 . 显然,发现四个与仅一个特征需要一些额外的数据包,但没有什么可担心的 .

    简单地说 - 在这种情况下,多次小块数据或者发送一次大量数据会更好吗?

    仅当您的数据字符串远小于20个字节时 .

    您谈到让外围设备将其数据写入中央(可能是在连接后) . 通常,这是以另一种方式完成的,其中中央首先发现外围数据库(当然连接后),然后读取它感兴趣的数据 .

    您还可以考虑使用指示而不是读取 . 这对于记录数据的外围传感器来说是典型的 . 中央连接,发现数据库,然后启用给定属性的通知 . 然后,外设将发送每个数据样本(可能以某种方式打包)并带有指示,直到所有本地记录的数据都已传输完毕 . 通过指示,每次传输都被确认,因此外围设备可以在本地删除数据之前等待确认,确保您不会丢失记录样本 .

    哪种方法可以更好地允许尽可能多的外围设备连接到中心?有关系吗?

    组织和传输数据的方式与中心可以连接的外围设备数量无关 . 但是如果外围设备写入中央数据库,则需要确保它们不写入相同的句柄 . 最好做中央发起的阅读或指示/确认 .

相关问题