|
Управление устройством из WEB-браузера, Как устроено оно и что почитать? |
|
|
|
Apr 12 2011, 09:29
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Вам нужно на запросы браузера отправлять 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-страниц.
|
|
|
|
|
Apr 12 2011, 09:39
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(skyled @ Apr 12 2011, 11:42)  На основе WIZ200WEB хочу иметь доступ к управлению устройством посредством WEB-браузера, в т.ч. с мобильного. В ту платку нужно загрузить rom-файл. Программа для его конвертации есть. Чтобы с ее помощью получить rom-файл нужно написать саму web-страничку. Вот теперь и возник главный вопрос как и в чем можно написать эту страничку? А как сделать так чтобы я на страничке ткнул в надпись, а плата отправила по USART нужную последовательность? Что можно почитать чтобы понять идею? Спасибо.
WIZ_EmbeddedWebServser_User_Manual_V1_0_2.pdf ( 2.47 мегабайт )
Кол-во скачиваний: 293Ну из мануала ссылку на который вы дали действительно не понять как они предлагают управлять чем-то. Реализовали ли они это способом Get или способом Post или у них вообще поддержка CGI не организована. Не удивлюсь если китайцы в своей демке сделали какой-нить примитив который кроме как для зажигания светодиодов ни для чего не годится. Видно только, что отдельного модуля поддержки CGI у них в сорсах нет, а значит придется многое дописывать самим юзерам по обработке HTTP запросов
|
|
|
|
|
Apr 12 2011, 09:45
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868

|
Цитата(AlexandrY @ Apr 12 2011, 12:39)  Ну из мануала ссылку на который вы дали действительно не понять как они предлагают управлять чем-то. Реализовали ли они это способом Get или способом Post или у них вообще поддержка CGI не организована. Не удивлюсь если китайцы в своей демке сделали какой-нить примитив который кроме как для зажигания светодиодов ни для чего не годится. Видно только, что отдельного модуля поддержки CGI у них в сорсах нет, а значит придется многое дописывать самим юзерам по обработке HTTP запросов Хоть они и корейцы, но действительно ничего мне пока не ясно. Может порекомендуете что-то подобное с большей степенью ясности? Насколько сложно будет что-то дописывать? Они для примера дают вот такой проект для mega128, что на борту. Может прояснит что. Я совершеннейший новичок в этих делах (ethernet-tcp/ip). Нужны подсказки и советы.
ex03_webserver.rar ( 1.79 мегабайт )
Кол-во скачиваний: 141
Сообщение отредактировал skyled - Apr 12 2011, 09:57
|
|
|
|
|
Apr 12 2011, 10:04
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(skyled @ Apr 12 2011, 13:45)  Хоть они и корейцы, но действительно ничего мне пока не ясно. Может порекомендуете что-то подобное с большей степенью ясности? Насколько сложно будет что-то дописывать? Они для примера дают вот такой проект для mega128, что на борту. Может прояснит что. Я совершеннейший новичок в этих делах (ethernet-tcp/ip). Нужны подсказки и советы.
ex03_webserver.rar ( 1.79 мегабайт )
Кол-во скачиваний: 141Написали уже, с чего начать. С изучения основ HTTP и HTML. написать в блокноте <HTML> <HEAD> <TITLE>Заголовок хелловорда</TITLE> </HEAD> <BODY> Хелловорд </BODY> </HTML> , поиграться немного. Это нулевой уровень. Дальше разбираться с кишками парсера HTTP из вашего примера, искать похожие буквы.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 12 2011, 10:08
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868

