pySerial和读取二进制数据

时间:2011-10-03 21:40:57

标签: pyserial

当我与之通信的设备发送二进制数据时,我可以恢复大部分数据。但是,似乎总会丢失一些字节,替换为非标准字符。例如,一个单独的输出如下所示:

\xc4\xa5\x06\x00.\xb3\x01\x01\x02\x00\x00\x00=\xa9

句点和等号应该是十六进制格式的传统字节(我在另一个应用程序中确认了这一点)。其他时候我得到其他奇怪的字符,如')'或's'。这些字符通常出现在完全相同的位置(随着我传递给设备的命令而变化)。

如何解决此问题?

2 个答案:

答案 0 :(得分:11)

您是否使用类似的内容显示输出?:

print output

如果您的某些字节恰好与可打印字符相对应,它们将显示为字符。试试这个:

print output.encode('hex')

查看所有字节的十六进制值。

答案 1 :(得分:1)

起初我喜欢@RichieHindle的回答,但是当我尝试它时,十六进制字节全部聚集在一起。 为了获得更友好的输出,我使用

print ' '.join(map(lambda x:x.encode('hex'),output))