Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы по Си и HTML.
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
3.14
Мне надо чтоб мое устройство выдавало отчет о своей работе в виде HTML страницы.
Можно сделать (как) чтоб была шаблонная страница с таблицей запотненных ячеер (названия, коментарии) и ячеек в которых отображался какой-либо текст взятый из внешнего файла? Я порылся по докам для чайников, ничего такого не нашел.
Так-же хочется самому рожать HTML с таблицей, нарисовал нужный образец странички, в теле своей проги создаю строковый массив в который и засовываю шаблонный HTML, вот незадача синтаксис инициализации строк содержит ковычки и HTML содержит кавычки ... В итоге, вручную заменяю все кавычки во вставляемом HTML-е на "~", во время звпуска процесса перебираю весь масив на предмет этих ~ и заменяю их на " (изврат smile.gif), в этом случае снова вопрос как узнать количество строк в массиве?
Doka
ну, в бытовых сетевых линуксовых дивайсах там судя по всему (и по расширению файлов) технология ASP (Active Server Page) используется. Т.е. действительно в шаблоны готовых html-страниц вставляются текущие значения переменных программы (в момент запроса страницы со стороны клиента).
.
интересовался этим в свое время, но подробно не копал: в любом случае это должно поддерживаться веб-сервером, а ASP - наверное оптимальный выбор для embeddeд-приложений.


вдогонку: в качестве веб-сервера, поддерживающего ASP можно юзать открытый "GoAhead"
еще для ваших задач наверное можно посмотреть в сторону стандарта XML - сфера применения давно уже вышла из епархии веба, а сила XML в том, что позволяет парзить всё и вся =)
sK0T
Цитата(3.14 @ Sep 5 2006, 20:46) *
Мне надо чтоб мое устройство выдавало отчет о своей работе в виде HTML страницы.
Можно сделать (как) чтоб была шаблонная страница с таблицей запотненных ячеер (названия, коментарии) и ячеек в которых отображался какой-либо текст взятый из внешнего файла? Я порылся по докам для чайников, ничего такого не нашел.
Так-же хочется самому рожать HTML с таблицей, нарисовал нужный образец странички, в теле своей проги создаю строковый массив в который и засовываю шаблонный HTML, вот незадача синтаксис инициализации строк содержит ковычки и HTML содержит кавычки ... В итоге, вручную заменяю все кавычки во вставляемом HTML-е на "~", во время звпуска процесса перебираю весь масив на предмет этих ~ и заменяю их на " (изврат smile.gif), в этом случае снова вопрос как узнать количество строк в массиве?



Делаем два файла (можно и один, но лениво писать):
1) html-код;
2) файл мэппинга.

Что делаем:
1) читаем из файла мэппинга цифру;
2) читаем из html-ника ЦИФРА-байт;
3) выводим их;
4) вставляем нужное значение;
5) повторить до конца html-ля.

Примерно так.

Например.

html-файл:

<html><head><title>blah!</title></head><table><tr><td></td></tr></table></html>

мэппинг:
54

Что это значит:
1) читаем из html-файла 54 байта (до </td>);
2) выводим нужное нам значение;
3) читаем html-файл до конца.

Получаем на выходе что-то в духе:
<html><head><title>blah!</title></head><table><tr><td>42</td></tr></table></html>
Doka
sK0T , если проект большой - то замумокаться можно таким парзингом мап-файлов ручным заниматься sad.gif
3.14
2 Doka
Мне этого всего (ASP,XML) пока не надо, задачка-то плевая - родить файл с табличкой и чтоб технология рождения была удобной для изменения/дополнения, сами понимаете моей "крошке" лишний сервис - камень на шее. И к тому во времени очень ограничен (и в познаниях системного программирования smile.gif), банально бузибоксовый веб-сервер в standalone режиме собрать не могу, а Вы мне "GoAhead" smile.gif ...
Но все равно спасибо.
2 sK0T
Я сейчас примерно таким макаром и правлю шаблон, только без файла маппирования (и html внутри лежит) а на макросах в которых забиты строки с нужными данными, далее ищу в строке первый ">" и всавляю свое значение.

И все-таки как мне эту засаду с кавычками полечить?
sK0T
Цитата(3.14 @ Sep 5 2006, 23:23) *
И все-таки как мне эту засаду с кавычками полечить?


А вот про засаду с кавычками я к сожалению вообще не понял… Есть такая штука — экранирование, это если в общем отвечать. А уж как это экранирование делается в Вашем случае? К примеру во FreeBSD, в шеле обычно экранирование делают так: \"

Конструкция слешь кавычка обозначает, что кавычку отдадут программе, а шелл её проигнорирует. Так-же экранирование работает и в Си. :-)

