2015-12-25 58 views
0

我正在嘗試定期掃描我的串行端口以查看我的設備是否已連接。這是我所做的,它運作良好。我想看看是否有更好的和優化的方式來做到這一點。定期掃描串行端口以查看設備是否連接到QT,QSerialPort

  1. 我在我的構造函數中創建了以下定時器來頻繁檢查串口。我做了一個方法(scanSerialPorts())並每1秒調用一次。

    ​​
  2. 這是我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(); 
    } 
    
  3. updateSettings(); // Fills up the serial port parameters.

  4. openSerialPort(); //Opens up the serial port.

我用QT的例子來寫這個。請讓我知道你的想法以及如何讓它變得更好。

回答

1
  1. 因爲它只是掃描最後一個端口,因爲其餘代碼在foreach循環之外;
  2. 您關閉其他(可能不打開)端口,而不是你打開
  3. 最可能的是,availablePorts不會在執行過程中改變的人,所以你可以在掃描功能之外將它來保存一些處理時間在計時器中。 updateSettings()也一樣。