|
Вопросы по Си и HTML. |
|
|
|
Sep 5 2006, 16:46
|

Их либе дих ...
     
Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609

|
Мне надо чтоб мое устройство выдавало отчет о своей работе в виде HTML страницы. Можно сделать (как) чтоб была шаблонная страница с таблицей запотненных ячеер (названия, коментарии) и ячеек в которых отображался какой-либо текст взятый из внешнего файла? Я порылся по докам для чайников, ничего такого не нашел. Так-же хочется самому рожать HTML с таблицей, нарисовал нужный образец странички, в теле своей проги создаю строковый массив в который и засовываю шаблонный HTML, вот незадача синтаксис инициализации строк содержит ковычки и HTML содержит кавычки ... В итоге, вручную заменяю все кавычки во вставляемом HTML-е на "~", во время звпуска процесса перебираю весь масив на предмет этих ~ и заменяю их на " (изврат  ), в этом случае снова вопрос как узнать количество строк в массиве?
--------------------
Усы, борода и кеды - вот мои документы :)
|
|
|
|
|
Sep 5 2006, 18:10
|

Electrical Engineer
     
Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778

|
ну, в бытовых сетевых линуксовых дивайсах там судя по всему (и по расширению файлов) технология ASP (Active Server Page) используется. Т.е. действительно в шаблоны готовых html-страниц вставляются текущие значения переменных программы (в момент запроса страницы со стороны клиента). . интересовался этим в свое время, но подробно не копал: в любом случае это должно поддерживаться веб-сервером, а ASP - наверное оптимальный выбор для embeddeд-приложений. вдогонку: в качестве веб-сервера, поддерживающего ASP можно юзать открытый " GoAhead" еще для ваших задач наверное можно посмотреть в сторону стандарта XML - сфера применения давно уже вышла из епархии веба, а сила XML в том, что позволяет парзить всё и вся =)
Сообщение отредактировал Doka - Sep 5 2006, 18:17
--------------------
|
|
|
|
|
Sep 5 2006, 18:28
|

Местный
  
Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610

|
Цитата(3.14 @ Sep 5 2006, 20:46)  Мне надо чтоб мое устройство выдавало отчет о своей работе в виде HTML страницы. Можно сделать (как) чтоб была шаблонная страница с таблицей запотненных ячеер (названия, коментарии) и ячеек в которых отображался какой-либо текст взятый из внешнего файла? Я порылся по докам для чайников, ничего такого не нашел. Так-же хочется самому рожать HTML с таблицей, нарисовал нужный образец странички, в теле своей проги создаю строковый массив в который и засовываю шаблонный HTML, вот незадача синтаксис инициализации строк содержит ковычки и HTML содержит кавычки ... В итоге, вручную заменяю все кавычки во вставляемом HTML-е на "~", во время звпуска процесса перебираю весь масив на предмет этих ~ и заменяю их на " (изврат  ), в этом случае снова вопрос как узнать количество строк в массиве? Делаем два файла (можно и один, но лениво писать): 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>
|
|
|
|
|
Sep 5 2006, 19:23
|

Их либе дих ...
     
Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609

|
2 Doka Мне этого всего (ASP,XML) пока не надо, задачка-то плевая - родить файл с табличкой и чтоб технология рождения была удобной для изменения/дополнения, сами понимаете моей "крошке" лишний сервис - камень на шее. И к тому во времени очень ограничен (и в познаниях системного программирования  ), банально бузибоксовый веб-сервер в standalone режиме собрать не могу, а Вы мне "GoAhead"  ... Но все равно спасибо. 2 sK0T Я сейчас примерно таким макаром и правлю шаблон, только без файла маппирования (и html внутри лежит) а на макросах в которых забиты строки с нужными данными, далее ищу в строке первый ">" и всавляю свое значение. И все-таки как мне эту засаду с кавычками полечить?
--------------------
Усы, борода и кеды - вот мои документы :)
|
|
|
|
|
Sep 5 2006, 19:31
|

Местный
  
Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610

|
Цитата(3.14 @ Sep 5 2006, 23:23)  И все-таки как мне эту засаду с кавычками полечить? А вот про засаду с кавычками я к сожалению вообще не понял… Есть такая штука — экранирование, это если в общем отвечать. А уж как это экранирование делается в Вашем случае? К примеру во FreeBSD, в шеле обычно экранирование делают так: \" Конструкция слешь кавычка обозначает, что кавычку отдадут программе, а шелл её проигнорирует. Так-же экранирование работает и в Си. :-) У меня к примеру данные вставляет PIC12 и ориентируется по id-шникам элементов html. К примеру так: <div id="temperature"></div>
|
|
|
|
|
Sep 5 2006, 19:34
|

