Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Html<->AT91SAM7x256-EK
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Annuta
У меня тестовая плата на AT91SAM7x256-EK, и пример веб сервера с FreeRTOS.org.
Народ, подскажите как мне перердать параметры из веб стр в прогу ? Сейчас я могу устанавливать чекбоксы в сответсвии с тем, загорелся ли светодиод или нет... а как сделать обратную связь...???
Спасибо.
axle
Случайно наткнулся на похожий пример, но для eCos. Может пригодится.
http://www.mlbassoc.com/examples/build_httpd.html
Annuta
Народ, подскажите хоть в каких файлах шукать, какие функции смотреть ... Очень надо... help.gif
lebiga
Цитата(Annuta @ May 13 2007, 18:14) *
Народ, подскажите хоть в каких файлах шукать, какие функции смотреть ... Очень надо... help.gif



Прицепить на форму кнопочку submit (<INPUT type=submit value="Передать">) - по нажатию будут переданы http запрос с объектами :если метод GET - то прямо после некоторых символов - потом обрабатываем как строку. Читать лучше всего справочники HTML. Без программы типа Ehereal - анализатора езернет пакетов - тоже трудно отладить
Annuta
Цитата(lebiga @ May 13 2007, 18:51) *
Прицепить на форму кнопочку submit (<INPUT type=submit value="Передать">) - по нажатию будут переданы http запрос с объектами :если метод GET - то прямо после некоторых символов - потом обрабатываем как строку. Читать лучше всего справочники HTML. Без программы типа Ehereal - анализатора езернет пакетов - тоже трудно отладить

Это я умею, и с чекбоксами отправлять я умею... Запрос получается - просто вызов cgi функции, я о другом немного... как мне эти функции переделать чтобы они входящие параметры понимали...
например такой запрос /cgi/rtos/led=1&led=2 зажигал бы 1и 2 диод...ТАКОЕ ВООБЩЕ ВОЗМОЖНО??? Вот в чём сложно�
gormih
Цитата(Annuta @ May 14 2007, 03:31) *
Это я умею, и с чекбоксами отправлять я умею... Запрос получается - просто вызов cgi функции, я о другом немного... как мне эти функции переделать чтобы они входящие параметры понимали...
например такой запрос /cgi/rtos/led=1&led=2 зажигал бы 1и 2 диод...ТАКОЕ ВООБЩЕ ВОЗМОЖНО??? Вот в чём сложно�




Так это зависит от того, какой у Вас сервер :-)

Вообще говоря, это делается на php или же на perl (что реже).

В когфигурации web сервера, если он это поддерживает, задается директория с исполняемыми файлами (например cgi-bin) и файлам в этой директории в зависимости от расширения сопоставляется приложение (процесс), который будет выполнять запрос к этому файлу. Дальше, когда осуществляется запрос к файлу из исполняемой директории вызывается процесс, сопоставленный текущему расширению файла с аргументами имя этого файла и парметры обращения. Вот так вкратце. Так, например работает apache.

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

В апаче файл конфигурации, если мне не изменяет память это httpd.conf
Annuta
Как мне "доставить" php или perl в мой проект в иаре ? Я работаю с проектом из папки ..
uIP_Demo_IAR_ARM7
Это вообще возможно ?
nss
Цитата(Annuta @ May 14 2007, 10:49) *
Как мне "доставить" php или perl в мой проект в иаре ? Я работаю с проектом из папки ..
uIP_Demo_IAR_ARM7
Это вообще возможно ?

cgi-bin это не только perl и php но и стандартные бинарные исполняемые файлы. Вывод в stdout которых должен содержать html.
Annuta
Цитата(nss @ May 14 2007, 11:12) *
cgi-bin это не только perl и php но и стандартные бинарные исполняемые файлы. Вывод в stdout которых должен содержать html.

