自動化が必要な電気テスト ソフトウェアを開発しています。私は 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 値: ""
私はこれが起こった理由とそれに対する可能な解決策を探しているだけです. 手伝ってくれてありがとう。