2017-06-05 303 views
1

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

  • 我尝试使用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程序中一样。

+0

不知道更改和您的代码这将很难做一个故障排除在这里。你是否创建了一个用于测试的最小Qt示例? – 0x0C4

+0

Qt创建者的“终端”示例非常少。这也是关于我在ARM的代码,而不是Qt。关键是我可以用其他程序打开端口,但不能使用Qt。我查看了qserialport.cpp文件以查找“UnsupportedOperationError”字符串。问题是我找不到任何匹配的错误代码。我的错误字符串是'QSerialPort :: SerialPortError(UnsupportedOperationError)'。 – Bremen

+0

Qt创建者的“终端”示例是否显示相同的错误?请提供可追溯性程序的最低版本 – 0x0C4

回答

1

您正面临Qt中的错误或过度排斥的行为。在你自己的代码中不可能有任何可以解决的问题。

如果没有Qt的调试版本,也无法进行调试。使用一个调试版本,你可以准确地指出它在执行失败的地方QSerialPort。然后您将知道发生了什么,并能够基于此报告Qt错误报告。由于您将被设置为构建Qt,因此您可以自行修复此错误并以这种方式快速开始。