【问题标题】:Read temperature of a 1-wire device connected to a HA7E读取连接到 HA7E 的 1-wire 设备的温度
【发布时间】:2012-06-01 08:15:26
【问题描述】:

我正在尝试通过向 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()

【问题讨论】:

  • 感谢您的回复。我的错误,我应该写 'W0144\r' 但修复后我仍然有问题。

标签: python


【解决方案1】:

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

>>> ord('\r')
13

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

>>> len('\r')
1
>>> len('/r')
2
>>> list('/r')
['/', 'r']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2020-06-09
    • 2023-03-12
    相关资源
    最近更新 更多