我有两个设备通过UART交换数据。我想最大化传输的可靠性。
我读到有关人类需要读取或发送数据时使用的文本协议的信息。这种类型的协议看起来非常可靠,因为起始字节和终止字节定界了传输的帧。这些字节是控制字节(0x01和0x04),不能在由ascii字母数字,一些符号和空格(字节0x20至0x7e)组成的有效载荷中使用。
我还阅读了有关用于从一台机器传输到另一台机器的二进制协议的信息。没有人需要读取或发送数据。该协议允许以更少的字节发送与文本协议相同数量的数据。问题在于有效载荷中可以使用任何字节,因此使用开始和停止字节可能会出现问题。我们可以转义控制字节,但我认为这仍然是一个问题。例如,如果我以0x10 0x01开头的字节转义,并且我的有效载荷中也有序列0x10 0x01,则我无法区分是帧的开始还是只是数据的开始。
我有点困惑。没有人需要从我的设备读取数据或向我的设备发送数据,因此我应该使用二进制协议,但是正如我所解释的,我认为它的可靠性较低。
有没有一种方法可以使文本协议具有与二进制协议相同的可靠性?
如果有用,则协议结构如下:
|起始字节|操作码|长度有效载荷CRC |停止字节|