连续检查串行端口的状态

时间:2017-01-04 19:59:41

标签: c++ qt serial-port

我正在使用QT开发的串行应用程序存在一些问题。

我需要通过串口连续输出命令,以便在使用 - (电机位置,电机速度等)时从控制器返回回复。

它看起来像这样:

void MainWindow::updateMCTarRotvalues()
{
      HANDLE RS232Handle;
      RS232Handle=OpenRS232(MotorControlCommPortSelection(), 9600);
      SendCmd(RS232Handle, 1, 6, 3, 5, 0); //motor 5 get speed
      auto result = GetResult(RS232Handle);
      QString AddressOutCS = QString::number(result.address);
      QString GuessOutCS = QString::number(result.guess);
      QString StatusOutCS = QString::number(result.status);
      QString ValueOutCS = QString::number(result.value);
      CloseRS232(RS232Handle);

      RS232Handle=OpenRS232(MotorControlCommPortSelection(), 9600);
      SendCmd(RS232Handle, 1, 6, 3, 4, 0); //motor 4 get speed
      auto result2 = GetResult(RS232Handle);
      QString AddressOutCS2 = QString::number(result.address);
      QString GuessOutCS2 = QString::number(result.guess);
      QString StatusOutCS2 = QString::number(result.status);
      QString ValueOutCS2 = QString::number(result.value);
      CloseRS232(RS232Handle);
}

然后我使用QString变量来打印我之后的数据。

我想出了一个使用QTimer来调用函数的解决方案:

QTimer *timer2 = new QTimer(this);
connect(timer2, SIGNAL(timeout()), this, SLOT(updateMCTarRotvalues()));
timer2 -> start();

这实际上适用于一个电机,但现在当我想调用另一个电机参数时,我会混合变量。含义有时AddressOutCS不是电机5而是电机4.如果这有意义。它的功能是异步运行和混合发生。

我希望我能很好地解释我的问题以获得一些帮助。如果不清楚,请告诉我。

对此有更好的解决方案吗?

0 个答案:

没有答案