使用 Qt GUI 从所有可用的串行端口中进行选择

Posted

技术标签:

【中文标题】使用 Qt GUI 从所有可用的串行端口中进行选择【英文标题】:Selecting from all available serial ports using Qt GUI 【发布时间】:2015-03-09 09:31:41 【问题描述】:

我找不到我的问题的决定性答案,所以我决定在这个网站上发布我的第一个问题。我对编程相当陌生,并且已经使用 Qt 几个月了。 我的代码通过串行端口与微控制器通信,但是可用端口因电脑而异。我正在显示代码可用的端口数;

qDebug() << "Number of serial ports:" << QSerialPortInfo::availablePorts().count(); 

我的问题是:如何显示所有可用端口的名称,例如"COM 10, 17. 22, etc",然后在我的 GUI 中显示它们。我最终希望做的是有一个可以动态填充可用端口的组合框,我现在有一个可以在几个端口之间切换的组合框,但这些是与特定计算机相对应的固定端口。

【问题讨论】:

【参考方案1】:

试试这样的:

#include <QApplication>
#include <QWindow>
#include <QSerialPortInfo>
#include <QComboBox>


int main(int argc, char *argv[])

    QApplication a(argc, argv);
    QWidget w;
    w.resize(200,200);
    w.show();

    QComboBox box(&w);
    Q_FOREACH(QSerialPortInfo port, QSerialPortInfo::availablePorts()) 
        box.addItem(port.portName());
    
    box.move(100 - box.width() / 2,100 - box.height() / 2);
    box.show();

    return a.exec();

代码非常不言自明。

【讨论】:

感谢您的回答,我刚刚在回答中发布了一个链接,解决了我的问题【参考方案2】:

在qt中心找到相关答案,示例代码;

foreach (const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts())
    
    ui->comboBox->addItem(serialPortInfo.portName());
    

【讨论】:

能否总结一下内容? *** 不喜欢仅链接的答案。他们遭受链接腐烂。

以上是关于使用 Qt GUI 从所有可用的串行端口中进行选择的主要内容,如果未能解决你的问题,请参考以下文章

Qt入门教程硬件编程QSerialPort串口对象

Qt入门教程硬件编程QSerialPort串口对象

使用 Qt 的 C++ 中的线程串行端口通信

Qt 串口的 C++ 线程模式

虚拟 COM 端口 STM32 和 Qt 串行端口

串行端口块 GUI - 发射信号块 PyQt-App