Как использовать nanopb поверх связи модема gsm, где указанные c символы, такие как CTRL + Z, используются в качестве завершения сообщения в командах AT? - PullRequest
0 голосов
/ 22 января 2020

При поиске опций сериализации-десериализации я наткнулся на nanopb, предназначенный для 32-битных контроллеров, которые используют буферы протокола Google.

Когда мне стало любопытно попробовать это для связи mqtt по модему gsm, я Я понял, что нет никакого способа, которым я мог бы позволить механизму кодирования nanopb знать, как обрабатывать escape-символы / специальные символы, такие как CTRL + Z, потому что все они кодируются в шестнадцатеричном формате. (Например, CTRL + Z в шестнадцатеричном формате будет 0x1A), а модемы gsm используют 0x1A в качестве символа завершения сообщения. Следовательно, при отправке закодированного сообщения nanopb через AT-команды модему модем интерпретирует закодированное сообщение, содержащее 0x1A, как CTRL + Z, чего не должно быть.

Возможно ли в этом случае использовать nanopb? Или я что-то не так делаю?

1 Ответ

2 голосов
/ 22 января 2020

Это очень распространенная проблема с модемами, которая будет применяться к любым двоичным данным. У всех модемов есть способ передачи двоичных данных, но метод может варьироваться в зависимости от модели модема.

Наиболее распространенные методы:

  • Использование двух UART, один для команд и один для данных .
  • Переключение между командой и режимом данных с использованием AT-команд и escape-последовательности. Обычно с помощью ATD или ATO для переключения в режим данных, а затем пауза- +++ -pause для возврата в командный режим. Использование паузы в escape-последовательности предотвращает возникновение проблем из-за +++ в других данных, но замедляет передачу.
  • Использование отдельного сигнального провода (обычно DTR) для переключения между командой и данными mode.
  • Экранирование двоичных символов с префиксом, таким как DLE = 0x10, который затем изменяет значение следующих символов.

Скорее всего, ваш модем поддерживает хотя бы один и, возможно, несколько из этих методов, но вам необходимо проверить его руководство о том, как его настроить.

...