基于Linux的居民用电管理解决方案

发布者:梦中的额吉最新更新时间:2014-03-13 来源: elecfans关键字:Linux  居民用电管理  TinyXml 手机看文章 扫描二维码
随时随地手机看文章

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

  主站和管理终端之间的报文传输遵循《电力负荷管理系统数据传输规约》。根据该规约,主站会向管理终端下达一些参数设置的命令,管理终端在接到命令后应记录下该参数,并根据最新的参数来执行任务;在终端掉电重启后,参数设置依然有效。传统的参数配置基本采用两类方法:配置文件法(如.ini文件)和数据库法。由于本系统需要管理的参数条目不多,使用数据库占用的空间太大;.ini文件虽轻巧但上下文相关,不易维护和管理。XML文件则能克服以上缺点。XML(eXtensible Markup Language)是由万维网协会(W3C)设计,特别为Web应用服务的SGML的一个重要分支。

  它具有简单、开放、高效且可扩充、国际化的特性。XML语言具有很多优秀的特性:

  ①具有严格、良好的层次结构,实现了数据内容和表现形式的分离,使得配置文件结构清晰,可读性强;

  ②具有跨平台、自解释等诸多优点;

  ③现在各种经过测试的、性能优越的XML解释器非常多,避免了自己开发XML解释器,从而可以大大提高软件的生产率和健壮性。在众多的XML解释器中,通过比较选择了Ti-nyXml。

  1 TinyXml的特点

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

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

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

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

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

  2 TinyXml在嵌入式Linux下的移植

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

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

  (2) 下载TinyXml源代码

  可以到相关网站(如http://www.grinninglizard.com/tinyxml/index.html)下载TinyXml源代码包。目前可以下载到tinyxml_2_5_2.tar.gz(190 527字节)或者tinyxmL_2_5_2.zip(241 756字节)。这里使用的版本是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.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp"中删除,注释掉"xmltest.o:tinyxml.h tinystr.h"。因为不需要将演示程序添加到动态库中。 ④ 在"${LD}-o$@${LDFLAGS)${OBJS}${LIBS}${EXTRA_LIBS}"语句的"${LD)"后添加"-shared",用于生成动态库。

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

  3 TinyXml的应用编程

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

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

  

 

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

  数据格式19如表2所列。

  

 

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

  

 

  对于具体的配置数据XML文件构建如下(文件名param.xml):

  

 

  

  4 结 论

  本文提出了一种基于嵌入式Linux系统的居民用电管理解决方案,并利用TinyXml实现具体功能,其参数配置方法可以用于其他嵌入式系统。

关键字:Linux  居民用电管理  TinyXml 引用地址:基于Linux的居民用电管理解决方案

上一篇:基于TinyXml的嵌入式Linux
下一篇:一种通用、低成本的KVM over IP控制器的设计方案

推荐阅读最新更新时间:2024-03-16 13:37

基于2.6.19内核的小型Linux系统制作移植
  引言   ARM9S3C2410微处理器与Linux的结合越来越紧密,逐渐在嵌入式领域得到广范的应用。目前,在便携式消费类电子产品、无线设备、汽车、网络、存储产品等都可以看到S3C2410与Linux相结合的身影。   S3C2410微处理器是一款由Samsung公司为手持终端设计的低价格、低功耗、高性能,基于ARM920T核的微处理器。它带有内存管理单元(MMU),采用0.18mm工艺和AMBA新型总线结构,主频可达203MHz。同时,它支持Thumb 16位压缩指令集,从而能以较小的存储空间获得32位的系统性能。   在众多嵌入式操作系统中,Linux目前发展最快、应用最为广泛 。性能优良、源码开放的Linux具有体
[单片机]
构建arm-linux-gnueabi-gcc-4.6.3交叉编译链
一、准备工作 1、准备文件 binutils-2.22.tar.bz2 gcc-4.6.3.tar.bz2 glibc-2.14.1.tar.xz glibc-ports-2.14.1.tar.gz glibc-linuxthreads-2.5.tar.bz2 gdb-7.4.1.tar.bz2 linux-2.6.38.8.tar.bz2 mpfr-3.1.1.tar.bz2 mpc-1.0.1.tar.gz gmp-5.1.0.tar.bz2 2、建立以下变量,方便稍候的输入 #vim ~/.bashrc export TARGET=arm-linux-gnueabi export PREFIX=/usr/local/ar
[单片机]
基于tiny4412的Linux内核移植 -- 设备树的展开
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 摘要 在Linux引入设备树之后,将原来写在代码中的大量的硬件信息全部移到了
[单片机]
基于tiny4412的<font color='red'>Linux</font>内核移植 -- 设备树的展开
Linux-2.6.32.2内核在mini2440上的移植(十七)---移植PWM控制蜂鸣器
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 嵌入式linux应用开发完全手册,韦东山,编著。 Mini2440 之Linux 移植开发实战指南 【1】硬件原理 Mini2440 板带有一个蜂鸣器,它是由PWM 控制的,下面是它的连
[单片机]
<font color='red'>Linux</font>-2.6.32.2内核在mini2440上的移植(十七)---移植PWM控制蜂鸣器
stm32用ucos还是linux
  常见的嵌入式操作系统有两种:用MMU的和不用MMU的。 用MMU的是Windows、 MacOS 、Linux、 Android,不用MMU的是FreeRTOS VxWorks ucOS。 CPU有两种:带MMU的和不带MMU的,带MMU的有Cortex-A系列ARM9、 ARM11系列,不带MMU的有Cortex-M系列。 stm32用ucos还是linux STM32是M系列,不带MMU控制器,不可能运行Linux,当然, STM32能够跑μClinux,但是严格来说,μClinux是不算Linux的。所以对于很多网友有疑问的stm32用ucos还是linux这个问题,我们就知道答案了,stm32是用
[单片机]
采用S3C2410和Linux系统的指纹识别管理系统
作者Email: newtonian@263.net 摘要:随着ARM系列处理器性能的不断提高,过去一些专属于DSP领域的运算密集型的应用,例如指纹识别等,也能够在ARM处理器上得以很好的实现。并且由于MCU的强大控制功能,以及操作系统的巨大灵活性,使得这种系统有DSP平台不可比拟的优势。本文着重介绍了基于S3C2410和Linux操作系统的指纹识别管理系统的实现方法,以及这种实现方法与传统DSP系统的异同。 指纹识别技术在金融、交通、安全等领域以及日常工作和生活中被越来越广泛地应用。指纹识别的算法中通常有大量的矩阵运算,域变换,三角函数运算等等,属于典型的运算密集型的应用,因此通常采用DSP来实现嵌入式应用。不过近期情
[嵌入式]
八 s3c2440 linux 触摸屏 驱动代分析
1、对触摸屏添加设备信息 触摸屏的设备信息的添加跟lcd很像,这里就仿照lcd的platform设备信息给触摸屏添加设备信息。可以在Touchscreen-s3c2410.h(includelinuxplatform_data)文件中看到,其定义了有关触摸屏信息的结构体s3c2410_ts_mach_info,因此我们只需要填充该结构体就可以。 struct s3c2410_ts_mach_info原型为: struct s3c2410_ts_mach_info {undefined int delay; //延时时间 int presc; //预分频,adc时钟=PCLK
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved