Всем привет.
Есть устройство, в котором есть настройки, которые храняться с формате структур 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