私はドキュメントを読みましたが、これに対する正解を見つけることができないようです。コンピューターに接続されているモデムが使用しているすべてのCOMポートのリストがあります。このリストから、それを開いてコマンドを送信し、何か返事があった場合は別のリストに追加しようとします。 pyserialの読み取り関数と書き込み関数を適切に使用しているかどうかは、完全にはわかりません。
i=0
for modem in PortList:
for port in modem:
try:
ser = serial.Serial(port, 9600, timeout=1)
ser.close()
ser.open()
ser.write("ATI")
time.sleep(3)
print ser.read(64)
if ser.read(64) is not '':
print port
except serial.SerialException:
continue
i+=1
Ser.read()から何も取得していません。常に空の文字列が表示されます。
ser.read(64)
はser.read(size=64)
である必要があります。 ser.readは、位置ではなくキーワード引数を使用します。
また、ポートから2回読み取っています。あなたがおそらくやりたいことはこれです:
i=0
for modem in PortList:
for port in modem:
try:
ser = serial.Serial(port, 9600, timeout=1)
ser.close()
ser.open()
ser.write("ATI")
time.sleep(3)
read_val = ser.read(size=64)
print read_val
if read_val is not '':
print port
except serial.SerialException:
continue
i+=1
pythonで動作し、他の誰かが必要とする場合に備えてrs232を読み取るコード
ser = serial.Serial('/dev/tty.usbserial', 9600, timeout=0.5)
ser.write('*99C\r\n')
time.sleep(0.1)
ser.close()