2

わかりません。私は今どこでも見てきましたが、なぜこれが機能しないのかわかりません:

def main():
    time = sys.argv[1]
    ser = serial.Serial('/dev/ttyACM0',9600, timeout=1)
    paramstr= "A 5 " + time + " 0 0 0"
    ser.write(paramstr)
    print 'sent'
    print 'now listening...'
    while True:
        dbstr = ser.readline()
        fo.write(str(dbstr));
    fo.close()
    ser.close()
    print 'exiting.'

これは私のdef mainインpythonです。私がやっていることはserial、Raspberry Pi から Teensy (Arduino) に文字列を送信することです。serialTeensy はプログラムを正常に開始し、1200 行をラズベリーに送り返します。これはこれまでのところ機能しています。

うまくいかないのはwhileループです。データはファイルに書き込まれますが、送信 (Teensy->RPi) は既に停止していますが、ループは永遠に続きます。この場合、 を実装しましたtimeout=1が、無視されているようです。プログラムは while ループから出ません。

誰か助けてくれませんか?前もって感謝します!

4

1 に答える 1

3

タイムアウトは while ループには影響しません。各呼び出しが待機read()する最大時間にのみ影響します。readline()データを受信しなくなったときにループを停止する場合は、データを受信しなくなったときにループを停止します。たとえば、次のようなものです。

while True:
    dbstr = ser.readline()
    fo.write(str(dbstr));
    if not dbstr:
        break
于 2015-09-20T06:18:29.400 に答える