Bluetooth Low Energy [4.2 и более поздние версии] - характеристики больше 20 байт с Qt в Linux - PullRequest
1 голос
/ 06 июня 2019

Я не уверен, что было бы лучше на Electronics Stack Exchange.

Я видел несколько вопросов, подобных этому, но до BLE 4.2 дня, прежде чем это было возможноиметь символы больше 20 байтов, но эти вопросы уже устарели.

Всем, кто не в курсе, начиная с BLE 4.2 и далее, вы смогли отправить более 20 байтов в характеристике.Итак, если вы не сталкивались с этим, я успешно передавал характеристики в 240 нечетных байтов между iOS и устройством Silicon Labs уже более года.

Недавно я настроил встроенное устройство Nordic и настроил графический интерфейс Qt для передачи данных между устройством Nordic и приложением Qt, работающим в Linux, с использованием стека Bluez.Он будет передавать 20-байтовые характеристики просто отлично.

Итак, я увеличил характеристики Nordic до 40 байт, но Qt с ним совсем не играет.

Я уверен, что на Северном конце все в порядке, потому что, если я использую небольшое приложение для Android и запрашиваю 40-байтовую характеристику, она читает все 40 байт.Это заставляет меня думать, что проблема на ноутбуке.

У меня есть разные неизвестные:

  1. Мой ноутбук действительно BT4.2.Трудно понять, поскольку Linux называет это неизвестным устройством, а его производитель USB и номер типа говорят мне, что это устройство Intel, но идентификаторы, кажется, дают мне множество возможностей.

hciconfig говорит мне, что я использую HCI версии 4.2 и LMP версии 4.2.Это, для меня, предполагает, что большие характеристики должны работать.

Может ли сам Linux справиться с характеристиками, превышающими 20 байт?

Может ли Qt справиться с характеристиками, превышающими 20 байтов?

Я использую Mageia 6 и Qt Creator 4.2.1 с комплектом Qt 5.9.4.

У меня нет устройства 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 отправляет сообщение.Это усекается до хххх. Это длинный

Итак, это наводит меня на мысль, что это усекается либо стеком BT, при условии, что это то, что переваривает приложение Qt.

1 Ответ

1 голос
/ 06 июня 2019

Вы должны увеличить размер MTU от северного устройства.Это не имеет ничего общего с Qt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...