我想自動檢測連接到計算機COM端口的設備。能夠使用SerialPort類允許我輕鬆獲取可用COM端口的列表。如何自動檢測連接到COM端口的設備
我想遍歷它們並輪詢(發送命令)到每個端口並等待響應。不過,大多數教程似乎都建議使用DataReceived事件。我迷失在如何做串行發送,然後等待xx秒的時間,直到我收到來自設備的響應。
我想自動檢測連接到計算機COM端口的設備。能夠使用SerialPort類允許我輕鬆獲取可用COM端口的列表。如何自動檢測連接到COM端口的設備
我想遍歷它們並輪詢(發送命令)到每個端口並等待響應。不過,大多數教程似乎都建議使用DataReceived事件。我迷失在如何做串行發送,然後等待xx秒的時間,直到我收到來自設備的響應。
我相信WMI有功能來查詢COM設備,也有Linq to WMI庫可幫助
希望這有助於
的DataReceived事件檢索是非常好的,當你需要跟設備,可以在非常不可預測的時間發送一些東西。您不必燒燬一個阻塞並等待設備發送內容的線程。
但是,這是完全相反,你試圖實現,你做期望收到的東西。因此,請勿使用DataReceived,請將ReadTimeout屬性設置爲適當的低值。現在很簡單。還要考慮使用DsrHolding屬性。有一個設備連接到端口並啓動時,這是正確的。
我應該注意,這樣做是相當危險的。你不知道機器上連接了什麼類型的設備,向他們發送一些他們沒有設計來處理的東西是相當棘手的。如果有什麼「你在嗎?」你發送的命令恰好意味着機器人控制器「以1G加速回家」,那麼有人會很容易受到傷害。你不能在任何工業環境中做到這一點。
到目前爲止,最好的方法是讓其他人有責任做到這一點。添加一個允許用戶設置端口名稱的選項菜單。而設置,它們也很重要,無法自動檢測它們。選項對話框可以有一個「幫我找到設備」按鈕,現在它是安全的和有用。
WMI'ManagementObjectSearcher.Get()'算作「你在嗎?」。我完全可以在機器人事故場景中看到這一點,因此我想知道'ManagementObjectSearcher'對此是否安全。 – heltonbiker
那麼,你還沒有寫任何代碼嗎?已經看到這篇文章http://www.codeproject.com/Articles/8605/Serial-Communication-using-C-and-Whidbey? – gabsferreira