嗨,对话框中,
在我最近的项目中,我有一个100字节的特征,我想通过通知将其发送到客户端。
在客户端,除非更改MTU大小,否则只能接收20个字节。我搜索了我的BLE书(Bluetooth Low Energy The Developer’s Handbook),没有找到任何关于通知数据大小与MTU大小相关的地方。
我有点想知道通知数据大小和MTU大小之间的关系(对我来说,似乎我们只能通知MTU大小- 3字节的数据)?这是BLE堆栈约束还是Dialog约束。
非常感谢,
设备:
根据蓝牙4.0规范Vol 3 Part F 3.4.7.1“如果属性值大于(ATT_MTU-3)字节,则只能在通知中发送该属性值的第一个字节(ATT_MTU-3)。”
所以你是对的。最大大小是MTU大小- 3字节。
嗨Joacimwe,
非常感谢你提供的信息。我注意到在规范3.4.4.5“Read Blob Request”章节中,我们可以发现“the Read Blob Request is used to Request server to Read the value of an attribute at a given offset and return a specific part of the value in a Read Blob Response.”。使用Dialog的SDK读取特性的一部分是可能的吗?
非常感谢
是的,da14580支持传入的读blob请求。它会自动响应对应部分的特征值。
你用什么设备作为中心?智能手机、电脑还是另一台da14580?是否可以发出自定义的Read blob请求取决于中央。通常,sdk提供读取整个特征的方法,然后它会发出多个读取blob请求来检索整个特征值。
嗨Joacimwe,
目前,我使用一对DA14580作为服务器和客户端。
我想有一个长的特点。255个字节长)。每次服务器向客户端发送数据时,首先发送一个20字节的通知。在客户端,它可以得到一个“
长度”从这个20字节通知和只读“长度”字节的数据的特征。
例如,服务器发送一个通知给客户端,并告诉它从它读取50字节的数据。然后,客户端不是读取整个特征,而是使用read blob命令读取255字节特征中的50个字节。这有可能吗?
非常感谢。
难道不能直接使用通知并发送想要发送的数据吗?只要确保你有一个大的MTU。然后你可以发送50个字节。
我们可以将MTU的大小增加到50,但是数据包的大小可以从8到255。因此,如果我们能够根据在通知包中发送的长度信息动态地读取部分特征,那将会更好。