Сериализация структуры с использованием CGI / AJAX - PullRequest
0 голосов
/ 21 мая 2019

Я настраиваю встроенный веб-сервер на STM32F4 MCU.

Мои программные переменные хранятся в одной большой структуре данных.Например, если мне нужен доступ к температуре на моей плате, я просто проверю значение Variables.Temperas.BoardTempera.

Я использовал пример ad.cgi (можно найти здесь https://www.keil.com/pack/doc/mw/Network/html/group__ws__ajax.html) в качестве базы для извлечения данных из моей программной переменной и размещения их на веб-сервере.Вот пример того, как я поступил:

В файле .cgi я бы вызвал функцию CGI:

c g 1 size=’10’ id=’TempValue’ value=’%1d’>

В моем HTTP_Server_CGI.c яобработать данные с помощью функции netCGI_Script:

Switch (env[0]) {

          case 'g' : 

              len = (uint32_t)sprintf(buf, &env[4], Variables.Temperatures.BoardTemperature);

}

Я бы использовал файл .cgx для обновления этого значения:

     t <form> 

     t <text> 

     t <id>TempValue</id>

     c <value>TempValue</value>

     t </form> 

Наконец, используя уже написанную функцию updateForm, я 'd обновлять значения моей формы каждые 500 мс.

Хотя этот метод работает нормально, я не хочу его использовать из-за невероятного количества кода, который он генерирует.У меня более 800 переменных, которые мне нужно постоянно обновлять.Написание 2400 строк кода для простой передачи данных кажется странным.

Я хочу извлечь всю структуру Acquisition со своего сервера на мою веб-страницу и обработать входящие данные с помощью JavaScript, чтобы использовать минимальные HTTP-запросы между MCU и веб-сервером.Как можно сериализовать структуру с использованием CGI & AJAX, чтобы я мог обработать их после этого?

...