1

我使用以下十六进制格式写入我的设备pyserial

ser.write("\x01\x03\x00\x00\x00\x0A\xC5\xCD")
data = ser.readline()
print data

输出是:

Q,f�    ��
Q.f�    �   
Q8f�    �B
Q5f�    �

我的问题是如何以十六进制格式显示输出,例如

01 03 14 50 AD 00 00 00 00 00 00 00 00 00 00 66 DC 00 00 00 09 00 00 A8 42

另外,如何转换为十进制:

50AD = 20653
66DC = 26332
4

2 回答 2

2

查看十六进制:

print ' '.join('%2x' % ord(c) for c in data)

我不太确定您要查看小数点做什么。如果您尝试将数据拆分为 16 位块并将它们显示为十进制,那么这应该可以解决问题:

print [256*ord(c) + ord(d) for c, d in zip(data[::2], data[1::2])]
于 2012-09-20T18:29:51.447 回答
1

我猜你有两个问题:

  1. Python 脚本使用的波特率与终端中设置的波特率不匹配。在发送一些仅用于测试的可打印 ASCII 值时尝试让它们正确。
  2. 如果您想以十六进制(而不是 ASCII 字符)的形式查看数据,请查看是否可以更改终端中的某些设置。
于 2012-09-20T09:23:05.650 回答