2012-10-01 16 views
2

我正在寫應用程序,通過串口與我自己設計的電子設備進行通信。串口 - 如何安全搜索我的設備?

當我的PC應用程序啓動時 - 它會逐個打開可用的COM端口,併發送一些字符串(例如「你在幹什麼?」)。

我的設備已編程,用自己的ID回覆這個「魔術問題」(例如:「我是監督員工的邪惡設備」)。

當我的PC軟件收到「魔術回覆」時,它開始正常工作,並且不再搜索其他端口。

當然我沒有在數據傳輸中使用愚蠢的問題,它只是一個例子。

問題是 - 我可以像所有(不忙)端口發送字符串,以發現我的設備嗎?

如果我可以 - 如何「問題」字符串應該看起來?有沒有標準化的標準?

這不是我的桌子上的第一個這樣的項目,但現在我正在開發針對小型行業的解決方案,我需要更多地關注我的應用程序正在做什麼,因爲可能有其他設備連接到COM端口,知道他們如何反應。

對不起,如果我犯了一些語言錯誤,英語是我的第三語言。

在此先感謝您的答覆。

回答

2

不,你不想這樣做。


當您使用COM串行端口時,您不知道插入端口的是什麼。這可能不算什麼,你的設備,調制解調器,鼠標(儘管我相信沒有人再使用它)......或者你無法想象的任何東西。想象一下,如果它連接到另一臺計算機(可能是Linux /路由器),發送內容可能會導致執行「該命令」,從而產生意想不到的效果(儘管您的程序可能不會注意到)。或者如果它是一些編程不好的設備,它可能會觸發固件中的錯誤,從而導致設備故障並使其發生故障。

總之,在最壞的情況下,您可以引起災難性事件


串行(RS-232或UART我假定)的通信不具有指定的傳輸協議(與USB具有一個),以識別設備,所以它不是故障安全。用戶必須確保他選擇了正確的端口。這可能是硬件製造商選擇USB的原因之一,也是USB如此受歡迎的原因之一,甚至是電腦白癡的原因之一。

+0

因此證實了我的擔憂。謝謝。 順便說一句 - 我知道USB更好些,但有時它對於簡單的pc->設備通信來說太複雜了,即使在使用Atmel或Microchip的簡化USB解決方案時 - 也需要太多時間來學習如何處理接着就,隨即。 – Kamil

+0

如果你僅限於串行端口,那麼你是否發現或離開用戶從列表中選擇它們看起來像是:COMM1,COMM2 ...幾乎相同。 – ruruskyi

5

在Alvin Wong確認了我的顧慮之後,我又考慮了一遍,重新設計了我的設備發現功能,因爲我不想放棄這個想法。

我會每隔1-5秒從設備發送一個獨特的複雜ID。

當我的電腦開始時 - 它會嘗試按順序打開所有可用的端口,並會在幾秒鐘內偵聽該ID。

如果應用程序收到該ID--它將是確認,該端口號/名稱是正確的,並且我的連接已建立。

+0

但是,在所有的端口上聽是一個小門的想法) – ruruskyi