реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Веб сервер, управление и индикация
Zelepuk
сообщение Jan 10 2012, 08:48
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Имеется ARM9 с Debian Linux на борту. Всё функционирует отлично.
Хочется создать страницу, которая отображала бы значение некоторой переменной(например с АЦП) и позволяла бы по нажатию на странице кнопки менять логическое состояние GPIO на ARM9.
Подскажите как реализуются подобные вещи.
С линуксом знаком поверхностно, с веб не работал вообще. laughing.gif
Незнаю откуда зайти

Сообщение отредактировал Zelepuk - Jan 10 2012, 08:55
Go to the top of the page
 
+Quote Post
Idle
сообщение Jan 10 2012, 09:56
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



1. сервер - apache/встроенный в busybox/google 'embedded http server'
2. "выполнялка скриптов" - php/haserl/самописный бинарник/google 'embedded php'
3. скрипт на языке этой выполнялки, который выполняет нужные действия и генерирует html
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 10 2012, 10:57
Сообщение #3


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Zelepuk @ Jan 10 2012, 12:48) *
.. Подскажите как реализуются подобные вещи...Незнаю откуда зайти


с зади sm.gif))

1) вы должны чётко понимать что должен получить броузер клиента (явно написанный текст в HTML).
2) необходимо научить скрипт отрабатывающий на стороне сервака генерить необходимый HTML в зависимости от переменных сервака.
3) провести локальные переменные сервака до скрипта работающего на сервере.

например.
вы хотите подсветить в зависимости от даты некий текст на страничке.
1) смотрим как меняется цвет в HTML
2) находим место и вставляем в скрипт (как пример php) HTML код который должен высылаться клиенту.
3) смотрим реализацию функции типа гэт дата локально на сервере самим пых-пых...

удачи вам
(круглый)
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jan 10 2012, 12:27
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



нужно вот что:
1) вывести некую цифру, отображающую значение переменной.
2) кнопочка, по нажатии которой зажигается лампочка
Go to the top of the page
 
+Quote Post
uriy
сообщение Jan 10 2012, 14:06
Сообщение #5


Гуру
******

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



Изучите что такое cgi. cgi скрипты обычно находятся в папке cgi-bin вебсервера. Для работы скриптов с железом пишите программу на си. помещаете ее в папку cgi-bin. Из броузера методом get или post отправляете запросы в ваш cgi скрипт. Они туда приходят так же как если бы вы запускали эту программу из консоли с параметрами. Параметры и есть ваш запрос из броузера. В ответ скрипт выдает инфу, делает это обычным printf ом.
Я использовал вебвервер boa. давно не поддерживается, но мне был нужен под ucLinux. Сделано управление/чтение пинов, обвноление ПО, запись параметров в файл.
Go to the top of the page
 
+Quote Post
am1808
сообщение Jan 10 2012, 15:40
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337



да что вы парню голову морочите и усложняете ему задачу biggrin.gif

на си пишешь простой сервер, который слушает 80 порт,
по GET || POST запросу от броузера вываливаешь ему (клиенту, тобишь броузеру) необходимые значения переменных, в виде простейшего html, вот и все решение( 100-150 строк кода )

Сообщение отредактировал am1808 - Jan 10 2012, 15:41
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jan 10 2012, 16:58
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(am1808 @ Jan 10 2012, 19:40) *
да что вы парню голову морочите и усложняете ему задачу biggrin.gif

на си пишешь простой сервер, который слушает 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
Go to the top of the page
 
+Quote Post
am1808
сообщение Jan 10 2012, 17:01
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 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) *
вот тут более подробно, если я правильно понял, вы имеете ввиду шлюз.

тут имеется ввиду какой либо веб-сервер
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jan 10 2012, 19:56
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 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 курить...
Go to the top of the page
 
+Quote Post
am1808
сообщение Jan 11 2012, 04:58
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 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) кнопочка, по нажатии которой зажигается лампочка"


отсюда вывод такой: проще написать самописный серверок под ваши нужды, из которого вы "более проще достучитесь до системы"

а выбирать как делать, смотрите сами, как именно вам проще
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 11 2012, 09:42
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 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 %>

Go to the top of the page
 
+Quote Post
am1808
сообщение Jan 11 2012, 10:01
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 11 2012, 10:37
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(am1808 @ Jan 11 2012, 14:01) *
опять же, веб сервер сконфигурить надо, ему придется разбраться с тем же cgi, php и прочей лабудой, времени он потратит больше, нежели, чем он напишет простой серверок с использованием сокетов за пару часов, не забивая голову лишним


PHP тут не нужен а с html ознакомиться в любом случае придется. Писать сервак хоть и простой в то время как существуют готовые решения глупо - это сейчас нужно одну переменную вывести а потом развивать систему попросту умаешься, правда я не понял про какие переменные идет речь. Для GPIO если не использовать стандартный интерфейс sysfs нужно мапить регистры переиферии в юзерспейс, при этом фактически нужно давать доступ программе ко всей физической памяти системы (/dev/mem), выставлять эту возможность в Интеренет - это вообще безумие.
Go to the top of the page
 
+Quote Post
uriy
сообщение Jan 11 2012, 13:30
Сообщение #14


Гуру
******

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



Цитата
опять же, веб сервер сконфигурить надо, ему придется разбраться с тем же cgi, php и прочей лабудой, времени он потратит больше, нежели, чем он напишет простой серверок с использованием сокетов за пару часов, не забивая голову лишним, и просто и легко выплюнет клиенту необходимую системную инфу или подергает ножками на GPIO.
Чушь я не верю что вы сможете написать вебсервер с поддержкой cgi и выдачей картинок даже за месяц! У автора уже есть готовый Apache, все настройки можно оставить по дефолту. Использовать php для доступа к железу на мой взгляд крайне не удачная затея.

Цитата
ну для этого ему еще надо ядро пересобрать(если этот интерфей не поддерживается у него)
Думаю Apache по дефолту поддерживает shell скрипты и другие исполняемы файлы. Если и не поддерживает то ядро точно пересобирать не надо, надо будет лишь сам сервер перекомпилить.
Go to the top of the page
 
+Quote Post
am1808
сообщение Jan 11 2012, 14:31
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 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), выставлять эту возможность в Интеренет - это вообще безумие.

есть модули ядра, ТС правильнее под его задачи написать драйвер и взаимодействовать из юсерспейса(из сервера) с этим модулем.
конечно, только безумный будет мапить физ. память из юсерспейса
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 23:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016