QT单击进行串口扫描时,如何实现对列表已有有效串口保持,删除无效串口,增加新接入串口
时间: 2024-05-04 18:19:06 浏览: 29
QT实现十六机制接收串口程序,自己写的代码,打开编译就能用!!!
实现串口扫描并保持已有有效串口,删除无效串口,增加新接入串口的步骤如下:
1. 获取当前计算机上所有可用的串口。
2. 遍历已有有效串口列表,如果该串口不在当前计算机上的可用串口列表中,则将其删除。
3. 遍历当前计算机上的可用串口列表,如果该串口不在已有有效串口列表中,则将其添加到已有有效串口列表中。
4. 将已有有效串口列表更新到UI上的串口列表控件中。
以下是示例代码:
```c++
// 获取当前计算机上所有可用的串口
QList<QSerialPortInfo> availablePorts = QSerialPortInfo::availablePorts();
// 遍历已有有效串口列表,如果该串口不在当前计算机上的可用串口列表中,则将其删除
for (int i = 0; i < validPorts.count(); i++) {
QString portName = validPorts.at(i).portName();
bool portAvailable = false;
for (int j = 0; j < availablePorts.count(); j++) {
if (portName == availablePorts.at(j).portName()) {
portAvailable = true;
break;
}
}
if (!portAvailable) {
validPorts.removeAt(i);
i--;
}
}
// 遍历当前计算机上的可用串口列表,如果该串口不在已有有效串口列表中,则将其添加到已有有效串口列表中
for (int i = 0; i < availablePorts.count(); i++) {
QString portName = availablePorts.at(i).portName();
bool portValid = false;
for (int j = 0; j < validPorts.count(); j++) {
if (portName == validPorts.at(j).portName()) {
portValid = true;
break;
}
}
if (!portValid) {
validPorts.append(availablePorts.at(i));
}
}
// 将已有有效串口列表更新到UI上的串口列表控件中
ui->serialPortComboBox->clear();
for (int i = 0; i < validPorts.count(); i++) {
ui->serialPortComboBox->addItem(validPorts.at(i).portName());
}
```
阅读全文