У меня к примеру данные вставляет PIC12 и ориентируется по id-шникам элементов html. К примеру так:
<div id="temperature"></div>
3.14
Теперь я не понял smile.gif
Пример:
char *String[100]={
...
"<BASEFONT FACE="Century Gothic">",
....
};
_artem_
асп по моему микромягкая технология у линуха php используется. Но эти все техноологии использовать не имеет смысла - слишком большие да и не нужны они для одной страницы. Вроде бы сделать темплейт в виде страницы и засунуть туда данные большого труда не должно составить - htmlьовский table все должен делать. Если не хотите разбираться с html, то скочайте какую нибудь страницу с инета в которой таблица и переделайте ее как шаблонную для своей програми задав количество строк и столбцов соответственно, а можно и не держать страницу в памяти а генерировать ее динамически вставляя . Хранить надо шапку файла где начинается и кончается head . В html сейчас слишком много прибамбасов. Обратить надо внимание как таблица будет прорисовываться на разных брозерах - они могут по разному воспринимать один и тот же соурс а также не использовать специфичные таги (у нетскейпа и микрософта есть такие) да и вроде бы не будут они нужны.
ms1
Цитата(3.14 @ Sep 5 2006, 23:34) *
Теперь я не понял smile.gif
Пример:
char *String[100]={
...
"<BASEFONT FACE="Century Gothic">",
....
};

Цитата(3.14 @ Sep 5 2006, 20:46) *
в этом случае снова вопрос как узнать количество строк в массиве?


В том массиве что вы определили 100 элементов. smile.gif
То что вам нужно на С/С++ будет выглядеть так:
Код
char *String[]={ //пустые[], кол. элементов будет равно кол. заданных строк
   ...
   "<BASEFONT FACE=\"Century Gothic\">",   // добавлены бакслэши перед кавычками
   ....
};


Теперь кол. элементов массива можно получить например так:
int size = sizeof(String)/sizeof(char*);

Это сработает только в том месте где определение String находится в области видимости.
Если же String передается как параметр какой либо ф-ции, и в ней определение не видно, то нужно также явно передать и размер массива size.
_artem_
Если string писылается как аргумент , то должен работать copy constructor. Но в ембеддед может быть и по другому .
по моему на pic12 особенно на ц++ не поиграешь. Можно задать строку на С а посылать ее указатель и если лень вычислять ее длину по нулевому байту на коце , то можно и заодно длину тоже включить как аргумент в функции.
sK0T
Цитата(3.14 @ Sep 5 2006, 23:34) *
Теперь я не понял :)
Пример:
char *String[100]={
...
"<BASEFONT FACE="Century Gothic">",
....
};



Про то, что не надо употреблять шрифты в html-е, говорить не буду, это аксиома (у всех пользователей разные наборы шрифтов). А тут надо просто экранировать кавычки, да и всё:

"<BASEFONT FACE=\"Monaco CY\">",
and_pp
Цитата(3.14 @ Sep 5 2006, 20:46) *
Мне надо чтоб мое устройство выдавало отчет о своей работе в виде HTML страницы.
Можно сделать (как) чтоб была шаблонная страница с таблицей запотненных ячеер (названия, коментарии) и ячеек в которых отображался какой-либо текст взятый из внешнего файла? Я порылся по докам для чайников, ничего такого не нашел.
Так-же хочется самому рожать HTML с таблицей, нарисовал нужный образец странички, в теле своей проги создаю строковый массив в который и засовываю шаблонный HTML, вот незадача синтаксис инициализации строк содержит ковычки и HTML содержит кавычки ... В итоге, вручную заменяю все кавычки во вставляемом HTML-е на "~", во время звпуска процесса перебираю весь масив на предмет этих ~ и заменяю их на " (изврат smile.gif), в этом случае снова вопрос как узнать количество строк в массиве?


В примере реализации TCP/IP для MSP430 есть пример HTTP сервера, который, кроме всего прочего может работать с активными страницами. Вот кусок из описания:

* The uIP web server is a very simplistic implementation of an HTTP
* server. It can serve web pages and files from a read-only ROM
* filesystem, and provides a very small scripting language.
*
* The script language is very simple and works as follows. Each
* script line starts with a command character, either "i", "t", "c",
* "#" or ".". The "i" command tells the script interpreter to
* "include" a file from the virtual file system and output it to the
* web browser. The "t" command should be followed by a line of text
* that is to be output to the browser. The "c" command is used to
* call one of the C functions from the httpd-cgi.c file. A line that
* starts with a "#" is ignored (i.e., the "#" denotes a comment), and
* the "." denotes the last script line.
*
* The script that produces the file statistics page looks somewhat
* like this:
*
\code
i /header.html
t <h1>File statistics</h1><br><table width="100%">
t <tr><td><a href="/index.html">/index.html</a></td><td>
c a /index.html
t </td></tr> <tr><td><a href="/cgi/files">/cgi/files</a></td><td>
c a /cgi/files
t </td></tr> <tr><td><a href="/cgi/tcp">/cgi/tcp</a></td><td>
c a /cgi/tcp
t </td></tr> <tr><td><a href="/404.html">/404.html</a></td><td>
c a /404.html
t </td></tr></table>
i /footer.plain

