Как получить кредиты на чтение протокола сервера ввода-вывода Telit - PullRequest
0 голосов
/ 06 мая 2020

Я использую подключение терминального ввода-вывода к модулю Telit BLE с Xamarin. (см. документацию по протоколу сервера ввода-вывода TelIt: https://www.telit.com/wp-content/uploads/2017/09/TIO_Implementation_Guide_r6.pdf)

Большинство вещей работает нормально. (см. также этот пост: Как создать соединение Терминального ввода-вывода с модулем Telit BLE? )

НО на самом деле у меня проблема:

Если я ожидайте результата от сервера ввода-вывода с более чем 20 байтами (2 или более 20 байтовых блоков), мое уведомление о результате кажется неправильным. Я разделяю команды длиной более 20 байт на блоки по 20 байт, и меня вызывают в методе чтения характеристик чтения для каждого 20-байтового ответа (2x для 22-байтового ответа). Но ответы с более чем одним 20-байтовым блоком кажутся неправильными. Иногда я получаю последние 2 байта второго блока за 10 раз до того, как блоки ответа получат в правильном порядке. Иногда я получаю четыре 20-байтовых блока, но все они равны.

Для ответов на команды меньше 20 байт все работает правильно.

Я думаю, проблема в доступных кредитах для чтения из сервер. Но я не получаю никакого события обновления значения, запускаемого для получения информации, если у сервера достаточно кредитов:

На странице 15 документации TelIt, §5.2 написано: «Клиент терминального ввода-вывода получает укажите c количество кредитов UART от сервера терминального ввода-вывода с помощью указаний в характеристиках передачи UART кредитов c (см. 7.4). *? Как я могу получить информацию о количестве доступных кредитов на сервере ввода-вывода TelIt? Я не получаю никаких обновлений из характеристик чтения, кроме первого вызова во время инициализации характеристик.

Также чтение значения характеристик после отправки и получения данных с сервера и на сервер НЕ изменило значение.

Лучшее

Марко

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