3.转义字符识帧识别机制。
最典型的就是SLIP协议(Serial Line Internet Protocol,串行线路网际协议),可能很多人并不熟悉,但是它确实很有参考性,原理就是定义0xC0为帧头帧尾识别标志,数据中如果出现了0xC0,就发送两个字节的数据0xDB,0xDC代替,数据中如果出现了0xDB,就发两个字节的数据0xDB,0xDD代替。这是一种牺牲时间换取性能的做法,就是以发送,0xC0和0xDB需要发送两个字符为代价,换取了一个独立于数据00-FF之外的一个帧识别标志0xC0。这样,当数据大量发送是,损失的性能不大大,因为数据中0xC0和0xDB出现的概率通常并不多,但却实现了有效的帧识别。
作为转义字符的一个特例,一个极端,就是ascii码格式的数据通讯,相当于所有的数据都要转义,每一个字节数据都要分成两个ascii码传送,效率变为原来的一半,但是换来的优势是,有大量的ascmii码可以用来做帧头、帧尾甚至其他特殊功能定义。
常见的有modbus ascii 格式和AT指令格式。
在所有的转义字符识别帧的机制了,帧识别完全不再依赖时间,所以可以有效的适用在各种串口透传设备下。但是,有时候,仍然会检测字符间隔时间,但这个只是用来检测物理链路是否被断开,而不是被用来识别帧的。