我正在STM32F4 MCU上设置嵌入式Web服务器。
我的程序变量存储在一个大数据结构中。例如,如果需要访问板的温度,只需检查Variables.Temperatures.BoardTemperature的值即可。
我以ad.cgi示例(可在https://www.keil.com/pack/doc/mw/Network/html/group__ws__ajax.html中找到)为基础,从我的软件变量中提取数据并将其存储在Web服务器上。这是我进行操作的示例:
在.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函数,我将每500毫秒更新一次表单的值。
尽管此方法可以正常工作,但由于生成的代码数量惊人,我不愿意使用它。我有800多个变量需要不断更新。编写2400行代码以进行简单的数据传输似乎很奇怪。
我想从服务器中获取整个Acquisition结构到我的网页中,并使用JavaScript处理传入的数据,以便在MCU和Web服务器之间使用最少的HTTP请求。如何使用CGI和AJAX序列化该结构,以便之后可以对其进行处理?