バックグラウンド
現在、TelosB モートを使用してセンサー データを収集し、それを USB シリアル ポート経由で 115200 ボーで送信しています。
以前は、Python を使用してモートとインターフェイスするプログラムを開発していましたが、Python の GIL には、Python を使用しないことによってのみ解決できるスレッド化の問題があります (最初のテスト フェーズの後で、その同時実行性が必要でした)。 C++/Qt に移行しました。予備知識がなく、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 つのライブラリがポートを初期化する方法に何か違いがあるのではないかと思いますが、シリアル プログラミングの経験がなく、間違っている可能性があります。
このエラーの原因は何か分かりますか?