Я настраиваю встроенный веб-сервер на 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, чтобы я мог обработать их после этого?