コンピューターにデータをシリアルに送信するようにArduinoをプログラムしました。pySerialはシリアルから正しく読み取っていますが、常に最新の情報が必要なため、flushInput()を使用して入力バッファーをフラッシュできると思いましたが、コマンドを実行すると、から読み取ることができなくなりました。シリアル。Arduinoが次のデータパケット(57600ボーで実行)を送信するのに十分な時間を確保できるように、51回ごとにフラッシュすることを試みました(51は素数であり、カウンターをリセットしなくても簡単に51回カウントできるため)。 )、しかしまだ機能していません。つまり、deadline()を使用して読み取り行の長さを格納する変数を使用しましたが、51に到達して入力バッファーがフラッシュされるとすぐに、常に0の読み取り値を取得します。これは、何も読み取っていないことを意味します。pySerialのドキュメントを読みました。しかし、関連する情報は見つかりませんでした。flushInput()はシリアル接続も終了しますか?どうもありがとう。
編集:私はMacOS10.7.5とPython2.7.3を実行しています
try:
self.s = serial.Serial("/dev/tty.usbmodemfa131", 57600, timeout = 0)
self.FlightLoopCB = self.FlightLoopCallback
XPLMRegisterFlightLoopCallback(self, self.FlightLoopCB, self.interval, 0)
except serial.SerialException:
self.s = None
.
.
.
self.length=0
self.myline=self.s.readline()
self.length=len(self.myline)
print "Test: %i %i" % (self.length, self.j)
if(self.length>=7):
if(self.myline[0:2]=="R,"):
if(self.j%51==0):
self.s.flushInput()
self.length=len(self.myline)
self.myline=self.myline[2:6]
self.myLineBytes=[0,0]
self.myLineBytes[0]=unpack('>H', self.myline[0:2])
self.myLineBytes[1]=unpack('>H', self.myline[2:4])