【发布时间】:2026-02-11 10:40:01
【问题描述】:
我正在尝试在 Qt 中为一个学术项目开发一个用户界面,它将串行消息发送到微控制器。不过,我正在努力关闭串行端口:用户界面应在关闭串行端口之前向微控制器发送串行消息。这是管理此操作的代码部分:
device->write(QString("ABORT___").toStdString().c_str());
displayMessage("Disconnected");
deviceIsConnected = false;
device->close();
ui->PortComboBox->setEnabled(true);
ui->tabWidget->setEnabled(false);
ui->ConnectButton->setText("Connect");
ui->ConnectionStatus->setText("<span style=\" color:#e1d41f;\">DISCONNECTED</span>");
问题是这段代码在实际发送消息之前关闭了端口,事实上,如果我尝试评论这一行device->close();,代码会按预期工作。似乎在发送消息之前端口已关闭,即使管理端口关闭的行在之后。
即使我尝试在某些 if 语句中嵌套 device->close(); 行,问题仍然存在。
你能帮帮我吗?
【问题讨论】:
-
您能否在调试器中检查
device->write在您的情况下是否返回-1? -
感谢您的评论。我检查了
device->write是否使用以下代码qDebug() << device->write(QString("ABORT___").toStdString().c_str());返回-1,它返回8
标签: c++ qt serial-port