0

我正在开发一个必须自动化的电气测试软件。我正在使用 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,其中包含机器的命令。使用按钮时的 ans 值:“ 00.00E+0 <(END OF DATA)>” 使用上述方法时的 ans 值:“”

我只是在寻找发生这种情况的原因以及可能的解决方案。感谢帮助。

4

0 回答 0