低功耗蓝牙[4.2及更高版本]-在Linux上使用Qt时,特征大于20字节

时间:2019-06-06 10:54:05

标签: linux qt bluetooth-lowenergy

我不确定在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字节。这使我认为问题出在笔记本电脑端。

我有很多未知数:

  1. 我的笔记本电脑真的是BT4.2吗?很难知道,因为Linux称它为未知设备,其USB供应商和型号告诉我这是Intel设备,但是ID似乎给了我多种可能性。

hciconfig告诉我我正在运行HCI 4.2版和LMP 4.2版。对我而言,这表明较大的特征应该起作用。

  1. Linux本身可以应对大于20个字节的特征吗?

  2. 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堆栈截断。

1 个答案:

答案 0 :(得分:1)

您应该从北欧设备中增加MTU大小。与Qt无关。