0

私が作成しようとしている関数は、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() を使用する必要があるため、複数のループを使用する必要があります。このようにする方法はありますか、それとも最初からやり直しですか?

4

1 に答える 1