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命令一起使用)。
答案 0 :(得分:0)
是的,waitForBytesWritten()并没有解决这个问题。只有你可以做的其他事情是在等待调用后休眠一段时间,从而给设备一些时间来处理你刚才写的命令。究竟睡多长时间当然是盲目的猜测,它不一定是常数。
首先关注启用握手,通常会经常忽略。 QSerialPort :: setFlowControl()函数。一个体面的设备将使用其RTS信号关闭您的CTS输入(清除发送),当它没有准备好接收任何东西时。 Qt支持CTS / RTS握手,您使用QSerialPort :: HardwareControl