串口通信协议设计中一个注意的小问题

最近接触到一个文档,其中串口通信的通信协议中用0x040x06转义0x02,

我一直不理解这样的动机是什么。因为以前见过的都是类似0x100x02来转义0x02

刚才突然想通了。果然很妙。

后者不科学,因为切分数据帧要用状态机不但程序复杂而且占用计算力,

同时还增加了通信干扰扩散的概率,干扰的收敛更慢。所以前者的设计是十分高明。

使用前者可以有以下好处:如果在数据中看到0x02可以直接判断数据帧不必考虑转义的可能性。这样程序明显简化处理速度也能提升。

另外,干扰是随机发生的,如果对于0x100x02来说,就有2个字节准备接受干扰,如果是0x10被破坏,还可以造成误切数据帧的效果,造成损失扩大化。

所以综合看来,前者的设计非常科学的。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页