我想要一种简单,轻量级的方式让两个基本的8位MCU通过8位UART连接相互通信,将两个ASCII字符作为8位值发送,将二进制数据作为8位值发送
我宁愿不重新发明轮子,所以我想知道一些ASCII实现是否会起作用,以某种标准方式使用ASCII控制字符。
问题:要么我没有正确理解它,要么它无法做我想做的事。
关于控制字符的维基百科页面说明可以像这样发送数据包:
但是如果有效载荷是包含两个相当于DLE和ETX的连续字节的二进制数据怎么办?这些字节应该如何转义?
链接可能被破坏并重新建立,因此接收MCU应该能够开始接收中间数据包,并且有一种简单的方法来告知下一个数据包何时开始,因此它可以忽略数据直到结束那个部分包。
错误检查将在更高级别进行,以确保收到的数据包有效 - 除非ASCII标准也可以解决此问题
答案 0 :(得分:0)
由于要与文本消息一起传输二进制数据,因此确实必须确保接收器不会将控制字节与有效载荷内容混淆。一种方法是对有效载荷数据进行编码,以使任何特殊字符都不会出现在输出中。如果开销不是问题,那么像Base16这样的最简单的编码就足够了。否则,您可能需要查看专门设计用于从编码数据中删除某些字符的escapeless编码。