QSerialPortInfo::serialNumber() 总是 returns 一个空字符串

QSerialPortInfo::serialNumber() always returns an empty string

QSerialPortInfo::serialNumber() 总是 returns 一个空字符串,当它不可用时发生。
我尝试连接不同的端口,一切似乎都很好,但无论我做什么,它都不显示端口的序列号! 但是可以正确输出端口名称、制造商、产品ID。

但是我没有将任何设备连接到端口。
为什么序列号不可用?这能以某种方式解决吗?

我想错误出在代码之外的某个地方,但这是我用来访问 serialNumber() in :

的插槽
void PortBrowser::onPortChange()
{
int i;
if(comsCombo->currentIndex()>-1)
    i =comsCombo->currentIndex();
else
    i = 0;

QSerialPort currPort(comsList[i]);

bool opened =  currPort.open(QIODevice::ReadOnly);

const QString seriNum = comsList[i].serialNumber();

serNum->setText(seriNum);
manufact->setText(comsList[i].manufacturer());
QTextStream out(stdout);
out<<comsList[i].serialNumber();
currPort.close();
}

如果您查看相关的源代码 parseDeviceSerialNumber(),您会看到相当多奇特的逻辑,其中 Qt 试图从一些设备标识字符串中分离出序列号。这就是您可能还会在 Windows 设备管理器的详细信息中看到的字符串。

Why can serial number be unavailable? Can this be fixed somehow?

您的串行端口似乎没有以 Qt 可以理解的格式提供其标识符。您可以尝试为 Qt 提供补丁以使其识别您的串行端口,或者您可以去购买 Qt 可以识别的串行端口。源代码中明确提及的一种芯片组是 FTDI.