Python通过串口发送十六进制数据

时间:2015-03-24 11:58:25

标签: python regex serial-port

我目前正致力于通过串口与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

任何线索?

0 个答案:

没有答案