1

我试图通过向 1-wire 适配器发出 ascii 命令来读取 1-wire 设备的温度。问题是 ser.write('W0144') 需要回车,但由于某种原因代码没有发送它。命令 ser.read(32) 返回 A69000001CFD7E328 时应该返回 44(来自 HA7E ascii 命令/手册。如果我在 Windows XP 超级终端中输入两个 ser.write 命令(不带 /r),它工作正常。

我已经参加了一周(是的,我是新手),我很困惑。我尝试了不同的超时和 time.sleeps 但没有快乐。任何人都可以提出建议吗?

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()
4

1 回答 1

2

python中的转义代码需要一个反斜杠:

>>> ord('\r')
13

您正在发送两个字符,一个“/”和字母“r”:

>>> len('\r')
1
>>> len('/r')
2
>>> list('/r')
['/', 'r']
于 2012-05-25T18:43:40.150 回答