如何知道QSerialPort何时准备好在Qt5中获得更多数据?

时间:2016-04-25 11:33:24

标签: c++ asynchronous serial-port qt5 qtserialport

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

我正在实施一个程序,使用QSerialPort异步 API通过串口向伺服控制器提供命令。该计划有效,但似乎我遇到了拥堵。

在我的应用程序中,我保留了一个最新伺服位置的注册表,我希望与控制器同步,并尽可能降低延迟。我试图尽可能快地将新数据推送到串口,这让我想到了一种数据的积累,这使得通信完全崩溃。

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

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

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

1 个答案:

答案 0 :(得分:1)

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