|
Веб сервер, управление и индикация |
|
|
|
Jan 10 2012, 08:48
|
Знающий
   
Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464

|
Имеется ARM9 с Debian Linux на борту. Всё функционирует отлично. Хочется создать страницу, которая отображала бы значение некоторой переменной(например с АЦП) и позволяла бы по нажатию на странице кнопки менять логическое состояние GPIO на ARM9. Подскажите как реализуются подобные вещи. С линуксом знаком поверхностно, с веб не работал вообще. Незнаю откуда зайти
Сообщение отредактировал Zelepuk - Jan 10 2012, 08:55
|
|
|
|
|
Jan 10 2012, 10:57
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Zelepuk @ Jan 10 2012, 12:48)  .. Подскажите как реализуются подобные вещи...Незнаю откуда зайти с зади  )) 1) вы должны чётко понимать что должен получить броузер клиента (явно написанный текст в HTML). 2) необходимо научить скрипт отрабатывающий на стороне сервака генерить необходимый HTML в зависимости от переменных сервака. 3) провести локальные переменные сервака до скрипта работающего на сервере. например. вы хотите подсветить в зависимости от даты некий текст на страничке. 1) смотрим как меняется цвет в HTML 2) находим место и вставляем в скрипт (как пример php) HTML код который должен высылаться клиенту. 3) смотрим реализацию функции типа гэт дата локально на сервере самим пых-пых... удачи вам (круглый)
|
|
|
|
|
Jan 10 2012, 15:40
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
да что вы парню голову морочите и усложняете ему задачу  на си пишешь простой сервер, который слушает 80 порт, по GET || POST запросу от броузера вываливаешь ему (клиенту, тобишь броузеру) необходимые значения переменных, в виде простейшего html, вот и все решение( 100-150 строк кода )
Сообщение отредактировал am1808 - Jan 10 2012, 15:41
|
|
|
|
|
Jan 10 2012, 16:58
|
Знающий
   
Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464

|
Цитата(am1808 @ Jan 10 2012, 19:40)  да что вы парню голову морочите и усложняете ему задачу  на си пишешь простой сервер, который слушает 80 порт, по GET || POST запросу от броузера вываливаешь ему (клиенту, тобишь броузеру) необходимые значения переменных, в виде простейшего html, вот и все решение( 100-150 строк кода ) можете немного подробнее, пока что сложновато звучит Цитата(uriy @ Jan 10 2012, 18:06)  Изучите что такое cgi. cgi скрипты обычно находятся в папке cgi-bin вебсервера. Для работы скриптов с железом пишите программу на си. помещаете ее в папку cgi-bin. Из броузера методом get или post отправляете запросы в ваш cgi скрипт. Они туда приходят так же как если бы вы запускали эту программу из консоли с параметрами. Параметры и есть ваш запрос из броузера. В ответ скрипт выдает инфу, делает это обычным printf ом. Я использовал вебвервер boa. давно не поддерживается, но мне был нужен под ucLinux. Сделано управление/чтение пинов, обвноление ПО, запись параметров в файл. вот тут более подробно, если я правильно понял, вы имеете ввиду шлюз.
Сообщение отредактировал Zelepuk - Jan 10 2012, 16:59
|
|
|
|
|
Jan 10 2012, 17:01
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(Zelepuk @ Jan 10 2012, 20:58)  можете немного подробнее, пока что сложновато звучит например, посмотрите вот тут http://www.paulgriffiths.net/program/c/webserv.phpили гуглите "simple web server on c" Цитата(Zelepuk @ Jan 10 2012, 20:58)  вот тут более подробно, если я правильно понял, вы имеете ввиду шлюз. тут имеется ввиду какой либо веб-сервер
|
|
|
|
|
Jan 10 2012, 19:56
|
Знающий
   
Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464

