私が作成しようとしている関数は、AT コマンドを担当するモデムのポートを見つけます。serial.Serial() のさまざまなインスタンスをさまざまなループに対してローカルにしようとしています。情報を得るために見つけたドキュメントを調べましたが、見つけたもののどれもこれについて言及していませんでした(どこかにあり、見逃した場合は、私を愚かに見せてリンクしてください)。例えば:
OpenPorts = []
j=[]
for modem in PortList: #This opens every Modem
for port in modem:
try:
j=[]
print port
ser = serial.Serial(port, 9600, timeout=1)
ser.close()
ser.open()
j.append(port)
except serial.SerialException:
continue
OpenPorts.append(j)
print OpenPorts
del j
del ser
それはうまくいきます。しかし、私がこれを試すと:
for port in OpenPorts:
if port is not '':
ser = serial.Serial(port, 9600, timeout=1)
ser.write('ati')
del ser
「TypeError:リスト(「int」ではなく)をリストに連結することしかできません」が表示されます
使用中のポートのセットリスト (別のファイルから収集) から複数のポートを開いているため、それらをループに対してローカルに保つ必要があります。ser.read() が何かを返す前に time.sleep() を使用する必要があるため、複数のループを使用する必要があります。このようにする方法はありますか、それとも最初からやり直しですか?