Jump to content

    
Sign in to follow this  
skyled

Управление устройством из WEB-браузера

Recommended Posts

На основе WIZ200WEB хочу иметь доступ к управлению устройством посредством WEB-браузера, в т.ч. с мобильного. В ту платку нужно загрузить rom-файл. Программа для его конвертации есть. Чтобы с ее помощью получить rom-файл нужно написать саму web-страничку. Вот теперь и возник главный вопрос как и в чем можно написать эту страничку? А как сделать так чтобы я на страничке ткнул в надпись, а плата отправила по USART нужную последовательность? Что можно почитать чтобы понять идею? Спасибо.

WIZ_EmbeddedWebServser_User_Manual_V1_0_2.pdf

Share this post


Link to post
Share on other sites

Вам нужно на запросы браузера отправлять web-странички.

Например mozilla при попытку связи отправляет get-запрос

 

GET / HTTP/1.1
User-Agent: Opera/9.62 (Windows NT 6.1; U; ru) Presto/2.1.1
Host: 192.168.0.1
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: uk-UA,uk;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Connection: Keep-Alive

 

Вы можете вернуть ей web-страницу - напр. я возвращаю примитивную страницу ввода пароля (можете набрать её в блокноте, сменить расширение на html и открыть браузером)

 

<html>
<body>
<form action=http://192.168.0.1/ method=post>
Password<br>
<input type=text name=ps size="6" maxlength="6"/><br>
<input type=submit value=SUBMIT>
</form>
</body>
</form>
</form>

 

Нажимаете на кнопку SUBMIT браузер методом post отправляет то что было введено в поле ввода.

А там уже можете проверить пароль, вернуть другие страницы с другими полями, гипрессылками, надписями и т.д.

Почитайте о тегаx html - особенно о html, body, input, br. В opera 10.x можно просматривать и редактировать коды web-страниц.

Share this post


Link to post
Share on other sites

Мне пока совсем не понятно как установить взаимосвязь между нажатием кнопки на страничке и конкретным действием МК на плате. Даже идеи не представляю пока.

Share this post


Link to post
Share on other sites
На основе WIZ200WEB хочу иметь доступ к управлению устройством посредством WEB-браузера, в т.ч. с мобильного. В ту платку нужно загрузить rom-файл. Программа для его конвертации есть. Чтобы с ее помощью получить rom-файл нужно написать саму web-страничку. Вот теперь и возник главный вопрос как и в чем можно написать эту страничку? А как сделать так чтобы я на страничке ткнул в надпись, а плата отправила по USART нужную последовательность? Что можно почитать чтобы понять идею? Спасибо.

WIZ_EmbeddedWebServser_User_Manual_V1_0_2.pdf

 

Ну из мануала ссылку на который вы дали действительно не понять как они предлагают управлять чем-то.

Реализовали ли они это способом Get или способом Post или у них вообще поддержка CGI не организована.

Не удивлюсь если китайцы в своей демке сделали какой-нить примитив который кроме как для зажигания светодиодов ни для чего не годится.

Видно только, что отдельного модуля поддержки CGI у них в сорсах нет, а значит придется многое дописывать самим юзерам по обработке HTTP запросов

Share this post


Link to post
Share on other sites
Ну из мануала ссылку на который вы дали действительно не понять как они предлагают управлять чем-то.

Реализовали ли они это способом Get или способом Post или у них вообще поддержка CGI не организована.

Не удивлюсь если китайцы в своей демке сделали какой-нить примитив который кроме как для зажигания светодиодов ни для чего не годится.

Видно только, что отдельного модуля поддержки CGI у них в сорсах нет, а значит придется многое дописывать самим юзерам по обработке HTTP запросов

Хоть они и корейцы, но действительно ничего мне пока не ясно. Может порекомендуете что-то подобное с большей степенью ясности? Насколько сложно будет что-то дописывать? Они для примера дают вот такой проект для mega128, что на борту. Может прояснит что. Я совершеннейший новичок в этих делах (ethernet-tcp/ip). Нужны подсказки и советы.ex03_webserver.rar

Edited by skyled

Share this post


Link to post
Share on other sites
Хоть они и корейцы, но действительно ничего мне пока не ясно. Может порекомендуете что-то подобное с большей степенью ясности? Насколько сложно будет что-то дописывать? Они для примера дают вот такой проект для mega128, что на борту. Может прояснит что. Я совершеннейший новичок в этих делах (ethernet-tcp/ip). Нужны подсказки и советы.ex03_webserver.rar

Написали уже, с чего начать.

С изучения основ HTTP и HTML.

написать в блокноте

<HTML>

<HEAD>

<TITLE>Заголовок хелловорда</TITLE>

</HEAD>

<BODY>

Хелловорд

</BODY>

</HTML>

, поиграться немного. Это нулевой уровень.

Дальше разбираться с кишками парсера HTTP из вашего примера, искать похожие буквы.

Share this post


Link to post
Share on other sites
Написали уже, с чего начать.

С изучения основ HTTP и HTML.

написать в блокноте

<HTML>

<HEAD>

<TITLE>Заголовок хелловорда</TITLE>

</HEAD>

<BODY>

Хелловорд

</BODY>

</HTML>

, поиграться немного. Это нулевой уровень.

Дальше разбираться с кишками парсера HTTP из вашего примера, искать похожие буквы.

А где кишки искать? Ну положим я разберусь с языком HTML - HTTP. Ну напишу в блокноте и все получится. Что толку если сама идея взаимосвязи HTTP - Mega128 мне пока непонятна. Да и из-за преобразования в rom-файл наверняка все усложнится.

Edited by skyled

Share this post


