嗨对话框,
在我最近的项目中,我有一个100字节的特征,我想通过通知将其发送到客户端。
在客户端,除非我更改MTU大小,否则我只能收到20个字节。我搜索了我的BLE书(蓝牙低能量开发人员的手册)并且没有找到谈论通知数据大小的任何地方都与MTU大小相关。
我有点想知道通知数据大小与MTU大小之间的关系(对我而言,我们似乎只能通知MTU大小 - 3个字节的数据)?是BLE堆栈约束或它是对话框约束。
非常感谢,
根据Bluetooth 4.0规范Vol 3部分F 3.4.7.1“如果属性值长于(ATT_MTU-3)八位字节,则只能在通知中发送此属性值的第一个(ATT_MTU-3)八位字节。”
所以你是正确的。最大大小为MTU大小 - 3个字节。
嗨Joacimwe,
非常感谢信息。我在规范中注意到。,第3.4.4.5节“readblob请求”,我们可以找到“读取blob请求用于请求服务器在给定偏移量上读取属性的值,并返回特定部分读BLOB响应中的值。“。这是否可以使用对话框的SDK读取特征的一部分?
非常感谢
是的DA14580支持传入的读取BLOB请求。它将自动响应特征值的相应部分。
您使用的是什么样的设备?智能手机,计算机或其他DA14580?如果您可以发出自定义读取BLOB请求,或不依赖于Central。通常,SDK提供了读取整个特征的方法,然后它将发出多个读取BLOB请求以检索整个特征值。
目前,我使用了一对DA14580作为服务器和客户端。
我想拥有一个长的特征(例如,长度为255字节)。每次服务器都希望向客户端发送一些数据,首先发送20个字节的通知。在客户端,它可以得到一个“长度“从这20个字节通知并只读”长度“字节的特性。
例如服务器向客户发送通知,并告诉它从中读取50个字节的数据。然后,代替读取整个特征,客户端使用readblob命令读取255字节特性的50个字节。那可能吗?
非常感谢。
您不能只使用通知并发送要发送的数据?只是确保你有一个大的mtu。然后您可以例如发送50个字节。
我们可以将MTU大小增加到50,但数据包可能是任何大小从8到255.因此,如果我们可以根据在通知包中发送的长度信息只能动态地读取部分特征,那将是更好的。
根据Bluetooth 4.0规范Vol 3部分F 3.4.7.1“如果属性值长于(ATT_MTU-3)八位字节,则只能在通知中发送此属性值的第一个(ATT_MTU-3)八位字节。”
所以你是正确的。最大大小为MTU大小 - 3个字节。
嗨Joacimwe,
非常感谢信息。我在规范中注意到。,第3.4.4.5节“readblob请求”,我们可以找到“读取blob请求用于请求服务器在给定偏移量上读取属性的值,并返回特定部分读BLOB响应中的值。“。这是否可以使用对话框的SDK读取特征的一部分?
非常感谢
是的DA14580支持传入的读取BLOB请求。它将自动响应特征值的相应部分。
您使用的是什么样的设备?智能手机,计算机或其他DA14580?如果您可以发出自定义读取BLOB请求,或不依赖于Central。通常,SDK提供了读取整个特征的方法,然后它将发出多个读取BLOB请求以检索整个特征值。
嗨Joacimwe,
目前,我使用了一对DA14580作为服务器和客户端。
我想拥有一个长的特征(例如,长度为255字节)。每次服务器都希望向客户端发送一些数据,首先发送20个字节的通知。在客户端,它可以得到一个“
长度“从这20个字节通知并只读”长度“字节的特性。
例如服务器向客户发送通知,并告诉它从中读取50个字节的数据。然后,代替读取整个特征,客户端使用readblob命令读取255字节特性的50个字节。那可能吗?
非常感谢。
您不能只使用通知并发送要发送的数据?只是确保你有一个大的mtu。然后您可以例如发送50个字节。
我们可以将MTU大小增加到50,但数据包可能是任何大小从8到255.因此,如果我们可以根据在通知包中发送的长度信息只能动态地读取部分特征,那将是更好的。