void MainWindow::addPortToCombo() { /*get com port*/ QList<USBPortInfoStruct> list_port=portManager->deleteOfflineUsbVirtualPort(); ui->comboBox->clear(); portNumber = 0; QString diagPort; QString nmeaPort; if(list_port.size()>0){ int i = 0; for(i=0; i<list_port.size(); i++) { if(list_port[i].friendly_name.indexOf("AT") != -1) { this->portString = getPort(list_port[i].friendly_name).toLatin1().data(); portNumber++; ui->comboBox->addItem("AT Port "+portString); return; } if(list_port[i].friendly_name.indexOf("Diagnostics") != -1) { ui->comboBox->addItem(list_port[i].friendly_name); diagPort = getPort(list_port[i].friendly_name).toLatin1().data(); } else if(list_port[i].friendly_name.indexOf("NMEA") != -1) { ui->comboBox->addItem(list_port[i].friendly_name); nmeaPort = getPort(list_port[i].friendly_name).toLatin1().data(); } } } /*get Regedit port*/ QMap<QString,QString>keyComMap = portManager->getKeyComMap(); ui->comboBox->clear(); portNumber = 0; QMap<QString,QString>::iterator it; //遍历map for ( it = keyComMap.begin(); it != keyComMap.end(); ++it ) { if (it.key().indexOf("QCUSB")!=-1 && it.value()!=diagPort && it.value()!=nmeaPort) { portNumber++; portString = it.value(); ui->comboBox->addItem("Modem "+portString); break; } } }这段代码是干啥的
时间: 2024-04-27 17:19:57 浏览: 98
mainwindow.rar_编辑器/阅读器_Unix_Linux_
这段代码是 `MainWindow` 类中的一个名为 `addPortToCombo()` 的函数,它的作用是将可用的串口添加到 UI 上的下拉列表中。
首先,通过 `portManager->deleteOfflineUsbVirtualPort()` 函数获取系统中可用的串口列表,并从列表中删除不在线的 USB 虚拟端口。然后,通过判断串口的友好名称来确定串口的类型,并将其添加到下拉列表中。
如果发现串口的友好名称中包含 "AT",则认为该串口为 AT 串口,将其添加到下拉列表中,并返回。如果发现串口的友好名称中包含 "Diagnostics",则认为该串口为诊断串口,并记录下其端口号。如果发现串口的友好名称中包含 "NMEA",则认为该串口为 NMEA 串口,并记录下其端口号。最后,通过 `portManager->getKeyComMap()` 函数获取系统注册表中的串口列表,并将其添加到下拉列表中。
需要注意的是,如果存在 AT 串口,则只会添加 AT 串口,不会添加其他类型的串口;如果不存在 AT 串口,则会添加 Modem 串口,并且只会添加一个 Modem 串口。
阅读全文