如何在二进制数据的情况下发送xon / xoff?

时间:2013-10-22 13:38:26

标签: uart flow-control

在软件数据流控制的情况下,我们使用xon和xoff(0x11和0x13)标准字符来暂停和恢复传输。但是,如果我们想发送包含与xon和xoff的ascii值匹配的字符的二进制数据,我们应该使用什么字符集来发送xon或xoff?

3 个答案:

答案 0 :(得分:1)

我简单的解决方案是使用base64编码,你可以在python中使用它。

base64.b64encode(yourData) - encode
base64.b64decode(yourData) - decode, 

它增加了额外的开销,但发送的数据采用简单的字符格式。甚至HDLC也使用了base64,所以我想这对你来说是个选择。

答案 1 :(得分:0)

使用软件握手可以排除二进制数据的发送。

没有做一些深奥的事情(发送9位/字节而不是8 - 非常非标准),256个不同的二进制数据中的2个和选择用作XON / XOFF的2个代码之间没有区别。

有各种协议试图解决这个问题。它们都编码"二进制数据"有效但不是一对一的映射。可以使用转义码,压缩,数据包等。当然,通信的两端都需要知道如何编码/解码。这通常会限制您的选择。如果有疑问,请从二进制到文本编码开始,因为它往往更容易调试。 http://en.wikipedia.org/wiki/Binary-to-text_encoding

答案 2 :(得分:0)

要能够使用这两个特殊字符作为控制字符,必须确保它们不会出现在有效载荷数据中。一种方法是使用不包含特殊字符的精简字母对有效载荷进行编码。并行答案中提到的二进制到文本编码可以完成这项工作,但是如果不依赖于输入字节分布的低开销至关重要,那么escapeless编码可能会有所帮助。