Как я могу управлять встроенным программным обеспечением устройства в C#, используя HTTP?

У меня есть аппаратное обеспечение со встроенным пользовательским элементом управления, доступ к которому осуществляется путем ввода IP-адреса устройства в веб-браузере. Устройство подключается напрямую к моему компьютеру через Ethernet-кабель x-over и статические IP-адреса. Мне нужно интегрировать управление устройством в мое приложение C#.

Я думал о том, чтобы использовать анализатор пакетов для мониторинга трафика между моим компьютером и устройством, одновременно играя с элементами управления устройства в моем веб-браузере. Затем выясните, какие пакеты, отправляемые моим ПК, соответствуют элементам управления, которые я использую в то время. Затем я могу создать класс пакетов HTTP или TCP в своем приложении C# и отправить их на устройство с помощью класса Socket.

Тем не менее, я не особо разбираюсь в сетевых протоколах, поэтому, когда я использую Wireshark для мониторинга трафика между моим ПК и устройством, я не уверен, с чего начать, когда выясняю, какие пакеты и что делают. У кого-нибудь есть какие-либо идеи? Я открыт для всего. Спасибо!!

РЕДАКТИРОВАТЬ: Трудно точно объяснить, что такое мое устройство, но в основном это сложный датчик, который обычно используется в промышленных приложениях, поэтому он может использовать Modbus, с которым я в меру знаком. Знаете ли вы, как я могу узнать, какой протокол используется при проверке пакетов? Я заметил (используя Wireshark), что пакеты, отправляемые с моего компьютера на устройство, выполняются в виде 1 HTTP-пакета, затем 5 TCP-пакетов и повторяют эту же последовательность, пока элемент управления открыт в моем браузере. Есть ли какие-либо ресурсы, которые могли бы дать мне лучшее понимание того, что происходит?

2 ответа

Решение

Если это контролируется браузером, моей первой мыслью будет изучить веб-страницы, которые устройство отправляет в ваш браузер, и посмотреть, что браузер должен делать, когда вы манипулируете элементами управления - это кажется намного проще, чем возиться с Wireshark.

Я что-то упускаю, что делает это невозможным (например, система управления на основе Flash)? Если это делается только с помощью HTML или Javascript, а также сообщений HTML POST или чего-то более сложного, такого как Ajax, то разработать интерфейс будет относительно легко.

В зависимости от устройства оно будет использовать вариант протокола Modbus ( http://en.wikipedia.org/wiki/Modbus) или что-то неясное и проприетарное.

Лучше всего повторять одну и ту же команду на устройство, пока вы не сможете распознать сходство в пакетах.

Если он является частным, то, вероятно, это будет что-то простое, например пара команда / данные или, возможно, большой двоичный объект XML. Если вам действительно не повезло, он будет сжат или закодирован, но если вы не взломали игру или банкомат, это маловероятно.

Спросить производителя устройства, если они могут дать вам спецификацию, часто работает также.

Другие вопросы по тегам