技
术
创
新
《微计算机信息》(管控一体化 )2009 年第 25 卷第 10-3 期
360元 / 年 邮局订阅号:82-946 《现场总线技术应用 200例》
软件时空
信息家电接口定义语言研究及编译器实现
InformationAppliance InterfaceDefinitionLanguageResearchAndRealizationOfTheCompiler
(1.湖南师范大学;2.中南大学)黄一飞 1 刘 宏 1 曾巧平 2
HUANG Yi-fei LIU Hong ZENG Qiao-ping
摘要: 提出用 XML 描述信息家电 IAIDL 文档 ,制定了 IAIDL 格式规范 ,最后用 C 实现 IAIDL 编译器 。
关键词: 信息家电; 信息家电接口定义语言; XML; IAIDL 编译器
中图分类号: TP39 文献标识码: A
Abstract: Come up with using XML described IAIDL document, and developed a standardized format of IAIDL. Finally realization of
IAIDL C compiler.
Key words: Information Appliance; IAIDL; XML; IAIDL Compiler
文章编号:1008-0570(2009)10-3-0164-03
1 引言
目前国内对信息家电接口定义语言 (IAIDL)的研究还处于
萌芽阶段,主要是没有统一的规范,针对该问题,作者提出了信息
家电接口定义语言文档的书写格式规范。 用 C 编写编译器对
IAIDL 文档实现解析, 提取 IAIDL 文档中的信息存储到家庭网
关中数据库,为后续研究远程访问和控制信息家电奠定了基础。
2 接口定义语言(IAIDL)功能
所有能够通过网络系统访问的家电都可以称之为信息家
电。 其体系结构框架如图一。 家庭中的信息家电连接到家庭网
关之后,网关能够自动检测到信息家电的上线 ,家电上线后自动
发送 IAIDL 文档(该文档由厂商提供在出厂时嵌入到家电中)到
网关,网关上的编译器编译 IAIDL 文档成中间信息,并将中间信
息信息存储到网关上数据库。 远程用户通过读取数据库中信息
家电的信息进行访问和控制信息家电, 并及时更新存储在网关
中信息家电的状态。
图 1
信息家电接口定义语言 (Information Appliance Interface
Definition Language,IAIDL) 是一种用来定义信息家电的描述语
言,它采用面向对象的方法,将信息家电抽象为一个“对象”,将设
备内部的属性和功能用接口定义语言的规范格式文档进行描
述出来。
IAIDL文档用于各个信息家电向其他家电和用户宣告自己
所具有的功能和属性, 该文档通过 IAIDL编译器编译之后将家
电信息存储到网关上,以提供给远程用户进行访问和控制 ,其他
家电通过 IAIDL 文档的描述来“认识”此家电 ,从而达到家电之
间相互协作。
3 XML 和 IAIDL 格式规范
XML(Extensible Markup Language)是 W3C 组织认可的文档
数据格式标准,它独立于任何语言和体系结构 ,是公认的下一代
网络标记语言。 XML 不仅能够表示文档的内容 ,而且可以表示
文档的结构。 它定义了利用简单的、人类可读的标签对数据进
行标记所采用的一般语法,提供了计算机文档的一种标准格式。
这种格式非常灵活,可以定制后应用于各个领域,如电子数据交
换、矢量图形、远程过程调用等。
XML(可扩展标记语言 )作为 Web 数据共享的国际标准 ,逐
渐被很多工业领域所采纳。 目前 XML 已经应用到一些传感器
的标识中, 比如 Maxim-Dallas 公司就采用 XML 对 1-wire 传感
器进行标识。 前面已经讲到 IAIDL的功能是家电用来宣告自己
所具有的功能和属性,以便远程用户可以访问和控制 ,也就是说
IAIDL 也就是描述和标识信息家电。 因此用 XML 文档来表示
IAIDL是可行的。
分析各个信息家电都具有如下属性:
信息家电家电类型(iatype):说明家电所属类型,如:空调还是
电视。
信息家电家电类型名称(ianame):描述该设备的名称。
信息家电家电标识 (iamac):家电的 MAC 地址 ,用于区分家
电的唯一标识。
信息家电生产厂商(iacompanyname):标明生产厂商的名称。
信息家电家电型号 (iamode):家电型号 ,区别同种家电中不
同的家电设备。
用 XML描述一个空调属性如下:
<attribute>
黄一飞: 硕士研究生
基金项目: 基金申请人: 刘 宏; 项目名称: 基于信息家电接口
定义语言的信息家电体系结构; 基金颁发部门: 湖南省教育厅
(08A039)
164- -
邮局订阅号:82-946 360元 / 年
技
术
创
新
软件时空
《PLC技术应用 200例》
您的论文得到两院院士关注
<iatype>001</iatype>
<ianame>aircondition</ianame>
<iamac>00163202E2C</iamac>
<iacompanyname>Haier</iacompanyname>
<iamode>KFR-22GX/HA</iamode>
</attribute>
对家电进行分析,各个家电都有 n 个操作,尽管操作不同,对
每个操作进行概括可得:
信息家电操作名称(actionname):该操作名称
信息家电操作提示(actionexplain):对该操作注意事项提示
信息家电操作类型(ationtype):操作在操作界面上显示的类
型,比如:开/关,用单选按钮进行选择 ;设置温度则可以用文本框
中键入数字获得所需要的温度。
当前状态(actioncurrent):操作当前状态 ,该值是操作值中合
法的一个状态。
操作值 (actionvalue):操作值分两种类型 :一种为区间值
类型 :为一组连续的数值 ,比如 :设置空调的温度为一个有效
的区间值 。 该类值可用两个元素<maxvalue>、<minvalue>来
限定其操作值的有效范围 ;一种为枚举类型 ,如 :开 /关 、设置
电视的模式等 ,该类值用<actionvalue>来描述 ,各个值之间用
“/”分开 。
操作的默认值 (actiondefaultvalue):描述这个操作的默认值 ,
比如:空调温度默认开启的时候为 22 度。
我们可用如下方式描述一个操作, 每个操作的参数并列作
为<action>的子节点,下面是对空调设置温度的操作描述:
<action>
<actionname> settemperate</actionname>
<actionexplain> settemperate</actionexplain>
<actiontype>text</actiontype>
<actioncurrent>22</actioncurrent>
<maxvalue>18</maxvalue>
<minvalue>36</minvalue>
<actionvalue></actionvalue>
<actiondefaultvalue>22</actiondefaultvalue>
</action>
每个家电的操作个数不同,家电有 n 个操作只需增加 n 个<
action>节点作为<actionlist>的子节点即可 ,方便操作 ,具有很好
的灵活性。
根据以上分析我们可以用如下的规范格式进行描述一个
信息家电:
<?xml version="" encoding="UTF-16"?>
<informationappliance >
<attribute>
……//信息家电属性列表
</attribute>
<actionlist>
<action>
…….//信息家电操作属性列表
</action>
……//多个 action 节点
</actionlist>
</informationappliance >
4 IAIDL 编译器实现
目前用 C 写的主流的 XML 文档解析器都比较大,对于对内
存有限的嵌入式设备来说是不合适的, 作者自己设计了一个基
于 C 的 xml 文档解析器 IAIDLParser,大小只有不足 30K,而且能
够很好的完成 IAIDL 文档的编译。
DOM 解析 IAIDL 文档
XML 文档的解析主要有两种方式 , 基于 DOM(Document
Object Module)和 SAX(Simple API for XML)两种方式。 一个家电
的 IAIDL 文档一般不过 1k 左右 , 为了方便项目后续数据的存
储,可以随机的访问节点元素,选用 DOM 解析方式。
使用 DOM 对 XML 文件进行操作时,首先要解析文件 ,将文
件分为独立的元素、属性和注释等,然后以节点树的形式在内存
中对 XML 文件进行表示, 就可以通过节点树访问文档的内容,
并根据需要修改文档,这就是 DOM 的工作原理。
IAIDLParser 主要数据结构
IAIDLParser 对 IAIDL 文档中的元素进行封装 ,对每个元素
进行抽象,定义如下结构体:
struct xmlNode
{
char name[XML_MAX_NODE_LEN];//节点名称
char content[XML_MAX_NODE_LEN];//节点内容
struct xmlAttr property;//节点属性
struct xmlNode *first;//指向第一个孩子节点
struct xmlNode *next;//指向下一个兄弟节点
struct xmlNode *last;//指向最后一个孩子结点
};
IAIDL 文档在经过编译器编译之后生成中间信息 , 因此需
要一个存放中间信息的结构。 用结构体 Ia_Idl 来存储 IAIDL 文
档中间信息, 结构体中的成员变量存储 IAIDL 文档中相对应的
信息,因为每个家电的操作个数不同,为了通用性,信息家电提供
的操作采用单链表进行存储。
IAIDL 编译器主要函数介绍
解析 IAIDL 文档时,需将整个文档一次性读到缓冲区 ,然后
逐个字符进行解析 ,其中 SkipChar 函数用于跳过如空格、换行、
回车、制表符等可以忽略的字符。 首先解析宣告,然后主要调用
xmlParseElement 函数进行解析成对出现的节点元素标记, 提取
元素的名称、属性和对应的值 ,这些信息称为中间信息 ;如果遇
到嵌套的元素节点则递归调用 xmlParseElement 解析子元素节
点,解析过程中由函数 xmlSetError 完成格式验证功能。 规范的
IAIDL 文档最后被解析成精简的树状 ,最后由 Store_IAIDL 函数
将中间信息存储到嵌入式数据库 Sqlite 中。 xmlParseElement 主
要代码如下:
local BOOL xmlParseElement( xmlCtxtPtr pCtxt, xmlNodePtr
pNode )
{ SkipChar(pCtxt->cur);
int ret = xmlParseStartFlag (pCtxt, pNode);// xmlParseStart-
Flag 解析元素头<…>
if( ret < 0 )
{ return FALSE;}
else if( ret = = 0)
{ char *p = pNode->content;
165- -
技
术
创
新
《微计算机信息》(管控一体化 )2009 年第 25 卷第 10-3 期
360元 / 年 邮局订阅号:82-946 《现场总线技术应用 200例》
软件时空
...... //解析出元素的值
while( NEXT(0) == '<' && NEXT(1) ! = '/' ) // 遇到孩子结点
{
xmlNodePtr pNewNode = (xmlNodePtr)malloc (sizeof (xmlN-
ode));
...... //为孩子节点分配内存
if( ! xmlParseElement( pCtxt, pNewNode ) )//递归调用 xml-
ParseElement 解析子节点
return FALSE;
...... //将节点插入树的恰当位置
}
if( ! xmlParseEndFlag( pCtxt, pNode ) )// xmlParseEndFlag 解
析元素尾部</…>
{ return FALSE;}
}
return TRUE;
}
5 结束语
对 IAIDLParser 进行交叉编译,在 S3C2410+armlinux 平台上
运行良好, 成功将 IAIDL 文档编译成中间信息并存储到了网关
上的嵌入式数据库 sqlite 中,IAIDL 文档规范的提出及编译器的
实现为信息家电动态界面生成, 用户远程访问和控制信息家电
提供了基础。
本文作者创新点:1、作者提出了将 XML 应用于描述信息家
电接口定义语言(IAIDL)文档,并制定了文档描述规范;2、用 C 语
言编写 IAIDL 编译器,并成功在内存有限的嵌入式设备上运行 ,
对 IAIDL 文档解析并提取出相应信息, 为信息家电动态控制界
面的生成提供了基础。
参考文献
[1]阳丽君,刘宏.信息家电接口定义语言(IAIDL)的研究[J].计算机
与现代化[J].2007,4:13-16
[2]彭华,唐赞玉,刘宏.基于信息家电的推位技术的研究[J].微计算
机信息 2008,5:53-55
[3]朱前飞,高芒.XML解析技术研究[J].电脑开发与应用,2004,11:
26-28.
作者简介:黄一飞(1981-),男,汉族,湖南郴州人 ,湖南师范大学硕
士研究生 , 研究方向 : 信息家电体系结构 , 嵌人式系统 ; 刘宏
(1963-),男,汉族,湖南娄底人,湖南师范大学教授,研究方向:信息
家电体系结构 , 分布式计算 , 人工智能 , 嵌人式系统 ; 曾巧平
(1981-),女,汉族,湖南邵阳人,中南大学硕士研究生,研究方向:计
算机网络安全,分布式计算。
Biography:HUANG Yi -fei (1981 - ),Male,the Han nationality,
Chenzhou of Hunan province, Graduate student of Hunan Normal
University ,Research Area: the architecture of Information Appli-
ance、Embedded system.
(410081 湖南长沙 湖南师范大学数学与计算机科学学院计算
机系) 黄一飞 刘 宏
(410083 湖南长沙 中南大学信息科学与工程学院计算机系 )
曾巧平
(Computer Department,School of Math and Computer sci-
ence,Hunan Normal University,Hunan,ChangSha,410081,Chi-
na) HUANG Yi-fei LIU Hong
(C omputer Department,School of Information Science and
Engineering, Central South University,Hunan,ChangSha,
410083,China) ZENG Qiao-ping
通讯地址:(410081 湖南师范大学高培楼 517) 黄一飞
(收稿日期:)(修稿日期:)
(上接第 168页)
表 2 分类结果对比
对于 150 篇测试集 ,使用 CHI 方法和基于区分矩阵核的属
性约简共分对 120 篇文档,平均分类正确率为 80%。使用双重特
征选取和加入了特征词集的区分矩阵启发式约简共分对 123
篇文档, 平均分类正确率为 82%。 使用双重特征提取和改进后
的基于区分矩阵的启发式属性约简算法, 最终的分类效果更好
一些。 这是因为,改进后的约简算法,在约简特征向量维数的同
时,考虑保留了最具有特征类别代表性的词集。
本文作者创新点 :1、结合 TF-IDF 和 CHI 两种方法 ,提出双
重特征选取的选词方法;2、 在原有属性约简算法中加入一个特
征词集,保证重要的词不被误约简掉。
参考文献
[1]Salton G,Buckley B. Term-weighting Approaches in Automatic
Text Retrieval [J]. Informati -on Processing and Management,
1998,24(5):513-523.
[2]鲁松,李晓黎等.文档中词语权重计算方法的改进[J].中文信息
学报,2000,14(6):.
[3]彭时名. 中文文本分类中特征提取算法研究. 重庆大学硕士学
位论文, 2006,6.
[4]王建国. 基于粗糙集和 SAT 的属性约简 [J]. 微计算机信息 ,
2008, 1-3: 253-254.
作者简介:刘静(1983~),女,汉族,河南人,硕士,毕业于暨南大学计
算机系,现为华南师范大学增城学院教师,主要研究方向:人工智
能、数据挖掘 ; 杨天奇(1961~),男 ,汉族 ,江西人 ,暨南大学计算机
系教授,主要研究方向:人工智能、数据挖掘。
Biography:LIU Jing (1983 ~ ), female , the Han nationality,
Henan Province, Master Degree, graduated from Jinan University,
teacher of Zengcheng College of SCNU, Research field: artificial
intelligence and data mining.
(511363 广东广州 华南师范大学增城学院经济系) 刘 静
(510632 广东广州 暨南大学计算机系) 杨天奇
(Department of Economics ,Zengcheng College of SCNU,
Guangzhou,511363,China) LIU Jing
(Department of Computer Science, Jinan University,
Guangzhou,510632,China) YANG Tian-qi
通讯地址:(511363 广东省广州市萝岗区华南师范大学增城学
院经济系) 刘 静
(收稿日期:)(修稿日期:)
166- -