我正在开发一种必须自动化的电动测试软件。 我正在与PowerTek的PA4400A合作,并且我正在使用RS-232与他通信。 如果我使用按钮发送命令,那么大约4秒后如果我用另一个按钮读取它,则答案是完整且正确的。如果我将读取和写入命令放在按钮方法中,即使写入和读取之间有10秒的延迟,我也不会得到答案。
变量声明:
QTime timp2;
QSerialPort port_PA;
端口初始化:
port_PA.setBaudRate(QSerialPort::Baud19200);
port_PA.setDataBits(QSerialPort::Data8);
port_PA.setParity(QSerialPort::NoParity);
port_PA.setStopBits(QSerialPort::OneStop);
port_PA.setFlowControl(QSerialPort::NoFlowControl);
port_PA.setPortName("ttyUSB0");
port_PA.open(QIODevice::ReadWrite);
按钮方法:
void MainWindow::on_pushButton_clicked()
{
QString ans;
timp2.start();
while(ans.size() == 0 && timp2.elapsed()<10000)
{
ui->label_2->setText(timp2.toString());
ans.append(port_PA.readAll());
}
qDebug()<<ans;
ans.clear();
qDebug()<<ans.size();
port_PA.write(cxz);
timp2.restart();
while(timp2.elapsed()<5000)
{
}
timp2.restart();
while(ans.size() == 0 && timp2.elapsed()<10000)
{
//qDebug()<<timp2.elapsed();
ans.append(port_PA.readAll());
}
port_PA.write(cxz);
qDebug()<<ans;
}
其中cxz是一个QByteArray,它保存了机器的命令。 使用按钮时的值:&#34; 00.00E + 0&lt;(数据结束)&gt;&#34; 使用上述方法时的值:&#34;&#34;
我只是在寻找发生这种情况的原因以及可能的解决方案。 谢谢你的帮助。