如何知道 QSerialPort 何时准备好接收 Qt5 中的更多数据?

How to know when QSerialPort is ready for more data in Qt5?

当我的串行设备准备好接收更多数据时,有什么方法可以通知我吗?

我正在实施一个程序,使用 QSerialPort 异步 API 通过串行向伺服控制器提供命令。程序可以运行,但我似乎遇到了拥塞。

在我的应用程序中,我保留了一个注册表,其中包含我希望以尽可能低的延迟与控制器同步的最新伺服位置。我尝试尽快将新数据推送到串行端口,这让我导致了我认为是数据的堆积,导致通信完全中断。

我的问题是,在异步模式下使用QSerialPort时,当串口准备好以某种方式接收新数据时,我能收到通知吗?

我看到的唯一其他选择是使用 同步 模式并调用 waitForBytesWritten() 但我真的不想那样做。

注意:我研究过 serial port examples in the Qt5 documentation carefully, but the example for asynchronous write 没有提供我需要的信息,因为它在退出前执行一次性发送。

您可以收听信号 bytesWritten 并检查 bytesToWrite 以确定写入缓冲区是否为空。两者都继承自QIODevice.