python,pyserial读取回复数据

时间:2012-09-20 09:10:08

标签: python pyserial

我使用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

2 个答案:

答案 0 :(得分: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])]

答案 1 :(得分:1)

我猜你有两个问题:

  1. Python脚本使用的波特率与终端设置的波特率不匹配。尝试在发送一些可打印的ASCII值时将其正确用于测试。
  2. 如果您想将数据视为十六进制(而不是ASCII字符),请查看您是否可以更改终端中的某些设置。