我不确定在Electronic Stack Exchange上这样做会更好。
我已经看到了几个与此类似的问题,但在BLE 4.2天之前,可能有大于20个字节的字符,但是这些问题现在已经过时了。
对于任何不知道的人,从BLE 4.2起,您已经能够发送超过20个字节的特征。因此,如果您还没有碰到这一点,我已经成功地在iOS和Silicon Labs设备之间转移了240个奇数字节的特性已有一年多的时间了。
我最近安装了Nordic嵌入式设备,并打开了一个Qt GUI,以使用Bluez堆栈在Nordic设备和Linux上运行的Qt应用程序之间传输数据。它将传输20个字节的特性就好了。
因此,我将Nordic的特征增加到40个字节,但是Qt根本没有使用它。
我相信一切都将在北欧结束,因为如果我使用一个小的Android应用程序并查询40字节特征,它将读取所有40字节。这使我认为问题出在笔记本电脑端。
我有很多未知数:
hciconfig告诉我我正在运行HCI 4.2版和LMP 4.2版。对我而言,这表明较大的特征应该起作用。
Linux本身可以应对大于20个字节的特征吗?
Qt是否可以处理大于20个字节的特征?
我正在运行带有Qt 5.9.4套件的Mageia 6和Qt Creator 4.2.1。
我没有Windows或iOS设备,其LE不够新,无法满足更大的特性。另外,Windows在LE方面有点痛苦...
编辑:
btmon在收到40个字节的特征时给出此信息:
ACL Data RX: Handle 3585 flags 0x02 dlen 27 #1026 [hci0] 577.032058
ATT: Handle Value Notification (0x1b) len 22
Handle: 0x0010
Data: 35303120546869732069732061206c6f6e672063
这是从北欧发出的字符串:
"%1 This is a long characterstic %1",Messno,MessNo
MessNo每次Noridic发送消息时都会增加。这被截断为xxxx这是一个长
因此,这告诉我,假设Qt应用正在消化的情况下,它可能会被BT堆栈截断。
答案 0 :(得分:1)
您应该从北欧设备中增加MTU大小。与Qt无关。