|
Цитата(MrYuran @ Apr 12 2011, 13:04)  Написали уже, с чего начать. С изучения основ HTTP и HTML. написать в блокноте <HTML> <HEAD> <TITLE>Заголовок хелловорда</TITLE> </HEAD> <BODY> Хелловорд </BODY> </HTML> , поиграться немного. Это нулевой уровень. Дальше разбираться с кишками парсера HTTP из вашего примера, искать похожие буквы. А где кишки искать? Ну положим я разберусь с языком HTML - HTTP. Ну напишу в блокноте и все получится. Что толку если сама идея взаимосвязи HTTP - Mega128 мне пока непонятна. Да и из-за преобразования в rom-файл наверняка все усложнится.
Сообщение отредактировал skyled - Apr 12 2011, 10:17
|
|
|
|
|
Apr 12 2011, 10:19
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(skyled @ Apr 12 2011, 14:08)  А где кишки искать? Ну положим я разберусь с языком HTML - HTTP. Ну напишу в блокноте и все получится. Что толку если сама идея взаимосвязи HTTP - Mega128 мне пока непонятна. А идея в том, что в ваше устройство приходит 2 типа запросов - Get или Post. По какому-то из существующих каналов связи (UART/Eth/Etc). Из большого количества буков вы выковыриваете небольшой кусочек информации - что именно от вас хочет пользователь. И генерируете для него ответную страницу, примерно как я написал, но посложнее, конечно. В простейшем случае можно заготовить несколько шаблонов ответов, а в нужные "клеточки" вписывать нужные значения. Но для начала всё-таки поиграйтесь со статическими страничками на компе, или на narod.ru попробуйте что-нибудь сваять. Всёж немного понятнее станет.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 12 2011, 11:02
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(skyled @ Apr 12 2011, 12:45)  Хоть они и корейцы, но действительно ничего мне пока не ясно. Может порекомендуете что-то подобное с большей степенью ясности? Насколько сложно будет что-то дописывать? Они для примера дают вот такой проект для mega128, что на борту. Может прояснит что. Я совершеннейший новичок в этих делах (ethernet-tcp/ip). Нужны подсказки и советы.
ex03_webserver.rar ( 1.79 мегабайт )
Кол-во скачиваний: 141Начинайте анализ со строки 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 запросы и откуда прога будет брать для них память. Также при синхронном стиле выполнения процедур отправка в порт будет тормозить прикладной стек. Ну и неясно как разруливать аутентификацию и доступ нескольких пользователей одновременно.
|
|
|
|
|
Apr 12 2011, 11:27
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868

|
Цитата Мутными здесь остаются моменты насколько объемными могут быть POST запросы и откуда прога будет брать для них память. Также при синхронном стиле выполнения процедур отправка в порт будет тормозить прикладной стек. Ну и неясно как разруливать аутентификацию и доступ нескольких пользователей одновременно. Пользователь может быть только один. Приложение будет индивидуального использования. Ресурсы - на плате есть внешняя память (ОЗУ и флеш). На счет тормозов прикладного стека так я понимаю W5300, что на плате, должна разруливать это дело. Весь ethernet на ней держится (как я понимаю, а иначе зачем она там). P.S. Спасибо за подсказки. Пытаюсь разобраться, хотя пока мало что понятно. Иерархию взаимоотношений в программе пока не вижу толком.
Сообщение отредактировал skyled - Apr 12 2011, 11:29
|
|
|
|
|
Apr 12 2011, 12:47
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868

|
Цитата(Слесарь @ Apr 12 2011, 15:10)  Я управляю устройствами по WEB с помощью PIC18F67J60. Этот контроллер уже содержит модуль Ethernet. Микрочип предлагает библиотеку TCP/IP Stack, в библионеке есть все необходимое для работы с HTTP протоколом. Так же есть, для удобства виндовс прога конвертор заранее заготовленных HTML страничек с ссылками эдитами, кнопками и картинками, в специальный С код для подключения к проекту на языке С, к другим С файлам программы контроллера. Т.е. Вы хотите сказать, что можете управлять устройством посредством любого браузера, в т.ч. и с iPhon?
|
|
|
|
|
Apr 12 2011, 13:00
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(skyled @ Apr 12 2011, 14:27)  Пользователь может быть только один. Приложение будет индивидуального использования. Ресурсы - на плате есть внешняя память (ОЗУ и флеш). На счет тормозов прикладного стека так я понимаю W5300, что на плате, должна разруливать это дело. Весь ethernet на ней держится (как я понимаю, а иначе зачем она там). P.S. Спасибо за подсказки. Пытаюсь разобраться, хотя пока мало что понятно. Иерархию взаимоотношений в программе пока не вижу толком. Гарантровать одного пользователя можно только в изолированной интрасети да и то весьма условно. Ибо первый сеанс пользователя может по какой-то причине тормознуть и юзер с успехом начнет новую сессию, завалив все ваши надежды на однопользовательский режим. Тем боле что броузеры качают все таблицы css и прочие инклудные файлы и рисунки все скопом. Чуть усложните страницы и могут появиться разорванные сессии и проч. неприятности. W5300 делает только TCP протокол и только на 8-мь соединений. А прикладные уровни это WEB, FTP, MAIL и т.д. и похоже они там сделаны кое -как. Поэтому рекомендации поучится на настольных серверах малополезны , поскольку ваши траблы будут уникальны. Тут Слесарь вам дело говорит, стек Microchip-а гибче и удобней. (как для начинающих  )
|
|
|
|
|
Apr 12 2011, 13:25
|

