我正在使用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.如果这有意义。它的功能是异步运行和混合发生。
我希望我能很好地解释我的问题以获得一些帮助。如果不清楚,请告诉我。
对此有更好的解决方案吗?