是否有可能查詢某個特定的串口在linux pc上是否連接/斷開?有沒有什麼辦法可以讀取sysfs信息來查詢特定端口是否連接?是否有可能知道一個串口在linux中是否連接/斷開?
3
A
回答
11
這取決於你的意思是「連接」。我會首先解決最不準確但最簡單的含義。
存在端口
如果你的意思是,以找出是否端口本身是存在於系統中,那麼你可以檢查已加載模塊將支持它的存在,檢查是否存在(如/ dev/ttyS0或/ dev/ttyUSB0,和)驗證您是否可以打開它(例如,我在實際上沒有該硬件的系統上存在/ dev/ttyS0設備文件) 。 USB轉換器可以被熱插拔,所以今天你可以看到實際的「串行端口」在一個正在運行的系統中進出。
「調制解調器」控制/狀態信號
另一種可能性是,你要找出是否有任何電纜連接到端口。這不是系統必須知道的事情。有一個外設可以斷言的調制解調器控制和狀態信號,你可以閱讀。但是,外設並不需要使用這些,甚至在調制解調器時代曾經有意義的方式使用它們。您可能發現自己連接的許多系統僅使用接收和發送數據線和接地。
通過接收數據
剩餘的可能性是,有可能是沒有辦法知道如果端口被連接時,比通過尋找從它數據等檢測。有些外設可能會定期自動生成數據,因此您可以嘗試閱讀並查看是否有任何數據。對於其他人,你可以發送一個查詢(希望沒有不希望的副作用),並看看你是否得到預期的迴應。例如,如果您發送字符串「* IDN?\ n」,那麼大約實施SCPI標準的儀器可能會回覆一些識別信息。
另一個主要的問題是你必須使端口和外設配置爲兼容的波特率和字格式。否則,您可能會看到隨機數據。你可能在某些情況下能夠從實現的UART引擎中讀取幀錯誤位(你必須檢查驅動程序是否暴露了這種情況),並將其用作可能存在某種東西的指示,但是在錯誤的波特率率。
通過對硬件和期望數據進行細粒度控制,也可以編寫自動波特率檢測程序,但通常在「外設」端而不是「主機」上執行。
相關問題
- 1. 是否有可能知道從哪個
- 2. 是否有可能使NuGet.exe運行與Visual Studio斷開連接?
- 3. 是否有可能確定一個命名窗口是否在JavaScript中打開?
- 4. 是否有可能知道JFrame是否完全可見?
- 5. 如何知道Linux系統中的端口是否打開
- 6. 是否有可能知道活動是如何開始的?
- 7. 是否有可能在一個nhibernate會話中有多個連接字符串?
- 8. 有可能知道一個字符串是否在base64中編碼?
- 9. 在Java中,是否有可能知道某個類是否已被加載?
- 10. 是否有可能知道一個類是否被擴展方法擴展?
- 11. 是否有可能知道我的訪客是否登錄Facebook?
- 12. 是否有可能知道serialVersionUID是否自動生成?
- 13. 如何知道socket.Io是否連接android
- 14. 如何知道網絡是否連接?
- 15. 是否有可能知道該函數是否在PHP中的eval()中調用?
- 16. 是否有可能找出VNC連接是否有效
- 17. Python PySerial.How要知道一個端口是否已經打開?
- 18. 是否有可能知道我們是否已經在iframe中了
- 19. 是否有可能知道圖像是否在iPhone系統緩存中?
- 20. 如何知道一個字符串是否包含口音
- 21. 如何才能知道在MySQL中是否有事務打開?
- 22. 是否有可能在打開websocket連接時發送數據
- 23. 是否有可能在MATLAB中連接多個像素?
- 24. 有可能知道CLLocation點是否在MKCoordinateRegion中?
- 25. 是否有可能中斷完成()
- 26. 是否有一個mySQL前端具有連接接口?
- 27. 是否有可能知道你是否查看是MainView或DetailView的UISplitViewController
- 28. 是否可以檢查TCP連接是否斷開而不寫入它?
- 29. PHP:如何知道PostgreSQL持久連接是否已經打開?
- 30. 我如何知道連接是否與websockets一起存在?
非常感謝您的詳細解釋,感謝您的幫助。 –
@RajeshSO plz接受答案,如果你滿意。這將有助於其他人。 – Raulp