如何在串口中写入数据,发送消息之间有延迟? 这是我的代码:
void MainWindow::on_pushButton_Done_clicked()
{
if(sport->isOpen()){
sport->clear();
QString cmd = Phase+Mode;
//Write Stop
sport->write("stop!", 5);
//Write Mode
sport->write(cmd.toStdString().c_str(), cmd.toStdString().length());
//Write Speed
sport->write(Speed.toStdString().c_str(), Speed.toStdString().length());
//Write Direction
sport->write(Direction.toStdString().c_str(), Direction.toStdString().length());
//Run
sport->write("start!", 6);
}
}
当我调用此函数时,我的设备收到错误消息。
谢谢。
答案 0 :(得分:1)
2个选项:
使用waitForBytesWritten
确保写入字节,然后使用sleep
然而这会阻止线程并阻止gui
另一个是使用QTimer触发另一个插槽几次以及一个指示需要发送的字段
答案 1 :(得分:0)
看起来你正在尝试编程一些步进电机控制器或类似的东西。 通常在这样的控制器中,您应该等待控制器响应以验证命令是否已正确处理。
看起来您的代码设计非常糟糕。将与此控制器相关的所有内容移动到具有一组插槽的单独类,例如:starRotateLeftWithSpeed(double)
。代码将更清晰,如果您决定使用另一个答案中提出的waitForBytesWritten
等方法,它将很容易使用。
当然,您应该仔细阅读控制器手册。