【发布时间】:2022-01-22 09:10:08
【问题描述】:
QSerialPortInfo::serialNumber() 总是返回一个空字符串,当它不可用时会发生这种情况。
我尝试连接不同的端口,一切似乎都很好,但无论我做什么,它都不会显示端口的序列号!
但是可以正确输出端口名称、制造商、产品ID。
我没有将任何设备连接到端口。
为什么序列号不可用?这可以通过某种方式解决吗?
我猜错误是在代码之外的某个地方,但这是我用来访问 serialNumber() 的插槽:
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();
}
【问题讨论】:
-
什么是
comsList?一些QList<QSerialPortInfo>?如果是这样的话,我想我们需要更多关于你如何构建它的信息。无论如何,它可能只是根据文档不可用:“返回串行端口的序列号字符串,如果可用;否则返回一个空字符串。”可能有许多与系统相关的原因导致它不可用。这是什么平台,Windows? -
@dabbler 它是 QSerialPortInfo 的 QList。是的,它适用于 Windows 10。如果有任何具体信息我应该提及,我很乐意这样做
-
其他信息是否按预期输出? IE。
portName()或者像你想象的那样,manufacturer()? -
@dabbler 是的,制造商,如果我尝试输出它们,产品 ID 确实会按预期显示,端口名也是如此。
-
对于列表中的每个端口,
serialNumber是否为空?您选择的端口是否插入了任何东西?
标签: c++ windows qt serial-port