Запуск и управление приложениями из веб-интерфейса

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

Пример рассмотрен для платы mini2440 с установленной linux – Qtopia версии 2.2.0 , которая имеет предустановленный WEB сервер — lighttpd.

Пример содержит следующие файлы:
t2.html и t2.cgi расположенные в папке веб-сервера /www/
plus – исполняемая программа расположена на SD карте /sdcard/

Рассмотрим простой пример – на странички t2.html создаются 2 поля ввода и одна кнопка:


<html>
<head>
<title>A+B</title>
</head>
<body>
<form method="get" action="t2.cgi" name="A_B">
<p>A=</p>
<input TYPE="addr" SIZE="30" id="id2" name="A"/>
<p>B=</p>
<input TYPE="messag" SIZE="30" id="id2" name="B"/>
<br />
<input type="submit" value="A+B" name="submit"/>
</form>
</body>
</html>

Если t2.html переименовать в index.html – то при обращении к IP адресу устройства будет открываться ваша страница.

Вид страницы t2.html
Вид страницы t2.html

При нажатии на кнопку формируется сообщение:

http://192.168.1.7/t2.cgi?A=2&B=3&submit=A%2BB

В котором указывается: адрес страницы, на которую будет совершён переход и сообщение, передаваемое той страницы. Сообщение в общем виде имеет следующий вид:

name=value&name=value&name=value

В примере оно выглядит следующем образом:

A=2&B=3&submit=A%2BB

Исполняемый файл скрипта — t2.cgi

#!/bin/sh
echo "Content-type: text/html; charset=windows-1251"
echo
echo "<html><head><title>A+B=</title></head><body>"
echo "QUERY_STRING=<br />"
echo $QUERY_STRING
echo "<br /><br />"
A=`echo "$QUERY_STRING" | sed -n 's/^.*A=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
B=`echo "$QUERY_STRING" | sed -n 's/^.*B=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
echo "A= $A<br />"
echo "B= $B<br />"
echo "<br />"
if [ $A ] && [ $B ]
then
/sdcard/plus $A $B
else
echo "<b><p>Ответ:<br />Не заданы A и B!</p></b>"
fi
echo "</body></html>"
exit 0

Рассмотрим данный файл поподробнее:

#!/bin/sh – указывается, с помощью чего будет происходить обработка скрипта
Файлы *.cgi могут быть написаны на любом языке, если только он установлен (например: /usr/bin/perl).

Далее с помощью сообщений echo начинает формироваться страница, которая будет отображаться при исполнении скрипта.

$QUERY_STRING – передаваемое сообщение скрипту.

A=`echo «$QUERY_STRING» | sed -n ‘s/^.*A=\([^&]*\).*$/\1/p’ | sed «s/%20/ /g»`
По средством такой строки, можно из сообщения — $QUERY_STRING получить значения передаваемых параметров. Данная строчка присваивает переменной A значение переданного параметра A.

if [ $A ] && [ $B ]
then
…
else
…
fi

Проверка условия. В этом примере проверяется, что бы переменные A и B были не пусты.

Доступ к приложения и другим файлам осуществляется прямым указанием имени файла или команды. В примере запускается простая программа сложения двух чисел, числа передаются в виде двух параметров
/sdcard/plus $A $B

Что бы скрипт мог исполняться – нужно дать ему соответствующие права chmod +x t2.cgi

Программа сложения двух чисел:

#include
#includeint main(int argc, char **argv)
{
int A,B;
sscanf(argv[1], "%d", &A);
sscanf(argv[2], "%d", &B);
printf("A+B = %d",A+B);
return(0);
}

Программа принимает два параметра и присваивает их переменным A и B, далее выводит их сумму стандартными средствами ввода-вывода.

Выводимые программой сообщения будут восприниматься как часть html странице, поэтому не стоит забывать использовать теги (например тег перевода строки <br>).

Вид страницы t2.html
Результат

При написание статьи использовались материалы следующих сайтов:

Комментировать »

Alex_EXE | 23.07.2010 | Friendly ARM |

Комментарии RSS

Оставьте отзыв