我目前正致力于通过串口与FPGA通信的小型接口。它工作得很好,但我得到的数据是一个字符串,例如' 00CCEE'必须将其解释为十六进制值,因此00CCEE为0x00CCEE。
我在这里阅读(How to build and send hex commands to TV),您可以简单地将字符串重写为十六进制,如下所示: \ X00 \ XCC \ XEE
我用正则表达式做了这个:
plainText = re.sub("(.{2})", "\\x\\1", plainText, 0, re.DOTALL)
现在我将此字符串发送到设备:
\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF
这应该是16个字节,但是ser.write()返回64.这意味着它写了64个字节(搅拌中的每个字符作为一个字节),而不是将其解释为十六进制值。
这是相应的代码
plainText = re.sub("(.{2})", "\\x\\1", plainText, 0, re.DOTALL)
print ser.isOpen()
print plainText
AmountPlain = ser.write(plainText)
print AmountPlain
然后输出
\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF
True
64
任何线索?