使用Qt

时间:2017-06-05 10:25:25

标签: c++ windows qt serial-port

我在Qt中打开串口时遇到问题。尝试打开端口失败后收到的错误消息是UnsupportedOperationError。我想指出几件事:

  • 我尝试打开的端口是在使用USB(CDC)的ARM MCU中实现的,
  • 我可以在其他应用程序中打开端口(如teraterm或realterm),
  • 我能够在一分钟内打开我的Qt应用程序中的端口。我在ARM设备中添加了一些代码(根本不涉及USB功能),我无法在Qt中打开端口。
  • 我测试过我可以在其他程序中打开的端口上发送/接收数据(即realterm),
  • 该端口适用于其他应用程序,但不适用于Qt(尝试了Qt创建者的终端示例,也无法打开端口),

我过去曾经遇到过这种行为,但没有时间深入研究。现在它阻止了我。打开港口可能会出现什么情况? qt是否对它提出了任何额外要求?我真的很感激所有的帮助。 我在Windows机器上运行qt。

编辑:这是负责打开端口的Qt创建者的终端示例的一部分。

void MainWindow::openSerialPort()
{
    SettingsDialog::Settings p = settings->settings();
    serial->setPortName(p.name);
    serial->setBaudRate(p.baudRate);
    serial->setDataBits(p.dataBits);
    serial->setParity(p.parity);
    serial->setStopBits(p.stopBits);
    serial->setFlowControl(p.flowControl);
    if (serial->open(QIODevice::ReadWrite)) {
        console->setEnabled(true);
        console->setLocalEchoEnabled(p.localEchoEnabled);
        ui->actionConnect->setEnabled(false);
        ui->actionDisconnect->setEnabled(true);
        ui->actionConfigure->setEnabled(false);
        showStatusMessage(tr("Connected to %1 : %2, %3, %4, %5, %6")
                          .arg(p.name).arg(p.stringBaudRate).arg(p.stringDataBits)
                          .arg(p.stringParity).arg(p.stringStopBits).arg(p.stringFlowControl));
    } else {
        qDebug() << "Failed to open serial port " << serial->portName() << "Error: " << serial->error();
        QMessageBox::critical(this, tr("Error"), serial->errorString());

        showStatusMessage(tr("Open error"));
    }
}

我添加了qith qDebug行以显示错误消息。它和我的Qt程序一样。

1 个答案:

答案 0 :(得分:1)

您在Qt中遇到了错误或过度排斥的行为。你不可能在你自己的代码中修改它。

如果没有Qt的调试版本,它也无法调试。使用调试版本,您可以确切地指出它失败的QSerialPort实现中的位置。然后,您将了解正在进行的操作,并能够根据该报告提交Qt错误报告。由于您已经设置好构建Qt,您可以自己修复错误并快速开始。