Перейти к содержанию
    

Имеется ARM9 с Debian Linux на борту. Всё функционирует отлично.

Хочется создать страницу, которая отображала бы значение некоторой переменной(например с АЦП) и позволяла бы по нажатию на странице кнопки менять логическое состояние GPIO на ARM9.

Подскажите как реализуются подобные вещи.

С линуксом знаком поверхностно, с веб не работал вообще. :laughing:

Незнаю откуда зайти

Изменено пользователем Zelepuk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. сервер - apache/встроенный в busybox/google 'embedded http server'

2. "выполнялка скриптов" - php/haserl/самописный бинарник/google 'embedded php'

3. скрипт на языке этой выполнялки, который выполняет нужные действия и генерирует html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.. Подскажите как реализуются подобные вещи...Незнаю откуда зайти

 

с зади :)))

 

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

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

3) провести локальные переменные сервака до скрипта работающего на сервере.

 

например.

вы хотите подсветить в зависимости от даты некий текст на страничке.

1) смотрим как меняется цвет в HTML

2) находим место и вставляем в скрипт (как пример php) HTML код который должен высылаться клиенту.

3) смотрим реализацию функции типа гэт дата локально на сервере самим пых-пых...

 

удачи вам

(круглый)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нужно вот что:

1) вывести некую цифру, отображающую значение переменной.

2) кнопочка, по нажатии которой зажигается лампочка

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Изучите что такое cgi. cgi скрипты обычно находятся в папке cgi-bin вебсервера. Для работы скриптов с железом пишите программу на си. помещаете ее в папку cgi-bin. Из броузера методом get или post отправляете запросы в ваш cgi скрипт. Они туда приходят так же как если бы вы запускали эту программу из консоли с параметрами. Параметры и есть ваш запрос из броузера. В ответ скрипт выдает инфу, делает это обычным printf ом.

Я использовал вебвервер boa. давно не поддерживается, но мне был нужен под ucLinux. Сделано управление/чтение пинов, обвноление ПО, запись параметров в файл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

на си пишешь простой сервер, который слушает 80 порт,

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

Изменено пользователем am1808

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

на си пишешь простой сервер, который слушает 80 порт,

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

 

можете немного подробнее, пока что сложновато звучит

 

Изучите что такое cgi. cgi скрипты обычно находятся в папке cgi-bin вебсервера. Для работы скриптов с железом пишите программу на си. помещаете ее в папку cgi-bin. Из броузера методом get или post отправляете запросы в ваш cgi скрипт. Они туда приходят так же как если бы вы запускали эту программу из консоли с параметрами. Параметры и есть ваш запрос из броузера. В ответ скрипт выдает инфу, делает это обычным printf ом.

Я использовал вебвервер boa. давно не поддерживается, но мне был нужен под ucLinux. Сделано управление/чтение пинов, обвноление ПО, запись параметров в файл.

 

вот тут более подробно, если я правильно понял, вы имеете ввиду шлюз.

Изменено пользователем Zelepuk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можете немного подробнее, пока что сложновато звучит

 

например, посмотрите вот тут

http://www.paulgriffiths.net/program/c/webserv.php

 

или гуглите "simple web server on c"

 

вот тут более подробно, если я правильно понял, вы имеете ввиду шлюз.

тут имеется ввиду какой либо веб-сервер

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

например, посмотрите вот тут

http://www.paulgriffiths.net/program/c/webserv.php

 

или гуглите "simple web server on c"

 

 

тут имеется ввиду какой либо веб-сервер

а если у меня уже стоит Apache? так наверное и придётся php курить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а если у меня уже стоит Apache? так наверное и придётся php курить...

вы же сами написали что вам нужно:

 

нужно вот что:

1) вывести некую цифру, отображающую значение переменной.

2) кнопочка, по нажатии которой зажигается лампочка"

 

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

 

а выбирать как делать, смотрите сами, как именно вам проще

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

а выбирать как делать, смотрите сами, как именно вам проще

 

До 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 как раз проще достучаться из шелла и 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.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

опять же, веб сервер сконфигурить надо, ему придется разбраться с тем же cgi, php и прочей лабудой, времени он потратит больше, нежели, чем он напишет простой серверок с использованием сокетов за пару часов, не забивая голову лишним

 

PHP тут не нужен а с html ознакомиться в любом случае придется. Писать сервак хоть и простой в то время как существуют готовые решения глупо - это сейчас нужно одну переменную вывести а потом развивать систему попросту умаешься, правда я не понял про какие переменные идет речь. Для GPIO если не использовать стандартный интерфейс sysfs нужно мапить регистры переиферии в юзерспейс, при этом фактически нужно давать доступ программе ко всей физической памяти системы (/dev/mem), выставлять эту возможность в Интеренет - это вообще безумие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

ну для этого ему еще надо ядро пересобрать(если этот интерфей не поддерживается у него)
Думаю Apache по дефолту поддерживает shell скрипты и другие исполняемы файлы. Если и не поддерживает то ядро точно пересобирать не надо, надо будет лишь сам сервер перекомпилить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

я вам за день такой сервер напишу, это так, к слову.

почитайте про socket Berkley, для вашего же блага, это два

cgi не нужен - это три

 

Думаю Apache по дефолту поддерживает shell скрипты и другие исполняемы файлы. Если и не поддерживает то ядро точно пересобирать не надо, надо будет лишь сам сервер перекомпилить.

ядро и апач никак не связаны по большому счету,

ядро, я упоминал, необходимо пересобрать для поддержки /sys/class/gpio для работы из userspace

 

Для GPIO если не использовать стандартный интерфейс sysfs нужно мапить регистры переиферии в юзерспейс, при этом фактически нужно давать доступ программе ко всей физической памяти системы (/dev/mem), выставлять эту возможность в Интеренет - это вообще безумие.

есть модули ядра, ТС правильнее под его задачи написать драйвер и взаимодействовать из юсерспейса(из сервера) с этим модулем.

конечно, только безумный будет мапить физ. память из юсерспейса

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...