Их либе дих ...
     
Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609

|
Теперь я не понял  Пример: char *String[100]={ ... "<BASEFONT FACE="Century Gothic">", .... };
--------------------
Усы, борода и кеды - вот мои документы :)
|
|
|
|
|
Sep 5 2006, 21:07
|
Частый гость
 
Группа: Свой
Сообщений: 150
Регистрация: 13-10-05
Пользователь №: 9 614

|
Цитата(3.14 @ Sep 5 2006, 23:34)  Теперь я не понял  Пример: char *String[100]={ ... "<BASEFONT FACE="Century Gothic">", .... }; Цитата(3.14 @ Sep 5 2006, 20:46)  в этом случае снова вопрос как узнать количество строк в массиве? В том массиве что вы определили 100 элементов.  То что вам нужно на С/С++ будет выглядеть так: Код char *String[]={ //пустые[], кол. элементов будет равно кол. заданных строк ... "<BASEFONT FACE=\"Century Gothic\">", // добавлены бакслэши перед кавычками .... }; Теперь кол. элементов массива можно получить например так: int size = sizeof(String)/sizeof(char*); Это сработает только в том месте где определение String находится в области видимости. Если же String передается как параметр какой либо ф-ции, и в ней определение не видно, то нужно также явно передать и размер массива size.
|
|
|
|
|
Sep 6 2006, 00:38
|

Местный
  
Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610

|
Цитата(3.14 @ Sep 5 2006, 23:34)  Теперь я не понял :) Пример: char *String[100]={ ... "<BASEFONT FACE="Century Gothic">", .... }; Про то, что не надо употреблять шрифты в html-е, говорить не буду, это аксиома (у всех пользователей разные наборы шрифтов). А тут надо просто экранировать кавычки, да и всё: "<BASEFONT FACE=\"Monaco CY\">",
|
|
|
|
|
Sep 6 2006, 06:48
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 22-08-06
Пользователь №: 19 736

|
Цитата(3.14 @ Sep 5 2006, 20:46)  Мне надо чтоб мое устройство выдавало отчет о своей работе в виде HTML страницы. Можно сделать (как) чтоб была шаблонная страница с таблицей запотненных ячеер (названия, коментарии) и ячеек в которых отображался какой-либо текст взятый из внешнего файла? Я порылся по докам для чайников, ничего такого не нашел. Так-же хочется самому рожать HTML с таблицей, нарисовал нужный образец странички, в теле своей проги создаю строковый массив в который и засовываю шаблонный HTML, вот незадача синтаксис инициализации строк содержит ковычки и HTML содержит кавычки ... В итоге, вручную заменяю все кавычки во вставляемом HTML-е на "~", во время звпуска процесса перебираю весь масив на предмет этих ~ и заменяю их на " (изврат  ), в этом случае снова вопрос как узнать количество строк в массиве? В примере реализации 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 все работает весьма шустро. Гибкость при написании и модифицировании любых страниц очень большая.
|
|
|
|
|
Sep 6 2006, 08:05
|

Electrical Engineer
     
Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778

|
в дополнение к сказанному 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 вложения:
uip.rar ( 51.15 килобайт )
Кол-во скачиваний: 136PS: пример взят с FreeRTOS.org
--------------------
|
|
|
|
|
Sep 6 2006, 15:16
|

учащийся
    
Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249

|
Цитата(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 не знал.
--------------------
Зачем лаять на караван , когда на него можно плюнуть?
|
|
|
|
|
Sep 14 2006, 03:02
|

Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 8-09-06
Из: Россия, Челябинская область
Пользователь №: 20 187

|
Цитата(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
Сообщение отредактировал ?ELF - Sep 14 2006, 03:24
--------------------
do ut des
|
|
|
|
|
Sep 19 2006, 16:43
|
Участник

Группа: Свой
Сообщений: 50
Регистрация: 6-09-06
Пользователь №: 20 138

|
Для решения подобных задач лучше использовать родной для линуха perl. Шаблоны и cgi делаются на лету.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|