有沒有辦法通過Qt發送信號或其他方式來判斷USB串行電纜是否被拔出?拔下USB串行電纜時發送信號
5
A
回答
6
您可以在QtSerialPort插件中使用QSerialPort類的error
信號。在我們的文檔中查看詳細信息。
http://qt-project.org/doc/qt-5.1/qtserialport/qserialport.html#error-prop
您需要基本寫:
connect(mySerialPort, SIGNAL(error(QSerialPort::SerialPortError)), this,
SLOT(handleError(QSerialPort::SerialPortError)));
...
void MyClass::handleError(QSerialPort::SerialPortError error)
{
if (error == QSerialPort::ResourceError) {
QMessageBox::critical(this, tr("Critical Error"), serial->errorString());
closeSerialPort();
}
}
QtSerialPort可以很容易地使用Qt安裝5.1 <爲包分配。但是,我們確信QtSerialPort可以與之前的版本一起使用,包括Qt 4.8.X.在這裏,你可以找到的Qt 4的指示得到這個爲您安裝:
混帳克隆[email protected]:QT/qtserialport.git
CD qtserialport
QMAKE
make
sudo make install。
然後,你需要在你的qmake項目文件中的以下行,如果你碰巧使用的qmake:
Qt 5: QT += serialport
Qt 4: COMFIG += serialport
2
使用QSerialPortInfo
將實現結果:
bool MyClass::checkPort()
{
QSerialPortInfo *portInfo = new QSerialPortInfo(ui->serialDevice->currentText());
// ui->serialDevice being a combobox of available serial ports
if (portInfo->isValid())
{
return true;
}
else
{
return false;
}
}
1
isValid()
是現在已經過時了。可以使用isBusy()
,因爲它在打開端口時將返回true
,並且在端口不在那裏時返回false
(並且仍將其打開)。當availablePorts()
一直返回不存在但打開的端口時,也是這種情況,因爲您通過打開它將端口保留在列表中。
相關問題
- 1. 爲什麼拔下USB電纜時選擇返回?
- 2. 串口電纜被拔出
- 3. Windows CE 6.0通過USB串行電纜發送數據
- 4. 支持CDC的USB串行電纜
- 5. 在拔下USB電纜後重新連接應用程序進行調試
- 6. 帶接口的型號USB電纜
- 7. 通過USB電纜將數據從WP7手機發送到PC
- 8. BlackBerry:使用USB電纜時「filesystem not ready」
- 9. 拿到轉播時,USB電纜連接
- 10. 關於通過USB電纜進行通信的問題
- 11. TCP服務器斷開/電纜拔出
- 12. Wiznet W5100拔出電纜檢測
- 13. 發送信號到USB端口C
- 14. Minicom在嘗試使用USB至RS232電纜進行通信時脫機
- 15. 網絡電纜拔出時SQL連接不能快速定時
- 16. 愛普生EPOS JavaScript和USB電纜
- 17. 行爲時,多個信號發送
- 18. USB串行數據發送亂碼
- 19. Windows Mobile 7發送無線電信號
- 20. RedPark串行電纜部分數據
- 21. android USB連接充電信號
- 22. Python和思科路由器通過USB - >串行 - >控制檯電纜
- 23. 如何使用C#通過USB電纜發送數據無需瞭解USB協議
- 24. 斷開USB電纜時的整理活動
- 25. Android的ADB-over-WiFi在USB電纜循環時仍然斷開(?!?)
- 26. windows下的USB插拔模擬
- 27. 通過電話發送短信與USB連接
- 28. 調試+拔下電源與運行Android
- 29. 如何獲取插入/拔出的電纜狀態
- 30. 在精簡框架中檢測'網絡電纜未拔掉'
終於找到了一個解決方案。實際上我最終使用'QSerialPortInfo'來驗證一個端口,然後再使用它。 –
你指出我正確的方向。我只是需要一些東西來驗證串口在嘗試使用開放端口執行任何操作之前是否實際插入了串口。我做了一些稍微不同的事情,爲我正在做的事情工作。 –
究竟是* ResourceError是什麼?我偶爾會在一些串口通信中看到它,但我仍然能夠在端口上發送和接收一些數據。 (我的通信層開始表現不好,但看起來並沒有完全破壞 - 一些有效的數據包仍然能夠通過。) –