реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вопросы по Си и HTML.
3.14
сообщение Sep 5 2006, 16:46
Сообщение #1


Их либе дих ...
******

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



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


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
Doka
сообщение Sep 5 2006, 18:10
Сообщение #2


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


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
sK0T
сообщение Sep 5 2006, 18:28
Сообщение #3


Местный
***

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



Цитата(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>
Go to the top of the page
 
+Quote Post
Doka
сообщение Sep 5 2006, 18:44
Сообщение #4


Electrical Engineer
******

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



sK0T , если проект большой - то замумокаться можно таким парзингом мап-файлов ручным заниматься sad.gif


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 5 2006, 19:23
Сообщение #5


Их либе дих ...
******

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



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

И все-таки как мне эту засаду с кавычками полечить?


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
sK0T
сообщение Sep 5 2006, 19:31
Сообщение #6


Местный
***

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



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


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

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

У меня к примеру данные вставляет PIC12 и ориентируется по id-шникам элементов html. К примеру так:
<div id="temperature"></div>
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 5 2006, 19:34
Сообщение #7


Их либе дих ...
******

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



Теперь я не понял smile.gif
Пример:
char *String[100]={
...
"<BASEFONT FACE="Century Gothic">",
....
};


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
_artem_
сообщение Sep 5 2006, 19:49
Сообщение #8


учащийся
*****

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



асп по моему микромягкая технология у линуха php используется. Но эти все техноологии использовать не имеет смысла - слишком большие да и не нужны они для одной страницы. Вроде бы сделать темплейт в виде страницы и засунуть туда данные большого труда не должно составить - htmlьовский table все должен делать. Если не хотите разбираться с html, то скочайте какую нибудь страницу с инета в которой таблица и переделайте ее как шаблонную для своей програми задав количество строк и столбцов соответственно, а можно и не держать страницу в памяти а генерировать ее динамически вставляя . Хранить надо шапку файла где начинается и кончается head . В html сейчас слишком много прибамбасов. Обратить надо внимание как таблица будет прорисовываться на разных брозерах - они могут по разному воспринимать один и тот же соурс а также не использовать специфичные таги (у нетскейпа и микрософта есть такие) да и вроде бы не будут они нужны.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
ms1
сообщение Sep 5 2006, 21:07
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 150
Регистрация: 13-10-05
Пользователь №: 9 614



Цитата(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.
Go to the top of the page
 
+Quote Post
_artem_
сообщение Sep 5 2006, 21:32
Сообщение #10


учащийся
*****

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



Если string писылается как аргумент , то должен работать copy constructor. Но в ембеддед может быть и по другому .
по моему на pic12 особенно на ц++ не поиграешь. Можно задать строку на С а посылать ее указатель и если лень вычислять ее длину по нулевому байту на коце , то можно и заодно длину тоже включить как аргумент в функции.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
sK0T
сообщение Sep 6 2006, 00:38
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 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\">",
Go to the top of the page
 
+Quote Post
and_pp
сообщение Sep 6 2006, 06:48
Сообщение #12


Участник
*

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



Цитата(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 все работает весьма шустро. Гибкость при написании и модифицировании любых страниц очень большая.
Go to the top of the page
 
+Quote Post
Doka
сообщение Sep 6 2006, 07:47
Сообщение #13


Electrical Engineer
******

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



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


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


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Doka
сообщение Sep 6 2006, 08:05
Сообщение #14


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 килобайт ) Кол-во скачиваний: 136


PS: пример взят с FreeRTOS.org


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
_artem_
сообщение Sep 6 2006, 15:16
Сообщение #15


учащийся
*****

Группа: Свой
Сообщений: 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 не знал.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 02:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01534 секунд с 7
ELECTRONIX ©2004-2016