1

1 ワイヤ アダプタに ascii コマンドを発行して、1 ワイヤ デバイスの温度を読み取ろうとしています。問題は、ser.write('W0144') に改行が必要ですが、何らかの理由でコードがそれを送信していないことです。コマンド ser.read(32) は、44 を返すべきときに A69000001CFD7E328 を返します (HA7E ascii コマンド/マニュアルから)。 Windows XP ハイパー ターミナルで 2 つの ser.write コマンド (/r なし) を入力すると、正常に動作します。

私はこれを1週間続けています(はい、私は初心者です)、私は困惑しています. さまざまなタイムアウトと 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」の 2 つの文字を送信しています。

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