Link to post
Share on other sites
А где кишки искать? Ну положим я разберусь с языком HTML - HTTP. Ну напишу в блокноте и все получится. Что толку если сама идея взаимосвязи HTTP - Mega128 мне пока непонятна.

А идея в том, что в ваше устройство приходит 2 типа запросов - Get или Post.

По какому-то из существующих каналов связи (UART/Eth/Etc).

Из большого количества буков вы выковыриваете небольшой кусочек информации - что именно от вас хочет пользователь.

И генерируете для него ответную страницу, примерно как я написал, но посложнее, конечно.

В простейшем случае можно заготовить несколько шаблонов ответов, а в нужные "клеточки" вписывать нужные значения.

Но для начала всё-таки поиграйтесь со статическими страничками на компе, или на narod.ru попробуйте что-нибудь сваять.

Всёж немного понятнее станет.

Share this post


Link to post
Share on other sites

Меня на первое время вполне бы устроило только знать куда нажал пользователь на страничке. Что бы такое почитать чтобы понять как и откуда выковыривается то, что мне нужно?

Share this post


Link to post
Share on other sites
Меня на первое время вполне бы устроило только знать куда нажал пользователь на страничке. Что бы такое почитать чтобы понять как и откуда выковыривается то, что мне нужно?

http://ru.wikipedia.org/wiki/HTTP

Обычно в этом случае отправляют запрос Post

Share this post


Link to post
Share on other sites
Хоть они и корейцы, но действительно ничего мне пока не ясно. Может порекомендуете что-то подобное с большей степенью ясности? Насколько сложно будет что-то дописывать? Они для примера дают вот такой проект для mega128, что на борту. Может прояснит что. Я совершеннейший новичок в этих делах (ethernet-tcp/ip). Нужны подсказки и советы.ex03_webserver.rar

 

Начинайте анализ со строки 397 в файле main.c

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

 

Из всех файлов в вашем примере метод Post имеет только страница ipconfig.htm.

 

Откройте ее и увидите описание формы начинающееся со строки <form action="NETCONFIG.CGI" name="form1" method="post"> (лучше это делать в среде Dreamweaver )

Ключевое слово здесь: method="post"

Далее ниже будет строка <input type="submit" value="Network Config" action="NETCONF.CGI">

Это описание самой кнопки. Здесь важна фраза action="NETCONF.CGI"

 

Так вот файл main.c ищет в HTTP запросе надпись типа NETCONF.CGI и находит ее в строке 458 с кодом if(strstr(name,"NETCONFIG.CGI"))

после чего начинает парсить параметры идущие в HTTP запросе вслед за NETCONF.CGI в функции cgi_ipconfig

Какие они там будет зависеть от содержания формы с method="post"

Имена параметров кодируются строками вида <input name="dns" ...

И величины строками вида value="$DNS_SERVER_IP$">

Запись $DNS_SERVER_IP$ означает не саму величину, а шаблон на место которого ваш WEB сервер вставит реальное значение когда будет выдавать страницу в ваш броузер. Эта технология называется SSI (server side includes). (А обсуждаемая технология называется CGI)

 

Итого в процедуре cgi_ipconfig вы могли бы при обнаружении интересующего параметра послать его величину в UART.

Само название параметра и его значение должны быть написаны в форме HTML с кнопкой на вашей странице.

 

Более детально поймете когда снифером посмотрите пакеты отправляемые и принимаемые броузером по протоколу HТTP.

 

Мутными здесь остаются моменты насколько объемными могут быть POST запросы и откуда прога будет брать для них память.

Также при синхронном стиле выполнения процедур отправка в порт будет тормозить прикладной стек.

Ну и неясно как разруливать аутентификацию и доступ нескольких пользователей одновременно.

Share this post


Link to post
Share on other sites
Мутными здесь остаются моменты насколько объемными могут быть POST запросы и откуда прога будет брать для них память.

Также при синхронном стиле выполнения процедур отправка в порт будет тормозить прикладной стек.

Ну и неясно как разруливать аутентификацию и доступ нескольких пользователей одновременно.

Пользователь может быть только один. Приложение будет индивидуального использования. Ресурсы - на плате есть внешняя память (ОЗУ и флеш). На счет тормозов прикладного стека так я понимаю W5300, что на плате, должна разруливать это дело. Весь ethernet на ней держится (как я понимаю, а иначе зачем она там).

P.S. Спасибо за подсказки. Пытаюсь разобраться, хотя пока мало что понятно. Иерархию взаимоотношений в программе пока не вижу толком.

Edited by skyled

Share this post


Link to post
Share on other sites

Я управляю устройствами по WEB с помощью PIC18F67J60. Этот контроллер уже содержит модуль Ethernet.

Микрочип предлагает библиотеку TCP/IP Stack, в библионеке есть все необходимое для работы с HTTP протоколом. Так же есть, для удобства виндовс прога конвертор заранее заготовленных HTML страничек с ссылками эдитами, кнопками и картинками, в специальный С код для подключения к проекту на языке С, к другим С файлам программы контроллера.

Share this post


Link to post
Share on other sites

думаю для начала вам стоит установить web сервер под винду или линукс, на вашу рабочую машину. Чтобы понять как это все работает. Далее начать изучать html, потом навалять свой cgi скрипт, а потом javascript и ajax.

Share this post


Link to post
Share on other sites
думаю для начала вам стоит установить web сервер под винду или линукс, на вашу рабочую машину. Чтобы понять как это все работает. Далее начать изучать html, потом навалять свой cgi скрипт, а потом javascript и ajax.

А зачем CGI и яваскрипт ajax ?

 

Ведь для управления устройством по WEB достаточно поверхностного знания HTML и боле-менее HTTP, совсем чуть-чуть TCP/IP.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this