Гуру
     
Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606

|
Цитата(Слесарь @ Apr 12 2011, 16:35)  А зачем CGI и яваскрипт ajax ? Ведь для управления устройством по WEB достаточно поверхностного знания HTML и боле-менее HTTP, совсем чуть-чуть TCP/IP. Без javascript не проверить валидность введенных в формы данных. Например, у меня вводится новый ip, mac адрес и др. настройки сети, обновляется прошивка через браузер. А если юзер загонит вместо прошивки pdf файл например, что тогда??? Это же надо все проверять. А используя ajax все выглядит куда приятней, не надо страницу перезагружать целиком. Удобно для отображения состояния датчиков. Может быть мне кто-посоветует простенький web сервер с авторизацией под linux. Щас использую boa для него есть патч для авторизации. Патчится без проблем, но сервер после этого работать не хочет.
|
|
|
|
|
Apr 12 2011, 13:56
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868

|
Цитата Тут Слесарь вам дело говорит, стек Microchip-а гибче и удобней. (как для начинающих ) Ну уговорили. Тогда уж может и носом ткнет во все нужные библиотеки, даташиты и т.п. Я с микрочипом доселе постольку-поскольку и на таком глубинном уровне никогда не бывал. Буду признателен. Спасибо.
|
|
|
|
|
Apr 12 2011, 14:35
|
Гуру
     
Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484

|
Цитата(skyled @ Apr 12 2011, 16:47)  Т.е. Вы хотите сказать, что можете управлять устройством посредством любого браузера, в т.ч. и с iPhon? Без разницы. Скорее всего, смогу управлять и из командной строки Цитата(uriy @ Apr 12 2011, 17:25)  Без javascript не проверить валидность введенных в формы данных. Например, у меня вводится новый ip, mac адрес и др. настройки сети, обновляется прошивка через браузер. А если юзер загонит вместо прошивки pdf файл например, что тогда??? Это же надо все проверять. Не вижу проблем. В случае неправильного ввода контроллер сгенерирует соответствующую страничку пользователю, с сообщением в чем он ошибся. Цитата(uriy @ Apr 12 2011, 17:25)  А используя ajax все выглядит куда приятней, не надо страницу перезагружать целиком. Удобно для отображения состояния датчиков. Мне без разницы что отвечать и принимать по сети. Дай мне описание ajax я тебе напишу под него обработчик на стороне WEB сервера. Цитата(skyled @ Apr 12 2011, 17:56)  Ну уговорили. Тогда уж может и носом ткнет во все нужные библиотеки, даташиты и т.п. Я с микрочипом доселе постольку-поскольку и на таком глубинном уровне никогда не бывал. Буду признателен. Спасибо. Нет уж, советую тебе самому проявить инциативу. Некоторые полезные сведения есть на моем сайте в разделе Самоделки -> Интернет радиоприемники Припоминаю, то что сейчас называется AJAX я делал лет пять тому назад, только у меня это называлось - Удаленный пользовательский интерфейс. Разработчик использующий мой метод, мог писать полноценные приложения на C++. Пользовательский интерфейс этих приложений открывался в любом браузере.
|
|
|
|
|
Apr 13 2011, 07:03
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(uriy @ Apr 13 2011, 07:54)  php совсем не обязателен. У меня cgi скрипы на си и shell. Я бы сказал и AJAX не совсем то. Реально с простыми контроллерами использовать AJAH и то не в чистом виде кодить HTML, а использовать какой-нить Microsoft Expression Blend на базе технологии SilverLight. PHP тоже по сути как скрипт на микроконтроллерах теряет смысл. Идея PHP была открыть для процессов на WEB сервере больше возможностей базовой операционки. Но на микроконтроллерах с RTOS или без нее доступны абсолютно все функции базового фреймворка используя C-и. Хотя конечно, кто юзает линукс на микроконтроллере тот опять попадает в плен ограничений юзерспейса и не получает ни PHP нормального ни полного доступа на C-и.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|