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();
}
uj5u.com熱心網友回復:
如果您查看相關的源代碼parseDeviceSerialNumber(),您會看到一些奇特的邏輯,其中 Qt 試圖將序列號與某些設備標識字串隔離開來。這就是您可能在 Windows 設備管理器中詳細看到的字串。
為什么序列號不可用?這可以以某種方式修復嗎?
您似乎有一個串行埠,它沒有以 Qt 可以理解的格式提供其識別符號。您可以嘗試為 Qt 提供一個補丁以使其識別您的串行埠,或者您可以去購買一個 Qt 識別的串行埠。源代碼中明確提到的一種芯片組是FTDI。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/388711.html
