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

 
 
> Веб сервер, управление и индикация
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
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 25)
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
uriy
сообщение Jan 11 2012, 18:18
Сообщение #16


Гуру
******

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



Цитата
я вам за день такой сервер напишу, это так, к слову.
Я вас за язык не тянул. Жду от вас сервер. Дам вам больше времени, к понедельнику, свое мыло кину вам в личку.
Go to the top of the page
 
+Quote Post
am1808
сообщение Jan 11 2012, 18:23
Сообщение #17


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

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



Цитата(uriy @ Jan 11 2012, 22:18) *
Я вас за язык не тянул. Жду от вас сервер. Дам вам больше времени, к понедельнику, свое мыло кину вам в личку.

я за бесплатно не нанимался

Сообщение отредактировал am1808 - Jan 11 2012, 18:23
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 11 2012, 18:29
Сообщение #18


Знающий
****

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



Цитата(am1808 @ Jan 11 2012, 18:31) *
ядро, я упоминал, необходимо пересобрать для поддержки /sys/class/gpio для работы из userspace
есть модули ядра, ТС правильнее под его задачи написать драйвер и взаимодействовать из юсерспейса(из сервера) с этим модулем.
конечно, только безумный будет мапить физ. память из юсерспейса


Написание собственных модулей для экспорта ф-ций GPIO считается deprecated с того момента как появился стандартный интерфейс в sysfs, так что тут с точнойстью до наоборот насчет правильности. Для АЦП лучше всего написать модуль с поддержкой стандартного интерфейса sensors
http://lm-sensors.org/wiki/ProjectInformation
Писать собственные костыли для веба на С - вообще даже не обсуждается - это совершенно неправильно по всем пунктам и можно порекомендовать только в качестве тренировочной задачи при изучении сетевого программирования.
Go to the top of the page
 
+Quote Post
am1808
сообщение Jan 11 2012, 18:40
Сообщение #19


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

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



Цитата(sasamy @ Jan 11 2012, 22:29) *
Писать собственные костыли для веба на С - вообще даже не обсуждается - это совершенно неправильно по всем пунктам и можно порекомендовать только в качестве тренировочной задачи при изучении сетевого программирования.

это вы сами придумали? задачи бывают разными

Цитата(sasamy @ Jan 11 2012, 22:29) *
Написание собственных модулей для экспорта ф-ций GPIO считается deprecated с того момента как появился стандартный интерфейс в sysfs, так что тут с точнойстью до наоборот насчет правильности.

я имел ввиду не то, что вы выше написали,
я говорил про функционал, реализующий драйвер, который как бе может заюзать тот же sysfs
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 11 2012, 19:15
Сообщение #20


Знающий
****

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



Цитата(am1808 @ Jan 11 2012, 22:40) *
это вы сами придумали? задачи бывают разными


С удовольствием послушаю про задачу в которой лучше написать свой костыль.
Go to the top of the page
 
+Quote Post
uriy
сообщение Jan 12 2012, 05:08
Сообщение #21


Гуру
******

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



Я думаю уже все поняли что am1808 не способен написан вебсервер ни за два часа, ни за день. И вряд ли найдется глупец который ему будет платить за непонятно что, когда есть куча бесплатных вебсерверов.
Zelepuk изучите как работает cgi, разберитесь с html (потом с javascript, css и ajax). Примеры cgi скриптов наверняка уже есть в Apache. Для работы с cgi я использовал готовую библиотечку (в моем uclinux она называется cgihtml). Эта библиотека проверяла валидность данных и выдала массив состоящий из полей - имя поля:значение. Можно посмотреть какие пакеты ходят по сети с помощью программы Wireshark.
Go to the top of the page
 
+Quote Post
Idle
сообщение Jan 12 2012, 06:06
Сообщение #22


Местный
***

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



Цитата(uriy @ Jan 12 2012, 08:08) *
Я думаю уже все поняли что am1808 не способен написан вебсервер ни за два часа, ни за день.

я не понял. его можно за день написать http://stackoverflow.com/questions/176409/...ttp-server-in-c

Сообщение отредактировал Idle - Jan 12 2012, 06:06
Go to the top of the page
 
+Quote Post
am1808
сообщение Jan 12 2012, 06:11
Сообщение #23


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

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



Цитата(uriy @ Jan 12 2012, 09:08) *
Я думаю уже все поняли что am1808 не способен написан вебсервер ни за два часа, ни за день. И вряд ли найдется глупец который ему будет платить за непонятно что, когда есть куча бесплатных вебсерверов.

на понт не бери, утром деньги - вечером стулья
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 12 2012, 06:58
Сообщение #24


Знающий
****

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



Цитата(Idle @ Jan 12 2012, 10:06) *
я не понял. его можно за день написать http://stackoverflow.com/questions/176409/...ttp-server-in-c


Ну и зачем это нужно ? я и на ассемблере писал когда делать нечего было sm.gif если уж так нужен встраиваемый веб-сервер на С, все равно проще и надежней взять готовое решение, например:
http://www.gnu.org/software/libmicrohttpd/

Go to the top of the page
 
+Quote Post
Idle
сообщение Jan 12 2012, 08:09
Сообщение #25


Местный
***

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



Цитата(sasamy @ Jan 12 2012, 09:58) *
Ну и зачем это нужно ?

так и не нужно, apache+php пусть ставит
Go to the top of the page
 
+Quote Post
uriy
сообщение Jan 12 2012, 09:43
Сообщение #26


Гуру
******

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



Не надо php! Для cgi нужен си и shell с ними работать с железом будет гораздо удобней.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 10:53
Рейтинг@Mail.ru


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