所以我正在编写一些代码,用于与 pySerial 的硬件进行通信,我使用的是 python 2.7.7,一切正常,我切换到 python 3.4,因为我在安装 GUI“框架”时遇到问题。
所以我遇到的问题是我必须对发送到 COM 端口的字符串进行编码和解码,在 Python 2.7.7 上我不需要这样做
这是字符串,我知道十六进制值 81 不是 ascii,但我需要按照 python 2.7.7 中发送的方式发送字符串。
str = '\x1B\x81'
当我打印 str 时,我得到这个:
b'\x1b\xc2\x81'
我假设\xc2 是我的\x81 的一些特殊 unicode 字符,我知道\x 是十六进制的转义字符,我不太确定 Python 2.7.7 如何将字符串写入串行端口。
这行:
ser.write('\x1B\x81')
发送二进制到串口?像这样:
ser.write('0001 1011 1000 0001')
如果我发送这个:
ser.write('\x1B\x81')
对于使用 Python 3 的硬件,硬件只是挂起并且不执行任何操作,但在 Python 2.7 中它可以工作。
最佳答案
Python 2.7 中的值 obj = '\x1B\x81'
在 Python 3 中将是 obj = b'\x1B\x81'
。
Python 3 中的值 '\x1B\x81'
是文本,因此您不会将二进制发送到硬件(这就是 Python 2 中所谓的 Unicode 字符串)。
关于python - 在 Python 3 中编码字符串而不使用 unicode\xc2 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884543/