我不确定这在电子堆栈交换上是否更好。
我见过一些类似的问题,但是在4.2天前,可能有超过20字节的字符,但是现在这些问题已经过时了。
对于任何不知道的人,从ble 4.2开始,您可以在一个特征中发送远远超过20个字节。所以,如果你没有遇到这个问题,我已经在一年多的时间里成功地在ios和一个硅实验室设备之间传输了240个字节的特性。
我最近安装了一个北欧嵌入式设备,并使用bluez堆栈在北欧设备和运行在linux上的qt应用程序之间传输数据。它可以很好地传输20字节的特性。
所以,我把北欧的特性增加到了40字节,但是qt根本不玩它。
我相信北欧的情况是正确的,因为如果我使用一个小小的android应用程序并查询40字节的特性,它将读取所有40字节。这让我觉得问题出在笔记本电脑端。
我有各种各样的未知数:
我的笔记本电脑真的是BT4.2吗?很难知道Linux称它为未知设备,它的USB供应商和类型号告诉我它是Intel设备,但ID似乎给了我多种可能性。
hciconfig告诉我,我运行的是hci版本4.2和lmp版本4.2。对我来说,这意味着更大的特征应该起作用。
Linux本身能处理大于20字节的特性吗?
qt能处理大于20字节的特性吗?
我用qt 5.9.4工具包运行mageia 6和qt creator 4.2.1。
我没有足够新的Windows或iOS设备来适应更大的特性。而且,当谈到乐的时候,窗户也有点疼…
编辑:
当btmon接收到一个40字节的chatacteric时,它会给出:
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
每次noridic发送消息时,messno都会递增。它被截断为xxxx这是一个很长的
所以,在我看来,这意味着它要么被bt堆栈截断,要么假设这就是qt应用正在消化的内容。
最佳答案
你应该增加北欧设备的mtu大小。这与qt无关。
关于linux - 蓝牙低功耗[4.2及更高版本]-在Linux上使用Qt时,大于20个字节的特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56476136/