我试图通过向1线适配器发出ascii命令来读取1线设备的温度。问题是ser.write('W0144')需要回车但代码不是出于某种原因发送它。命令ser.read(32)返回A69000001CFD7E328应该返回44(来自HA7E ascii命令/ manual。如果我在Windows XP超级终端中输入两个ser.write命令(没有/ r),它可以正常工作。
我一直在这一周(是的,我是新手),我很难过。我尝试过不同的超时和时间。但是没有快乐。有人可以提出建议吗?
import serial
import time
ser = serial.Serial(port = 'COM1', baudrate=9600, bytesize=8, parity=serial.PARITY_NONE, stopbits=1, timeout=0)
#show the port is open
print ser.isOpen()
ser.write('A69000001CFD7E328')
time.sleep(1)
ser.write('WO144/r')
ser.read(32)
ser.close()
答案 0 :(得分:2)
python中的转义码需要反斜杠:
>>> ord('\r')
13
您要发送两个字符,一个'/'和字母'r':
>>> len('\r')
1
>>> len('/r')
2
>>> list('/r')
['/', 'r']