Вообщем научился я отправлять данные на контроллер. Но только с Shell. Делается это через CGI.
Простой пример двух клавиш: включить, выключить
Code:
#!/bin/sh
#
# $Id: package.cgi 6240 2007-06-17 22:29:05Z marceln $
#
#
# HTML Header
#
cat << EOF
Content-type: text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="CGI:shell" />
<meta name="version" content="\$Id: package.cgi 6240 2007-06-17 22:29:05Z marceln $" />
<title>Neuro WEB Interface</title>
</head>
<body>
<h1>Test On/Off Led</h1>
<form methode="GET">
<table>
</table>
<input type="submit" name="onled" value="On">
<input type="submit" name="offled" value="Off">
</form>
</body>
</html>
EOF
NAMEFILTER=.
# QUERY_STRING=task=install&package=atk
IFS='&'
set -- ${QUERY_STRING}
for i in $@
do
case ${i%%=*} in
offled)
OFFLED="${i#*=}"
;;
onled)
ONLED="${i#*=}"
;;
*)
echo "<b>ERROR</b>: Unkown option '${i}'"
echo '</body>'
echo '</html>'
exit 1
;;
esac
done
if [ "${ONLED}" != "" ]
then
echo "1" > /dev/usb/tts/0
fi
if [ "${OFFLED}" != "" ]
then
echo "2" > /dev/usb/tts/0
fi
echo '</body>'
echo '</html>'
Для чайников как я объясняю))) как все работает в действительности.
есть устройство, оно через адаптер UART (или 5 вольтовыq RS232) -> USB
чтото наподобие что-то здесь, но у меня взят просто из шнурка для телефона.
Тогда включаем драйвера устройства, я это сделал по автомату в post-mount
ну и чтоб по десять раз не бегать туда же втыкаем запуск web сервера на 81 порт.
Code:
insmod usbserial.o
insmod pl2303.o
busybox httpd -p 81 -h <тут каталог где будет индекс файл сервера>
в каталоге который вы указали создаем под катоалог cgi-bin туда кладем файл тот что вы создали в нем кладем тот текст что я написал, разрешаем права на чтение запись...
flashfs save
flashfs commit
flashfs enable
и reboot)))
По идее появится веб страничка на адресе вашего роутера на 81 порту.
ссылка примерно такая - http://<IP вашего роутера>:81/cgi-bin/<Название вашего файла со скриптом> Сейчас мой девайс включает лампочку когда на порт попадает 1 а выключает когда попадает 2. (это чтоб было понятно что делает скрипт)
Сейчас пишу CGI скрипт на си. что сейчас получается вывести на сайт так это фразу Hellow Word))).
Я только начинаю писать на Си
Может кто поможет с етим?
вот пример программы на си чтоб вывести на страничку знаменитую фразу)):
Code:
#include <stdio.h>
int main()
{
printf("Content-Type: text/html\n\n");
printf("<h1>Hello World!</h1>\n");
}
Научился читать данные на Си с устройства
Это делается примерно так:
Code:
#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
//#include <iostream>
//using namespace std
int main(void)
{
int n;
int fd; /* File descriptor for the port */
char buf[200];
struct termios options;
fd = open("/dev/usb/tts/0", O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd == -1) perror("open_port: Unable to open /dev/ttyS0 - ");
else
{
fcntl(fd, F_SETFL, 0);
tcgetattr(fd, &options);
cfmakeraw(&options);
/************************************************************************/
// c_cflag
options.c_cflag |= CS8;
options.c_cflag |= PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag |= CREAD; // Enable Receiver
options.c_cflag |= CLOCAL; // Ignore modem control lines.
cfsetispeed(&options, B9600);
cfsetospeed(&options, B9600);
tcsetattr(fd, TCSAFLUSH, &options);
tcflush(fd, TCIOFLUSH); /**/
// Main code
char buf = 0;
while ( buf != 'A') {
read (fd, &buf, 1);
printf ("%c\n",buf);
}
}
}
Сейчас у меня задача:
Написать демона чтоб слушал порт tts и CGI на си чтоб общался с демоном и выдавал инфу на сайт.
По поводу самого интересного вопроса. Какое устройство я буду использовать)))
Ответ прост))) Я инженер конструктор. Это первый проект который я хотел бы поставить на производство. Первая плата уже на заводе. Скоро буду собирать. Постараюсь чтоб она была доступна.
Читаю книжки по С, Но не могу найти толковых примеров про написание CGI скриптов. мне нужно просто вывести клавишу на сайт и принять данные с устройства и поместить на той же веб-странице.
Кто может помочь по данному вопросу буду очень признательный... Охота сделать проект овпенсорным.