на сколько я знаю, перл - дейчтвительно грузится в эту папку - а вот пхп скрипты грузятся в основную директорию.... как мне прикрутить к проекту пхп ???? ПОДСКАЖИТЕ пожаста....
или вы хотите сказать, что мне достаточно просто создать описание php скрипта в файле fsdata.c ? и всё...?
KRS
Цитата(Annuta @ May 14 2007, 11:49) *
на сколько я знаю, перл - дейчтвительно грузится в эту папку - а вот пхп скрипты грузятся в основную директорию.... как мне прикрутить к проекту пхп ???? ПОДСКАЖИТЕ пожаста....
или вы хотите сказать, что мне достаточно просто создать описание php скрипта в файле fsdata.c ? и всё...?


Ну php я думаю к SAM7X прикрутить не получиться wink.gif

Надо доку читать на пример, там наверняка можно callback поставить на запросы.
nss
Цитата(Annuta @ May 14 2007, 11:49) *
на сколько я знаю, перл - дейчтвительно грузится в эту папку - а вот пхп скрипты грузятся в основную директорию.... как мне прикрутить к проекту пхп ???? ПОДСКАЖИТЕ пожаста....
или вы хотите сказать, что мне достаточно просто создать описание php скрипта в файле fsdata.c ? и всё...?

У вас в паке ../cgi-bin/ лежит файл aaaa он может быть как интерпретируемым, так и исполняемым. Когда вы заходите по ссылке h_t_tp://hostname/cgi-bin/aaaa Происходит выполнение этого файла.
cgi "файлы" можно разделить на два типа: скрипты и исполняемые файлы в формате операционной системы.
При активации скриптов этот файл передается интерпретатору соответствующего формата (в котором написан скрипт) далее интерпретатор в соответствии с о скриптом выполняет некоторые действия в системе.
В случае исполняемого файла он непосредственно и выполняется.
вы же можете написать некоторую программку которая будет дергать ногами. положите ее в папку cgi-bin и обратитесь к ней.
PS для cgi-bin соответствие потоков stdin- метод POST, stdout - метод GET.
Annuta
crying.gif жаль что пхп нельзя прикрутить ... Скажите а ктонить знает на какой языке вообще написаны cgi скрипты в FreeRTOS ... там язык неизвестного происхождения... 07.gif
мраак.....
lebiga
Цитата(Annuta @ May 14 2007, 13:21) *
crying.gif жаль что пхп нельзя прикрутить ... Скажите а ктонить знает на какой языке вообще написаны cgi скрипты в FreeRTOS ... там язык неизвестного происхождения... 07.gif
мраак.....


Похоже - это видоизмененный html. По крайней мере, я чтобы просматривать - переименовую в с раширением htm и смотрю. Первые буквы - это собственно команды скрипта. Похоже, нужно писать в html редакторе (для просмотра красивости), а потом вручную дописывать эти буковки. В качестве редактора рекомендую WDS2.EXE - простой и экономный.
Собстенно, лучше объясните - что хотите получить на странице - последовательно действия оператора - и реакция светодиодов
Annuta
Народ мне надо вот что, у меня от этой платы будет упарвляться например экранчик, я например делаю стр с полем, пишу в этом поле какое-то значение /например цвет фона/ и жму кнопочку...
<Form action=/cgi/rtos/ method=GET>
<input type=text name=fon>
</Form>
так вот ... как мне эту переменную предать экранчику... то бишь присвоить какому-то регистру это значение... вот что мне надо...! передавать в прошивку значение из веб интерфейса....вот.
Скажите ЕСТЬ ЛИ КАКОЙ-ТО способо передачи этих даннных...????!!!! ну хоть какой-то....
lebiga
Цитата(Annuta @ May 14 2007, 18:07) *
Народ мне надо вот что, у меня от этой платы будет упарвляться например экранчик, я например делаю стр с полем, пишу в этом поле какое-то значение /например цвет фона/ и жму кнопочку...
<Form action=/cgi/rtos/ method=GET>
<input type=text name=fon>
</Form>
так вот ... как мне эту переменную предать экранчику... то бишь присвоить какому-то регистру это значение... вот что мне надо...! передавать в прошивку значение из веб интерфейса....вот.
Скажите ЕСТЬ ЛИ КАКОЙ-ТО способо передачи этих даннных...????!!!! ну хоть какой-то....



