Текст против двоичных протоколов относительно надежности - PullRequest
0 голосов
/ 12 июля 2019

Контекст

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

Я читал о текстовом протоколе, который используется, когда человеку нужно прочитать или отправить данные. Этот тип протокола выглядит очень надежным, поскольку начальный байт и конечный байт разграничивают передаваемый кадр. Эти байты являются управляющими байтами (0x01 и 0x04) и не могут использоваться в полезной нагрузке, которая состоит из буквенно-цифровых символов ascii плюс некоторые символы и пробел (байты от 0x20 до 0x7e).

Я также читал о бинарном протоколе, который используется для передачи с машины на машину. Нет человека, который должен читать или отправлять данные. Этот протокол позволяет отправлять тот же объем данных, что и в текстовом протоколе, с меньшим количеством байтов. Проблема заключается в том, что в полезной нагрузке могут использоваться любые байты, поэтому может быть проблематично использовать начальный и конечный байты. Мы можем избежать контрольных байтов, но я думаю, что это все еще проблема. Например, если я экранирую стартовый байт с 0x10 0x01, и у меня также есть последовательность 0x10 0x01 в моей полезной нагрузке, я не могу различить, является ли это началом кадра или просто данными.

Вопрос

Я немного растерялся. Людям не нужно читать или отправлять данные с / на мои устройства, поэтому я должен использовать двоичный протокол, но, как я объяснил, я думаю, что он менее надежен.

Есть ли способ получить ту же надежность, что и текстовый протокол с двоичным протоколом?

Если это полезно, структура протокола выглядит следующим образом:

| начальный байт | ОП код | длина | полезная нагрузка | CRC | стоп-байт |

...