我在 Windows 上使用 QextSerialPort 使我的 Qt/C++ 应用程序能够读取/写入串行端口。
只有当有字节要读取时,我才想从串口读取字节。
首先,我尝试将QextSerialPort::readyRead()
信号连接到我的主类中的一个插槽,但我注意到应用程序挂起。
然后我尝试使用QextSerialPort::read(char *, uint64)
,它返回读取的字节数,然后我再次尝试组合QextSerialPort::bytesAvailable()
并QextSerialPort::read(char *, uint64)
查看这是否有助于我的应用程序不阻塞。
但是,应用程序总是阻塞并且必须被终止,因为它不响应任何鼠标或键盘事件。我认为应用程序冻结是因为读取例程阻塞。
有没有办法使用 QextSerialPort 执行非阻塞读取?
如果没有,我应该使用什么库来从 Windows 上的串行端口获得非阻塞读取功能?
更新:
我尝试使用QextSerialPort::atEnd()
来检查是否有要读取的字节而不是使用QextSerialPort::bytesAvailable()
orQextSerialPort::size()
并且它总是返回 false。