【问题标题】:How do I Control a Device’s Embedded Control Software in C# using HTTP?如何使用 HTTP 在 C# 中控制设备的嵌入式控制软件?
【发布时间】:2010-09-16 15:01:03
【问题描述】:

我有一个带有嵌入式用户控件的硬件,通过在网络浏览器中输入设备的 IP 地址来访问。该设备通过 x-over 以太网电缆和静态 IP 直接连接到我的 PC。我需要将设备的控制集成到我的 C# 应用程序中。

我的想法是使用数据包嗅探器来监控我的 PC 和设备之间的流量,同时在我的网络浏览器中使用设备的控件。然后找出我的 PC 发送的哪些数据包与我当时使用的控件相对应。然后我可以在我的 C# 应用程序中创建一个 HTTP 或 TCP 数据包类,并使用 Socket 类将它们发送到设备。

但是,我对网络协议没有太多经验,所以当我使用 Wireshark 监控我的 PC 和设备之间的流量时,我什至不知道从哪里开始找出哪些数据包做什么。有没有人有任何想法?我对任何事情都持开放态度。谢谢!!

编辑: 很难准确解释我的设备是什么,但它基本上是一个精密的传感器,通常用于工业应用,所以它可能使用我比较熟悉的 Modbus。你知道我如何通过检查数据包来判断正在使用哪个协议吗?我注意到(使用 Wireshark)从我的 PC 发送到设备的数据包以 1 个 HTTP 数据包,然后是 5 个 TCP 数据包的模式发生,只要在我的浏览器中打开控件,就会重复相同的序列。是否有任何资源可以让我更好地了解正在发生的事情?

【问题讨论】:

  • 您是否有机会找到设备和/或其控制软件的文档?如果你能找出它应该是什么,为什么还要猜测呢?
  • 您能否提供设备的确切品牌和型号。我们或许能够准确地告诉您您需要做什么。 “更好的资源”将是大多数制造商为其硬件提供的某种 SDK。
  • 我不想透露太多具体细节,比如品牌和型号(理解这可能会妨碍我获得帮助),因为它非常特定于应用程序,我正在为我工作的公司。 CYA...我可以告诉你,制造商不再支持它。

标签: c# http packet-capture embedded-control


【解决方案1】:

如果这是由浏览器控制的,我的第一个想法是检查设备发送到浏览器的网页,并查看在您操作控件时浏览器被指示执行的操作 - 这似乎比使用 Wireshark 更容易。

我是否缺少某些东西使这变得不可能(例如基于 Flash 的控制系统)?如果它只是使用 HTML 或 Javascript,以及 HTML POST 消息或像 Ajax 之类的更复杂的东西,那么制作界面应该相对容易。

【讨论】:

  • 好电话。我喜欢这个想法,但我完全不熟悉 javascript,也不熟悉如何将 javascript 函数合并到 C# 应用程序中。不打开网络浏览器可以吗?
  • 哎呀,我错过了你提到的使用浏览器的地方。我同意鲍勃的观点,看看它正在使用的网页的来源。您可能会发现它是一个简单的表单,在某处带有“post”条目。查看msdn.microsoft.com/en-us/library/debx8sh9(v=VS.90).aspx 了解有关如何模拟表单帖子的一些信息。即使它是 javascript,如果您对 C# 感到满意,您应该会发现 javascript 非常熟悉。您不需要实际合并 javascript,只需模拟它发送的内容
  • 我认为 FixerMark 已经涵盖了所有内容,但需要明确的是,Javascript 在浏览器中运行,它所要做的就是准备一条消息到您设备的内置网络服务器,您需要执行C# 中的相同功能,程序中不包含任何 JS。我认为只有两种机制可以将数据发送回网络服务器; HTML Get 和 Post(它们非常简单)。尽管它的存在可能会使网页更加复杂,但我认为我在回答中提到的 Ajax 系统只是使用 Post。这些可以在 C# 中模拟,FixerMark 的链接描述了如何。
  • 感谢您的帮助!!我最终在后台创建了一个 IE 实例,并使用了我在这里找到的一些自动化示例:codeproject.com/KB/cs/automatinginternetexplore.aspx
【解决方案2】:

根据设备的不同,它可能会使用 modbus 协议的变体 (http://en.wikipedia.org/wiki/Modbus),也可能会使用一些模糊和专有的东西。

最好的办法是一遍又一遍地向设备发送相同的命令,直到您可以识别数据包中的相似之处。

如果它是专有的,它可能是一些简单的东西,例如命令/数据对或可能是 XML blob。如果你真的不走运,它将被压缩或编码,但除非你正在破解游戏或自动取款机,否则这不太可能。

询问设备制造商是否可以为您提供规格通常也可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多