На TMS430 все работает весьма шустро. Гибкость при написании и модифицировании любых страниц очень большая.
Doka
Цитата(_artem_ @ Sep 5 2006, 23:49) *
асп по моему микромягкая технология у линуха php используется. Но эти все техноологии использовать не имеет смысла - слишком большие да и не нужны они для одной страницы.


мелкомягкая технология - это ASP.NET , т.е. собственная интерпретация ASP cо всякими VB-вкраплениями.
а сам ASP - платформонезависим и в мире еmbedded-linux дивайсов существует давно и успешно. (тот же "GoAhead" получил широкое распространение в еmbedded)
php - это же скорее скриптовый язык, нежели технология, который требует поддержки на cтороне сервера (и как почти любой язык- платформонезависим).
у меня сложилось впечатление, что php требует куда бОльшей ресурсоемкости, нежели asp.
Doka
в дополнение к сказанному and_pp по части реализации этого в uIP


Цитата
CGI Scripts
Each of the served WEB pages includes some dynamic data to demonstrate the use of the uIP CGI scripting facility. See the uIP documentation for further information.

The RTOS CGI file generates a table containing information on each task executing within the demo. This table is interesting for demonstration purposes, but as it is necessary to leave interrupts disabled for an extended period during its creation it is not recommended for use in applications with strict real time requirements.

Performance
Performance is therefore greatly improved by transmitting dynamically generated data as one large packet, rather than multiple small packets. This is demonstrated by the sample CGI scripts included in the source code download. The CGI script used to generate the table of tasks transmits the entire table in one packet and therefore loads quickly. The CGI scripts used to generate the table of files and the table of TCP/IP statistics both transmit each line within the respective tables individually, and therefore the pages take longer to load.


сам пример с динамической таблицей в /uip/fs вложения: Нажмите для просмотра прикрепленного файла

PS: пример взят с FreeRTOS.org
_artem_
Цитата(Doka @ Sep 6 2006, 10:47) *
Цитата(_artem_ @ Sep 5 2006, 23:49) *
асп по моему микромягкая технология у линуха php используется. Но эти все техноологии использовать не имеет смысла - слишком большие да и не нужны они для одной страницы.


мелкомягкая технология - это ASP.NET , т.е. собственная интерпретация ASP cо всякими VB-вкраплениями.
а сам ASP - платформонезависим и в мире еmbedded-linux дивайсов существует давно и успешно. (тот же "GoAhead" получил широкое распространение в еmbedded)
php - это же скорее скриптовый язык, нежели технология, который требует поддержки на cтороне сервера (и как почти любой язык- платформонезависим).
у меня сложилось впечатление, что php требует куда бОльшей ресурсоемкости, нежели asp.


asp , если не ошибаюсь, появилась задолго до asp.net:
http://en.wikipedia.org/wiki/Active_Server_Pages

Насчет ее использования в embedded не знал.
3.14
Непонятный эффект, когда пытаюсь просмотреть страницу рожденную cgi скриптом, то в IE она нормально показывается а в Opera сам текст. Сначала думал ошибка в таблицах, потом в ходе экспериментов урезал до:
Код
<HTML>
<HEAD>
<title>Info</title>
</HEAD>
<BODY>
<P  align="center" >Example HTML page</P>
</BODY>
</HTML>
И все равно распечатывается сам листинг ???
vet
3.14
Content-type какой? должен быть text/html
3.14
Content-type это кокое-то поле самого HTML или настройки браузера?
?ELF
Цитата(3.14 @ Sep 14 2006, 03:17) *
Content-type это кокое-то поле самого HTML или настройки браузера?

Примерно так должно выглядеть:
Код
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Примеры применения микроконтроллеров семейства ARM</title>
<meta http-equiv="pragma" content="no-cache">
....
....
</head>
<body>
...
</body>
</html>

---
Вот здесь есть ответы на многие вопросы: _h**p://www.citforum.ru/internet/search/metatags.shtml
psL
http://docs.linux.cz/programming/other/ALP/

ссылка на книжку и код, в 11 главе рассматривается реализация задачи похожей на вашу
IPI
Для решения подобных задач лучше использовать родной для линуха perl.
Шаблоны и cgi делаются на лету.
3.14
1) Perl не собрался в контексте uClinux для microblaze (желания разбираться нет).
2) мне и без него тормозливости работы хватает (каждый вновь запускаемый процесс это ~0.5 сек).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.