1

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

4

3 回答 3

1

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

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

它增加了额外的开销,但发送的数据是简单的字符格式。甚至 HDLC 也使用 base64,所以我想这将是您的一种选择。

于 2014-02-17T21:26:25.410 回答
0

使用软件握手会阻止二进制数据的发送。

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

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

于 2013-11-06T15:58:46.067 回答
0

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

于 2019-06-04T19:55:47.067 回答