我正在尝试定期扫描我的串口,看看我的设备是否已连接。这是我所做的,它运作良好。我想看看是否有更好,更优化的方法。
我在构造函数中创建了以下计时器,以频繁检查串口。我做了一个方法(scanSerialPorts()
)并且每1秒调用一次。
QTimer *timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(scanSerialPorts()));
timer->start(1000);
这是我的scanSerialPorts()
实施:
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
currentPortName = info.systemLocation();
}
if (currentPortName == "My Desired PortName" ) {
updateSettings();
if ( !serial->isOpen()){
qDebug() << "Serial Not Open";
openSerialPort();
}
} else
{
serial->close();
}
updateSettings(); // Fills up the serial port parameters.
openSerialPort(); //Opens up the serial port.
我用QT示例来写这个。请让我知道你的想法以及如何让它变得更好。
答案 0 :(得分:1)
foreach
循环之外; availablePorts
在执行期间不会发生变化,因此您可以将其移出扫描功能以节省计时器中的一些处理时间。 updateSettings()
。