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

 
 
 
Reply to this topicStart new topic
> Изменение настроек через http/ajax
grinux
сообщение Oct 20 2017, 20:57
Сообщение #1


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

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



Всем привет.
Есть устройство, в котором есть настройки, которые храняться с формате структур C.
Например, вот описание небольшого кусочка настроек:
Код
typedef struct _CTRL_ITEM
{
  char obj_idx;
  enum
  {
    MORE=0,
    LESS,
    EQU,
    NEQU,
    RISING,
    FALLING,
    CHANGED
  }condition;
  struct
  {
    union
    {
      unsigned int val_u;
      float val_f;
    };
    char state;
  }ctrl_val;
}CTRL_ITEM;

Далее для примера может использоваться массив такого блока настроек:
  struct
  {
    char enable;
    struct
    {
      CTRL_ITEM ctrl_item[PROG_BLOCK_LENGTH];
      ACT_ITEM act_item;
    }ControlBlock[PROG_LOGIC_BLOCKS];
  }ProgrammingSettings;


Сейчас изменение настроек осуществляется через telnet командную строку.
На устройстве также есть самописный HTTP сервер с тестовой страницей на js+jquery, визуализирующей состояние прибора.
Сейчас размышляю над тем, как организовать полноценное взаимодействие с html страницей для возможности не только визуализации но и полноценной настройки прибора, чтобы полностью отказаться от терминального меню.
Основное затруднение в следующем. Когда мы используем терминальное командное меню или терминальную псевдографику нет проблем с идентификацией переменной, значение которой мы выводим на экран или получаем в результате ввода пользователем. В каждый конкретный момент времени у нас есть активный item, однозначно идентифицируемый своим адресом в памяти.
Когда же нам требуется передать набор настроек на html страницу а потом обратно, возникает необходимость идентификации сущностей, которые мы выгружаем на страницу, а потом измененные выгружаем со страницы на сервер.
В классическом случае это реализуется хранением настроек в виде xml json yaml и тому подобных форматах.
Мне же для экономии ресурсов не хотелось бы отказываться от структурированного хранения. Но при этом возникает вопрос идентификации элементов.
Ничего элегантного мне пока придумать не удалось, поэтому обращаюсь за советом, как лучше всего организовать такое взаимодействие. Пока в голову пришла только одна мысль. Сделать движок, который бы на html страницу выгружал для каждого параметра набор адрес или смещение параметра в блоке настроек, значение параметра, тип параметра. После манипуляций со значением параметра на html странице скриптом выгружать аналогичный набор обратно в устройство(на сервер), где движок производит запись значения в память по принятому адресу или смещению.
Это решение не кажется мне эффективным и элегантным, хотя возможно я и ошибаюсь.
Прошу совета гуру. Вопрос серьезный, хочется сделать правильно и масштабируемо.

В распоряжении TnKernel TNnet LPC2387 (96RAM 512FLASH). Настройки хранятся во внешней 8Mbit flash.

Сообщение отредактировал grinux - Oct 20 2017, 20:59
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 28 2017, 17:35
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(grinux @ Oct 20 2017, 23:57) *
Сейчас размышляю над тем, как организовать полноценное взаимодействие с html страницей для возможности не только визуализации но и полноценной настройки прибора, чтобы полностью отказаться от терминального меню.


Т.е сейчас весь ваш "сервер" может только работать как плеер, загружать файлы с диска или что у вас там для хранения и передавать их по сети в браузер? Никакого SSI\CGI взаимодействия с программой нет?

Цитата(grinux @ Oct 20 2017, 23:57) *
Когда же нам требуется передать набор настроек на html страницу а потом обратно, возникает необходимость идентификации сущностей, которые мы выгружаем на страницу, а потом измененные выгружаем со страницы на сервер.


Вот ведь как написали, я даже не понял biggrin.gif
Т.е. создаете страницу с нужными данными и загружаете на диск, с которого потом считывет веб-сервер?

Сообщение отредактировал mantech - Oct 28 2017, 17:32
Go to the top of the page
 
+Quote Post
grinux
сообщение Nov 8 2017, 12:36
Сообщение #3


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

Группа: Участник
Сообщений: 97
Регистрация: 2-01-09
Пользователь №: 42 891



Цитата(mantech @ Oct 28 2017, 20:35) *
Т.е сейчас весь ваш "сервер" может только работать как плеер, загружать файлы с диска или что у вас там для хранения и передавать их по сети в браузер? Никакого SSI\CGI взаимодействия с программой нет?



Вот ведь как написали, я даже не понял biggrin.gif
Т.е. создаете страницу с нужными данными и загружаете на диск, с которого потом считывет веб-сервер?


Да, сейчас есть только обработка GET.
Страница статически прилинковывается к образу прошивки в виде
/* Contents of file index.html */
const long int index_html_size = 106876;
const unsigned char index_html[106876] = {
0x3C, 0x21, 0x44, 0x4F, 0x43, 0x54, 0x59......}
Никаких файлов и дисков нет и не планируется.

Сообщение отредактировал grinux - Nov 8 2017, 12:38
Go to the top of the page
 
+Quote Post
Бородатый физик
сообщение Nov 8 2017, 14:09
Сообщение #4





Группа: Новичок
Сообщений: 4
Регистрация: 10-10-17
Пользователь №: 99 695



для json есть весьма компактные реализации.
собирайте-разбирайте строки от HTTP-сервера на лету, заодно выполняя их валидацию, иначе кто-нибудь додумается записать вам GET-запросом в параметр по смещению абракадабру, после чего будет весьма неприятно.
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 8 2017, 17:38
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(grinux @ Nov 8 2017, 15:36) *
Да, сейчас есть только обработка GET.
Страница статически прилинковывается к образу прошивки в виде
/* Contents of file index.html */
const long int index_html_size = 106876;
const unsigned char index_html[106876] = {
0x3C, 0x21, 0x44, 0x4F, 0x43, 0x54, 0x59......}
Никаких файлов и дисков нет и не планируется.


Да файлы и диски не суть, в примерах от СТ на плату дискавери 407 была неплохая демка, как просто использовать взаимодействие с http страницей...
Go to the top of the page
 
+Quote Post
x893
сообщение Nov 8 2017, 19:55
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



А что мешает сделать страницу (или несколько) с нужными параметрами (настройками) и читать/сохранять их через GET/POST запросы (можно и одним GET обойтись) ?
Можно конечно и json/xml и прочее, но кода больше надо для обработки.
Страница/страницы статические с js кодом и красотой нужной.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th April 2024 - 11:17
Рейтинг@Mail.ru


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