8

私はドキュメントを読みましたが、これに関する直接的な答えを見つけることができないようです. コンピュータに接続されたモデムが使用しているすべての 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() から何も得られません。私はいつも空の文字列を取得しています。

4

2 に答える 2

8

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
于 2013-10-02T18:05:14.257 に答える