|
Цитата(am1808 @ Jan 10 2012, 21:01)  например, посмотрите вот тут http://www.paulgriffiths.net/program/c/webserv.phpили гуглите "simple web server on c" тут имеется ввиду какой либо веб-сервер а если у меня уже стоит Apache? так наверное и придётся php курить...
|
|
|
|
|
Jan 11 2012, 04:58
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(Zelepuk @ Jan 10 2012, 23:56)  а если у меня уже стоит Apache? так наверное и придётся php курить... вы же сами написали что вам нужно: Цитата(Zelepuk @ Jan 10 2012, 23:56)  нужно вот что: 1) вывести некую цифру, отображающую значение переменной. 2) кнопочка, по нажатии которой зажигается лампочка" отсюда вывод такой: проще написать самописный серверок под ваши нужды, из которого вы "более проще достучитесь до системы" а выбирать как делать, смотрите сами, как именно вам проще
|
|
|
|
|
Jan 11 2012, 09:42
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Jan 11 2012, 08:58)  отсюда вывод такой: проще написать самописный серверок под ваши нужды, из которого вы "более проще достучитесь до системы" а выбирать как делать, смотрите сами, как именно вам проще До GPIO как раз проще достучаться из шелла и haserl который тут уже советовали очень удобен, вот пример из CGI: Код <% if test "$FORM_system" = "audio_on"; then %> <% echo "1" > /sys/class/gpio/gpio50/value %> <% fi %>
<% if test "$FORM_system" = "audio_off"; then %> <% echo "0" > /sys/class/gpio/gpio50/value %> <% fi %>
|
|
|
|
|
Jan 11 2012, 10:01
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Jan 11 2012, 13:42)  До GPIO как раз проще достучаться из шелла и haserl который тут уже советовали очень удобен, вот пример из CGI: Код <% if test "$FORM_system" = "audio_on"; then %> <% echo "1" > /sys/class/gpio/gpio50/value %> <% fi %>
<% if test "$FORM_system" = "audio_off"; then %> <% echo "0" > /sys/class/gpio/gpio50/value %> <% fi %> ну для этого ему еще надо ядро пересобрать(если этот интерфей не поддерживается у него), во - первых, во - вторых, да, с GPIO, так же как и с /proc без разницы как работать(так же как и с любым другим файлом), при условии, если ему нужно вывалить клиенту какую то текущую инфу из файла или записать что то в файл. ну а если ему значения переменных выводить, то тут ему нужно каким-то образом, опять же, например, через файлы взаимодействовать, или же, через тот же /proc, /sysfs, если у него работает какой-то модуль, или, чтобы узнать внутренние значения переменных из модуля. опять же, веб сервер сконфигурить надо, ему придется разбраться с тем же cgi, php и прочей лабудой, времени он потратит больше, нежели, чем он напишет простой серверок с использованием сокетов за пару часов, не забивая голову лишним, и просто и легко выплюнет клиенту необходимую системную инфу или подергает ножками на GPIO.
|
|
|
|
|
Jan 11 2012, 10:37
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Jan 11 2012, 14:01)  опять же, веб сервер сконфигурить надо, ему придется разбраться с тем же cgi, php и прочей лабудой, времени он потратит больше, нежели, чем он напишет простой серверок с использованием сокетов за пару часов, не забивая голову лишним PHP тут не нужен а с html ознакомиться в любом случае придется. Писать сервак хоть и простой в то время как существуют готовые решения глупо - это сейчас нужно одну переменную вывести а потом развивать систему попросту умаешься, правда я не понял про какие переменные идет речь. Для GPIO если не использовать стандартный интерфейс sysfs нужно мапить регистры переиферии в юзерспейс, при этом фактически нужно давать доступ программе ко всей физической памяти системы (/dev/mem), выставлять эту возможность в Интеренет - это вообще безумие.
|
|
|
|
|
Jan 11 2012, 13:30
|

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

|
Цитата опять же, веб сервер сконфигурить надо, ему придется разбраться с тем же cgi, php и прочей лабудой, времени он потратит больше, нежели, чем он напишет простой серверок с использованием сокетов за пару часов, не забивая голову лишним, и просто и легко выплюнет клиенту необходимую системную инфу или подергает ножками на GPIO. Чушь я не верю что вы сможете написать вебсервер с поддержкой cgi и выдачей картинок даже за месяц! У автора уже есть готовый Apache, все настройки можно оставить по дефолту. Использовать php для доступа к железу на мой взгляд крайне не удачная затея. Цитата ну для этого ему еще надо ядро пересобрать(если этот интерфей не поддерживается у него) Думаю Apache по дефолту поддерживает shell скрипты и другие исполняемы файлы. Если и не поддерживает то ядро точно пересобирать не надо, надо будет лишь сам сервер перекомпилить.
|
|
|
|
|
Jan 11 2012, 14:31
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(uriy @ Jan 11 2012, 17:30)  Чушь я не верю что вы сможете написать вебсервер с поддержкой cgi и выдачей картинок даже за месяц! У автора уже есть готовый Apache, все настройки можно оставить по дефолту. Использовать php для доступа к железу на мой взгляд крайне не удачная затея. я вам за день такой сервер напишу, это так, к слову. почитайте про socket Berkley, для вашего же блага, это два cgi не нужен - это три Цитата(uriy @ Jan 11 2012, 17:30)  Думаю Apache по дефолту поддерживает shell скрипты и другие исполняемы файлы. Если и не поддерживает то ядро точно пересобирать не надо, надо будет лишь сам сервер перекомпилить. ядро и апач никак не связаны по большому счету, ядро, я упоминал, необходимо пересобрать для поддержки /sys/class/gpio для работы из userspace Цитата(sasamy @ Jan 11 2012, 14:37)  Для GPIO если не использовать стандартный интерфейс sysfs нужно мапить регистры переиферии в юзерспейс, при этом фактически нужно давать доступ программе ко всей физической памяти системы (/dev/mem), выставлять эту возможность в Интеренет - это вообще безумие. есть модули ядра, ТС правильнее под его задачи написать драйвер и взаимодействовать из юсерспейса(из сервера) с этим модулем. конечно, только безумный будет мапить физ. память из юсерспейса
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|