В хтмл странице
<Form action=1 method=GET>
1 - чтобы не искало файл
<INPUT type=squad name="MiColor' maxLength=10 size=10 >
<INPUT type=submit value=" Передать ">

Файл скомпилировать через fs_generator и вставить в проект -

грузить

в поле ввели black и нажали передать

Потом искать в принимаемой строке после ? переменную MiColor=black
black - значение
Дописать в httpd после анализа /* Check for GET. */

Может есть проще и готовый метод - я uip детально не разбирал - мне он не нравится
Annuta
Цитата(lebiga @ May 14 2007, 18:52) *
В хтмл странице
<Form action=1 method=GET>
1 - чтобы не искало файл
<INPUT type=squad name="MiColor' maxLength=10 size=10 >
<INPUT type=submit value=" Передать ">

Файл скомпилировать через fs_generator и вставить в проект -

грузить

в поле ввели black и нажали передать

Потом искать в принимаемой строке после ? переменную MiColor=black
black - значение
Дописать в httpd после анализа /* Check for GET. */

Может есть проще и готовый метод - я uip детально не разбирал - мне он не нравится

... а где мне эту строку найти.... вопрос в том... как мне до этой строки добраться... в какой переменной будет эта строкка ?
KRS
Кстати не обязательно форму делать и submit
можно javascript обойтись - запрашивать определенный URL
или вообще использовать XmlHttpRequest тогда и страницу перегружать не надо
Annuta
Цитата(KRS @ May 14 2007, 19:06) *
Кстати не обязательно форму делать и submit
можно javascript обойтись - запрашивать определенный URL
или вообще использовать XmlHttpRequest тогда и страницу перегружать не надо

Народ... короче я понимаю так. Запрос например .../cgi/rtos?led=1
Я в своей функции из cgi.c SetLed(led,1);/led- номер диода, 1 - зажечь/ .. и будет счастье .. так ???
и больше ничего не нужно....
lebiga
Цитата(Annuta @ May 14 2007, 19:01) *
... а где мне эту строку найти.... вопрос в том... как мне до этой строки добраться... в какой переменной будет эта строкка ?


uip_appdata[] в файле httpd
Annuta
Цитата(lebiga @ May 14 2007, 19:27) *
uip_appdata[] в файле httpd

СПАИСБО lebiga !!!! Получилось... вот только вмнсто нормальных символов /имя переменной/ пишет бред...
sscanf(uip_appdata[k], "%s", &s[0]) ;
strcat(hs->var_name,s);
Я уж и разными функциями... а он не хочет! Как конвертировать в нормальный символ uip_appdata ?
lebiga
Цитата(Annuta @ May 15 2007, 11:47) *
СПАИСБО lebiga !!!! Получилось... вот только вмнсто нормальных символов /имя переменной/ пишет бред...
sscanf(uip_appdata[k], "%s", &s[0]) ;
strcat(hs->var_name,s);
Я уж и разными функциями... а он не хочет! Как конвертировать в нормальный символ uip_appdata ?


Лучше искать посимвольно. Или strstr(uip_appdata,"%s") - находится указатель на первое вложение. Только может быть проблема с выходом за пределы массива, так что лучше написать посимвольно до sizeof(uip_appdata)
_dem
пример :

файл fs/cgi/link
Код
i /link_header.html
t <center><b> Channels status </b><br><br><br></center>
t <br>channel #0 status :
c e 0
t <br>channel #1 status :
c e 1
.


в файл cgi.c добавлено :
Цитата
cgifunction cgitab[] = {
print_stats, /* CGI function "a" */
file_stats, /* CGI function "b" */
tcp_stats, /* CGI function "c" */
rtos_stats, /* CGI function "d" */
link_stats /* CGI function "e" */};


