2010-09-16 46 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