Qt creator - RS232 串行写入到快速

Qt creator - RS232 writing over serial to fast

for(int i = 0; i < receivedACLCommands.count(); i++ )
{
    QByteArray s = receivedACLCommands[i].toLatin1();
    serialport->write(s);
    serialport->waitForBytesWritten(1000);
}

在我的方法中,我有一个包含所有命令的 QStringList。命令将发送到 PID 控制器,该控制器需要在发送新命令之前处理命令。我用 waitForBytesWriten 试过了,但这对我不起作用。

*控制器是旧的 SCORBOT 控制器-a。(使用 ACL 命令)。

是的,waitForBytesWritten() 不会解决这个问题。您唯一可以做的就是在 wait 调用后休眠一段时间,从而给设备一些时间来处理您刚刚编写的命令。具体睡多久当然是瞎猜,不一定是常数。

首先要关注启用握手,这通常会被忽略太多。 QSerialPort::setFlowControl() 函数。当一个好的设备还没有准备好接收任何东西时,它会使用它的 RTS 信号来关闭你的 CTS 输入(清除发送)。 CTS/RTSQt支持握手,你用QSerialPort::HardwareControl