在项目中遇到的一个案例,需要通过上位机传输XML文件来改变产品的配置参数。 产品用的stm32f1做主控芯片,通过TCP/IP通讯,需要将xml库移植到程序中。
在网上找了几个常见到XML库,找到l了两款轻量级的(基于c语言的,可以直接移植到stm32中)xml解析库:mxml和ezxml。
通过比较,最终选择使用mxml库(ezxml库貌似要上linux系统,移植到keil中编译有问题)。mxml库下载链接为:
https://sourceforge.net/projects/mxml/files/
使用方法如下:
启动Keil5软件,将mxml库复制到Stm32工程中,修改如下配置参数:
- 将s文件中43行Heap_Size EQU 0x00000200变为0x00008000
- keil软件中Option of target->User->勾选After Build下的Run #1 -> usercommand中添加exe –bin -o “image.bin” “#L”
- 导入mxml头文件
之后,先编译一遍程序,解决移植库后所有到编译问题,之后,添加测试代码,如下:
#include "mxml.h"
int lens;
int i=0;
UCHAR tmp[70][10];
mxml_node_t *node, *tree;
for(lens=0;lenstype==0x04 ){
memcpy(tmp[lens],node->value.text.string,strlen(node->value.text.string));
lens++;
}
}
mxml库的使用比较简单,只要修改好配置参数即可使用,如果发现无法解析的情况,很有可能是因为Heap_Size EQU不够,那么适当增加Heap_Size EQU即可。
Stm32F1解析XML文件测试