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程序中一样。
不知道更改和您的代码这将很难做一个故障排除在这里。你是否创建了一个用于测试的最小Qt示例? – 0x0C4
Qt创建者的“终端”示例非常少。这也是关于我在ARM的代码,而不是Qt。关键是我可以用其他程序打开端口,但不能使用Qt。我查看了qserialport.cpp文件以查找“UnsupportedOperationError”字符串。问题是我找不到任何匹配的错误代码。我的错误字符串是'QSerialPort :: SerialPortError(UnsupportedOperationError)'。 – Bremen
Qt创建者的“终端”示例是否显示相同的错误?请提供可追溯性程序的最低版本 – 0x0C4