通知数据长度和MTU大小。

7个职位/ 0个新
最后发表
zwang308
离线
最后看到:4年6个月前
主
加入:2014-07-02福音14:15
通知数据长度和MTU大小。

嗨,对话框中,

在我最近的项目中,我有一个100字节的特征,我想通过通知将它发送到客户端。

在客户端,除非更改MTU大小,否则只能接收20字节。我搜索了我的BLE书(Bluetooth Low Energy The Developer’s Handbook),没有发现任何地方提到通知数据大小与MTU大小有关。

我有点想知道通知数据大小和MTU大小之间的关系(对我来说,似乎我们只能通知MTU大小- 3字节的数据)?这是一个BLE堆栈约束还是一个Dialog约束。

非常感谢,

设备:
Joacimwe
离线
最后看到:1年8个月前
大师
加入:2014-01-14 06:45
根据蓝牙4

根据蓝牙4.0规范Vol 3 Part F 3.4.7.1“如果属性值大于(ATT_MTU-3)字节,则只能在通知中发送该属性值的第一个(ATT_MTU-3)字节。”

所以你是对的。最大的大小是MTU大小- 3字节。

zwang308
离线
最后看到:4年6个月前
主
加入:2014-07-02福音14:15
嗨Joacimwe,

嗨Joacimwe,

非常感谢你提供的信息。我注意到在规范3.4.4.5节“读Blob请求”中,我们可以找到“读Blob请求是用来请求服务器在给定偏移量读取属性值的一部分,并在读Blob响应中返回值的特定部分”。使用Dialog的SDK是否可以读取部分特征?

非常感谢

Joacimwe
离线
最后看到:1年8个月前
大师
加入:2014-01-14 06:45
是的,da14580支持

是的,da14580支持传入读blob请求。它会自动响应特征值的相应部分。

你用什么样的设备作为中心?智能手机、电脑还是da14580?是否可以发出自定义的Read blob请求取决于中心。通常sdk提供了读取整个特征的方法,然后它会发出多个读取blob请求来检索整个特征值。

zwang308
离线
最后看到:4年6个月前
主
加入:2014-07-02福音14:15
嗨Joacimwe,

嗨Joacimwe,

目前我使用一对DA14580作为服务器和客户端。

我想要长一点的特征(例如:255个字节长)。每次服务器想要发送一些数据给客户端,它首先发送一个20字节的通知。在客户端,它可能会得到一个“
从这个20字节的通知和只读“长度”字节的数据的特征。

例如,服务器发送一个通知给客户端,并告诉它从它读取50字节的数据。然后,客户机使用read blob命令读取255个字节的特征中的50个字节,而不是读取整个特征。这有可能吗?

非常感谢。

Joacimwe
离线
最后看到:1年8个月前
大师
加入:2014-01-14 06:45
你不能直接用吗

你不能只使用通知并发送你想发送的数据吗?只要确保你有一个大的MTU。然后你可以发送50个字节。

zwang308
离线
最后看到:4年6个月前
主
加入:2014-07-02福音14:15
我们可以增加MTU

我们可以将MTU大小增加到50,但是数据包的大小可以从8到255。因此,如果我们可以根据我们在通知包中发送的长度信息动态地读取部分特征,那就更好了。