2010-09-16 63 views
4

我有一個嵌入式用戶控件的硬件,通過在Web瀏覽器中輸入設備的IP地址進行訪問。該設備通過x-over以太網電纜和靜態IP直接連接到我的電腦。我需要將設備的控制集成到我的C#應用​​程序中。如何使用HTTP在C#中控制設備的嵌入式控制軟件?

我的想法是使用數據包嗅探器來監視我的PC和設備之間的流量,同時在我的Web瀏覽器中使用設備的控件進行播放。然後找出我的PC發送哪些數據包與當時我正在使用的控件相對應。然後我可以在我的C#應用​​程序中創建一類HTTP或TCP數據包,並使用Socket類將它們發送到設備。但是,我沒有太多的網絡協議,所以當我使用Wireshark監視我的PC和設備之間的流量時,我不知道哪裏數據包做什麼時甚至可以啓動。有沒有人有任何想法?我對任何事情都很開放。謝謝!!

編輯: 它很難解釋我的設備是什麼,但它基本上是一個複雜的傳感器,通常用於工業應用,所以它可能會使用我熟悉的Modbus。你知道如何通過檢查數據包來判斷哪個協議正在使用嗎?我注意到(使用Wireshark)從我的PC發送到設備的數據包發生在1個HTTP數據包的模式中,然後是5個TCP數據包,並且只要控件在我的瀏覽器中打開,就重複相同的順序。是否有任何資源可以讓我更好地理解發生了什麼?

+1

您是否有機會找到設備和/或其控制軟件的文檔?爲什麼猜測你是否可以找出它應該是什麼? – 2010-09-16 16:01:49

+0

您可以提供設備的確切品牌和型號。我們可能能夠確切地告訴你你需要做什麼。 「更好的資源」將是大多數製造商爲其硬件提供的某種SDK。 – 2010-09-16 16:23:49

+0

我不想給出太多具體的細節,比如品牌和型號(理解這可能會阻礙我獲得的幫助),因爲它的應用程序特定且正在爲我爲之工作的公司的客戶工作。 CYA ...我可以告訴你,它不再受制造商的支持。 – user441603 2010-09-16 17:05:20

回答

3

如果這是瀏覽器控制的,我的第一個想法是檢查設備發送到瀏覽器的網頁,並查看當您操縱控件時瀏覽器被指示做什麼 - 這似乎比纏繞Wireshark 。

有什麼我失蹤,使這不可能(如基於Flash的控制系統)?如果只是使用HTML或Javascript,HTML POST消息或者像Ajax這樣稍微複雜一些的東西,那麼處理接口應該相對容易。

+0

良好的通話。我喜歡這個主意,但我完全不熟悉JavaScript,或者我可以如何將JavaScript函數合併到C#應用程序中。有沒有可能不打開網頁瀏覽器? – user441603 2010-09-16 17:10:12

+1

糟糕,我錯過了你使用瀏覽器提到的位。我同意鮑勃的看法,看看它使用的網頁的來源。你可能會發現它是一個簡單的表單,其中有一個「post」條目。看看http://msdn.microsoft.com/en-us/library/debx8sh9(v=VS.90).aspx關於如何模擬表單帖子的一些信息。 即使它是JavaScript,如果你對C#感覺舒服,你應該會發現javascript奇怪familar.You不需要實際合併JavaScript只是模擬它發送什麼 – FixerMark 2010-09-16 20:33:00

+1

我認爲FixerMark已經涵蓋了一切,但只是要清楚,Javascript在瀏覽器中運行,它所要做的就是準備一條消息到設備的內置Web服務器,並且需要在C#中執行相同的功能,而不是在程序中包含任何JS。 我認爲只有兩種機制可以將數據發送回網絡服務器; HTML獲取和發佈(並且它們非常簡單)。雖然它的存在可能會使網頁更復雜,但我認爲我在我的答案中提到的Ajax系統僅使用Post。這些可以在C#中模擬,並且FixerMark的鏈接描述瞭如何。 – 2010-09-17 08:26:21

2

根據設備的不同,它將使用modbus協議的變體(http://en.wikipedia.org/wiki/Modbus)或者某些模糊和優先的東西。

要做的最好的事情是不斷髮送相同的命令到設備一遍又一遍,直到您可以識別數據包中的相似性。

如果它是合適的,它可能會像命令/數據對或可能是XML blob一樣簡單。如果你真的不走運,它會被壓縮或編碼,但除非你是黑客入侵遊戲或自動取款機,否則這是不可能的。

詢問設備的製造商,如果他們可以給你的規格通常也適用。

+0

+1詢問源 – 2010-09-16 16:59:24