Windows で QextSerialPort を使用して、Qt/C++ アプリケーションがシリアル ポートとの間で読み書きできるようにしています。
読み取るバイトがある場合にのみ、シリアル ポートからバイトを読み取りたい。
まず、QextSerialPort::readyRead()
シグナルをメイン クラスのスロットに接続しようとしましたが、アプリケーションがハングすることに気付きました。
次に、読み取ったバイト数を返す を使用してみました。その後、別の失敗した組み合わせをQextSerialPort::read(char *, uint64)
試み、それがアプリケーションをブロックしないようにするのに役立つかどうかを確認しました。QextSerialPort::bytesAvailable()
QextSerialPort::read(char *, uint64)
ただし、アプリケーションはマウスまたはキーボードのイベントに応答しないため、常にブロックされ、強制終了する必要があります。読み取りルーチンがブロックされるため、アプリケーションがフリーズすると思います。
QextSerialPort でノンブロッキング読み取りを実行する方法はありますか?
そうでない場合、Windows のシリアル ポートからノンブロッキング読み取り機能を使用するには、どのライブラリを使用すればよいですか?
更新: orQextSerialPort::atEnd()
を使用する代わりに読み取るバイトがあるかどうかを確認するために
使用しようとしましたが、常に false を返します。QextSerialPort::bytesAvailable()
QextSerialPort::size()