之前用Qt写一个用于Arduino开发板HEX文件烧写的工具,遇到了这个问题。后来找到了一个跨平台的串口操作库:qextserialport
以下代码可用于获取Windows平台上活动的串口列表。

QStringList & ComPortMgr::getAvailableComPorts()
{
    static QStringList availablePorts;
    const int MAX_COM_PORT = 256;
    QString testPortName;
    QextSerialPort testPort;

    testPort.setBaudRate(BAUD9600);
    testPort.setFlowControl(FLOW_OFF);
    testPort.setParity(PAR_NONE);
    testPort.setDataBits(DATA_8);
    testPort.setStopBits(STOP_1);

    for (int i = 1; i < MAX_COM_PORT; i++) {
        testPortName = QString("COM%1").arg(i);
        testPort.setPortName(testPortName);
        if (testPort.open(QIODevice::ReadWrite)) {
            availablePorts.append(testPortName);
            testPort.close();
        }
    }

    return availablePorts;
}

女神之泪
1 声望1 粉丝