2012-03-15 6 views
1

瞬間背景qextserialportはWindows上でデータを削除します - 私はそれについて何ができますか?

、私は、センサデータを収集し、その後、115200ボーでそのUSBシリアルポートを介して送信するために使用していることをTelosB motesを持っています。

私は以前、Pythonを使ってmoteとインターフェースするプログラムを開発しましたが、PythonのGILにはPythonを使わないことでしか解決できないスレッド問題のシェアがありました(最初のテスト段階)、私はC++/Qtに移行しました。事前の知識がなく、ベストプラクティスを学び、すべてが完璧に動作するようになったので、Qtに多くの時間を費やしました。この問題を除くすべて。

問題

私が通じてくる大量のデータがある場合は、ポートを読み取ろう、データのいくつかのセットが神秘的につながる、出てエラーになります私のプロジェクトでは望ましい損失率よりも高いです。

これはqextserialportを使用した場合に発生しますが、pySerialでは発生しません。

これは私がqextserialportでポートを初期化する方法である:

port.setName("COM3"); 
port.setQueryMode(QextSerialPort::EventDriven); 
port.setBaudRate(BAUD115200); 
port.setParity(PAR_NONE); 
port.setDataBits(DATA_8); 
port.setStopBits(STOP_1); 
port.setFlowControl(FLOW_OFF); 

pySerial

port = Serial('COM3', 115200) 

質問

だから私は別の何かがあることを疑います途中で2つの聖書riesはポートを初期化していますが、私はシリアルプログラミングの経験がなく、間違っている可能性があります。

このエラーの原因は何ですか?

+0

シリアルポートの入力バッファが読んでいるよりも速くいっぱいになっている可能性があります。おそらく、より速く、またはより頻繁にそれを読み書きするか、バッファサイズを増やす方法を見つけ出す必要があります。しかし、私はそれを行う方法を知らない、これはコメントであり、答えではない理由です: - P –

答えて

2

QextSerialPort::atEnd()の代わりにQextSerialPort::bytesAvailable()を誤って使用していたことが判明しました。私はこれを別の質問で見て、タイムアウトを待っている間に基本的に私のアプリケーションをブロックしたエラーメッセージを取り除くのを助けました、そして

ウェスさんのコメントは私の他の問題を解決しましたすべてのデータを格納するのに十分なメモリが割り当てられていたため、データが失われました。

関連する問題