Разбор последовательного сообщения различной длины - PullRequest
0 голосов
/ 27 сентября 2018

Я не делегирую это кому-либо как работу, но просто хотел получить некоторую идею / помощь в реализации синтаксического анализатора для протокола сообщений, над которым я работаю.У меня есть сообщение, которое отправляется через последовательный COM-порт, так что в основном простой набор байтов только.

+--------------------------------------------------------------+ 
| MSG HEADER (5 Bytes) | ----- DATA BYTES (varied count) ----- |
+--------------------------------------------------------------+

Это сообщение имеет фиксированные начальные пять байтов для заголовка , который обозначает:

Байт-1: Фиксированный символ заголовка 0x81

Байт-2: Фиксированный символ заголовка 0xFF

Байт-3: Количество слов данных

Байт-4: ID сообщения

Байт-5: Контрольная сумма заголовка

, а затем после этого мы получаем байтов данных .Проблема заключается в том, что байтов данных могут иметь различное количество, но количество этих байтов упоминается в заголовке сообщения , который является третьим байтом.Как я могу написать эффективный парсер, который должен уметь:

  1. Собирать байты 3, 4 и 5 заголовка сообщения отдельно в переменных
  2. Затем на основе подсчета данных, т.е.байт 3 заголовка сообщения, он опрашивает последовательный порт до тех пор, пока не будет получено столько байтов
  3. После получения всех байтов, т. е. при получении полного сообщения, следует обозначать ЗАВЕРШЕНИЕ (возможно, просто указание флага)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...