т.е. для вызова функции c алиасом
Код
c [b]e[/b] 0

в CGI-файле будет вызвана функция link_stats

в самой функции link_stats() проверяем
hs->script[4] - тут будет значение параметра
Код
c e [b]0[/b]
Annuta
_dem я написала функцию она вызывается, но только из других функций например rtos / если заменить "d" на "e" / а вот из браузера нет...
/cgi/link/ вызываю по ссылке - не работает...
мой файл /cgi/link

/cgi/link
t <center><b> Channels status </b><br><br><br></center>
t <br>channel #0 status :
c e 0
t <br>channel #1 status :
c e 1
_dem
файловую систему пересобрали ?

файловую систему пересобрали ?

необходимо преобразовать файловую систему в файл с данными (в виде констант), которые потом будут собраны с проектом и вшиты в контроллер.

для этого (под windows) попробуйте аттач
запускать

fs_generator.exe fs

в папке ...demo...\uip

после чего пересобираем проект и перешиваем MCU.

аттач
Annuta
попробывала, ваша прога мне создаёт пустой файл.. куда бы я его не копировала... может она как-то по особому запускатеся..???
_dem
Цитата(Annuta @ May 16 2007, 14:53) *
попробывала, ваша прога мне создаёт пустой файл.. куда бы я его не копировала... может она как-то по особому запускатеся..???


запускаем в директории uip (в той, в которой находится директория fs)

Код
D:\test\RTOS\Demo\uIP_Demo_IAR_ARM7\uip>fs_generator.exe fs
File System generator for UIP 0.9 http://dunkels.com/adam/uip/
DESIGN4FPGA (c) April 2006 http://www.design4fpga.com
found html: 404.html, processing file... done!
found plain: \cgi\files, processing file... done!
found plain: \cgi\gsm, processing file... done!
found plain: \cgi\rtos, processing file... done!
found plain: \cgi\stats, processing file... done!
found plain: \cgi\tcp, processing file... done!
found html: control.html, processing file... done!
found plain: files_footer.plain, processing file... done!
found html: files_header.html, processing file... done!
found html: gsm_header.html, processing file... done!
found png: \img\logo.png, processing file... done!
found html: index.html, processing file... done!
found plain: stats_footer.plain, processing file... done!
found html: stats_header.html, processing file... done!
found plain: tcp_footer.plain, processing file... done!
found html: tcp_header.html, processing file... done!
Processed 16 files, writting data to fsdata.c


создала fsdata.c на 59 кБ. Какие у Вас сообщения программы ?
Annuta
..у меня она вообще не запускается.. окошечко едва мелькает при запуске..пишет скопируйте пожалйста в папку с сайтом! ... запускаю имеено в одной директории с папкой fs в которой стр и скрипты... антивирус её не блокирует ... я проверила..
скопировала её в Demo\uIP_Demo_IAR_ARM7\uip
где вы её скачали если не секрет ??? может там версия старая...
_dem
Цитата(Annuta @ May 16 2007, 15:31) *
..у меня она вообще не запускается.. окошечко едва мелькает при запуске..пишет скопируйте пожалйста в папку с сайтом! ... запускаю имеено в одной директории с папкой fs в которой стр и скрипты... антивирус её не блокирует ... я проверила..
скопировала её в Demo\uIP_Demo_IAR_ARM7\uip
где вы её скачали если не секрет ??? может там версия старая...


в папке Demo\uIP_Demo_IAR_ARM7\uip запустите cmd.exe
там выполните fs_generator.exe fs

что скажет ?
Annuta
Извините _dem РАБОТАЕТ ВСЁ... я просто не правильно запускала из камандной строки!!!! СПАСИБО !!!!!!!
fs_generator.exe fs работает
_dem
Цитата(Annuta @ May 16 2007, 15:56) *
Извините _dem РАБОТАЕТ ВСЁ... я просто не правильно запускала из камандной строки!!!! СПАСИБО !!!!!!!
fs_generator.exe fs работает


smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.