2017-02-02 16 views
1

私はコイン受入れ機とラズベリーを使ってプロジェクトを進めています。私は、コインアクセプターからの出力をテストするために、次のコードを持っている:Pythonシリアルが読み込みを停止します

import serial 
from time import sleep 

ser = serial.Serial('/dev/ttyUSB0', 4800, 8, 'N', 1, timeout=None) 
while True: 
    line = ser.read(ser.inWaiting()) 
    if len(line) > 0: 
    print ord(line) 
ser.close() 

すべてが正常に動作し、私はアクセプターから、私はコインをドロップするたびに出力が得られます。しかし、しばらくすると、読書は止まる。シリアルポートモニタを備えたウィンドウでは動作し、毎回出力されます。

ありがとうございます!

+0

試しているのですか? –

+1

'' ord(line) ''は一度に複数の文字を読み込んでしまうと失敗するでしょう... – jasonharper

+0

'.isOpen'を使ってポートが閉じているかどうかを検出し、 。また、デバッグログを実装して、何が起きているかを把握してください。 – thephez

答えて

0

ここでコードを変更しましたが、最初と同じ動作があります。一定時間後には、読み取りを停止:

import serial 
from time import sleep 

ser = serial.Serial('/dev/ttyUSB0', 4800, bytesize=8,  parity=serial.PARITY_EVEN, stopbits=1, timeout=0, rtscts=1) 
sleep(3) 
print("ready ..") 
print(ser.isOpen()) 
while True: 
    line = ser.read() 
    if len(line) > 0: 
    print ser.isOpen() 
    print line 
    print ser.isOpen() 
ser.close() 

ser.isOpenからの出力は常に随時タイムアウトと再開くポートの設定TRUE

関連する問題