基于TinyXml的嵌入式Linux-基础电子_第1页
基于TinyXml的嵌入式Linux-基础电子_第2页
基于TinyXml的嵌入式Linux-基础电子_第3页
基于TinyXml的嵌入式Linux-基础电子_第4页
基于TinyXml的嵌入式Linux-基础电子_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑基于TinyXml的嵌入式Linux-基础电子引言用自动化抄表代替人工抄表是实现智能楼宇的重要手段。传统的IC卡预付费方式虽然实施方便,但会有卡槽污染、卡易磨损以及安全性差等缺点,同时也无法实时地监控用户的用电情况;廉价方便的双向电力线载波抄表方式由于受电网污染的影响,难以大面积推广;专用有线网络实现远程抄表方式,则会带来投资规模大、施工时间长、维护困难等问题。

针对上述问题,本文提出了一种基于嵌入式Linux系统的居民用电管理解决方案,系统结构如图1所示。整个居民用电管理系统从结构上看分为4层:第1层为主站,负责远程抄表和控制,为供电部门和小区物业提供数据访问服务;第2层为管理终端,完成数据的远程接收和转发,并对其下的管理终端进行管理;第3层为抄表终端,用于采集现场的电表数据,通过ZigBee协议发送到管理终端;第4层为电表。管理终端操作系统选用嵌入式Linux,同时搭配单片机实现与采集终端之间的无线通信。

主站和管理终端之间的报文传输遵循《电力负荷管理系统数据传输规约》。根据该规约,主站会向管理终端下达一些参数设置的命令,管理终端在接到命令后应记录下该参数,并根据的参数来执行任务;在终端掉电重启后,参数设置依然有效。传统的参数配置基本采用两类方法:配置文件法(如.ini文件)和数据库法。由于本系统需要管理的参数条目不多,使用数据库占用的空间太大;.ini文件虽轻巧但上下文相关,不易维护和管理。XML文件则能克服以上缺点。XML(eXtensibleMarkupLanguage)是由万维网协会(W3C)设计,特别为Web应用服务的SGML的一个重要分支。它具有简单、开放、高效且可扩充、国际化的特性。XML语言具有很多的特性:①具有严格、良好的层次结构,实现了数据内容和表现形式的分离,使得配置文件结构清晰,可读性强;②具有跨平台、自解释等诸多优点;③现在各种经过测试的、性能优越的XML解释器非常多,避免了自己开发XML解释器,从而可以大大提高软件的生产率和健壮性。在众多的XML解释器中,通过比较选择了Ti-nyXml。

1TinyXml的特点

TinyXml是一个简单、小巧的C++XML解释器。TinyXml具有以下特点:

①TinyXml的特点就是体积小,速度快,而且只有2个头文件和3个源文件,总共144KB,十分适合嵌入式系统应用。

②功能完善,简单易用,为用户提供了丰富的API。TinyXml是一种基于DOM模型的解释器。基于DOM模型是指在分析时,性对整个XML文档进行分析,并在内存中形成对应的树结构;同时,向用户提供一系列的接口来访问和编辑该树结构。这种方式占用内存大,速度往往较慢,但可以给用户提供一个面向对象的访问接口,对用户更为友好。在本项目中需要存放的参数不是很多,因而不会占用系统很多的内存。

③源码开放,无须付费。开放的源码不仅可以降低产品的生产成本,更为重要的是为产品的维护完善和稳定运行提供了为彻底的保障。

④易于移植。TinyXml与操作系统无关,可以方便地移植到各种系统平台。源代码中已经提供了一份Make-file文件,稍加改造就可以移植到我们的嵌入式Linux下。

2TinyXml在嵌入式Linux下的移植

(1)建立arm-linux交叉编译环境

将TinyXml移植到嵌入式Linux下首先必须搭建交叉编译环境。本文采用嵌入式Linux,版本为2.4.18;安装的交叉编译器arm-linux版本为2.95.3。

(2)TinyXml源代码

可以到相关网站(如http:///tinyxml/index.html)TinyXml源代码包。目前可以到tinyxml_2_5_2.tar.gz(190527字节)或者tinyxmL_2_5_2.zip(241756字节)。这里使用的版本是2.3.4。将的代码包解开,生成tinyxml目录。

(3)生成动态链接库libtinyxml.so

首先修改Makefile文件:

①将CXX:=g++改为CXX:=arm-linux-g++,即将编译器由g++改为交叉编译器。

②将OUTPUT:=xmltest改为OUTPUT:=libtinyxml.so,即将原来生成演示程序改为生成动态链接库libtinyxml.so。

③将xmltest.cpp从SRCS:=tinyxml.cpptinyxml-parser.cppxmltest.cpptinyxmlerror.cpptinystr.cpp中删除,解释掉xmltest.o:tinyxml.htinystr.h。因为不需要将演示程序添加到动态库中。④在${LD}-o$@${LDFLAGS)${OBJS}${LIBS}${EXTRA_LIBS}语句的${LD)后添加-shared,用于生成动态库。

修改完成后,执行make命令就可以在当前目录生成需要的动态链接库文件libtinyxml.so,也可以根据需要把TinyXml编译成静态库文件。

3TinyXml的应用编程

为了清晰地描述参数,定义了两个XML文件:一个用来定义配置文件的数据结构和类型;另一个用来存放具体的配置数据。处理方法举例如下:

对《电力负荷管理系统数据传输规约》的参数设置命令F7,即终端抄表日设置。具体描述如表1所列。

终端抄表日期:D0~D30对应每月1日~31日,置1为有效,置0为无效。

数据格式19如表2所列。

对于上述表中的数据,其配置数据的结构和类型的XML文件构建如下(文件名:param.xsd):

500){this.width=500}"border=0>

对于具体的配置数据XML文件构建如下(文件名pa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论