当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 在不同的操作系统中,系统与系统之间的数据交换是最为重要的环节,在此,由W3C制定出来的XML正是针对不同系统之间的数据交换而设计,基于WinCE嵌入式系统,完全支持W3C的X

 在不同的操作系统中,系统与系统之间的数据交换是最为重要的环节,在此,由W3C制定出来的XML正是针对不同系统之间的数据交换而设计,基于WinCE嵌入式系统,完全支持W3C的XML的最新规范,因此,XML作为WinCE嵌入式系统数据同步的媒介是比较理想的选择。本文主要介绍在.NET开发平台下,WinCE中基于XML的数据同步的方式和方法。

1.引言

在此,我们利用WinCE 3.0的Pocket PC 2002和Windows XP之间的数据同步来阐述本文,为了实现数据同步,我们在Pocket PC 2002中加载了SQL CE作为Pocket PC的数据库,在XP中加载了SQL Server 2000作为普通台式计算机的数据库,同时采用了Visual Studio .NET 2003作为研究的开发平台,Pocket PC与普通PC计算机之间的数据同步采用XML方式进行,XML数据文件传输方式采用存储卡、红外、无线网、GPRS等任意一种方式进行。

XML是为在 Web 上传送而进行优化了的 SGML 的子集。它是由万维网联合会 (W3C) 定义的。该标准化确保了结构化数据的统一性和相对于应用或供应商的独立性。XML 是一种提供数据描述格式的标记语言。该语言使跨越多个平台进行更准确的内容声明和获得更有意义的搜索结果变得更加容易。此外,XML实现了表示与数据的分离,通过应用不同的样式表和应用程序,使您能够根据需要显示和处理数据。XSD是XML 架构定义语言,可为 XML 文档定义结构和数据类型。XML 架构是由顶级 schema元素组成的。

2.设计要点

设计要点是通过XML方式进行不同系统之间多元数据类型、多元数据表的双向数据交换。PC与PDA之间的数据传输可以使用存储卡形式,也可以使用无线网形式,无线网包含无线局域网(802.11)、GPRS、CDMA、红外线(IRQ)等多种模式。在此,各种无线网或各种存储卡或许只能称为是一种媒介,它们存在的目的只是为了传输XML交换文件到不同的系统。数据交换的模型图如图1所示

2.1.XML交换文件设计

在此我们使用XML文件作为传输数据的交换文件,因此XML交换文件的设计是最为重要的一个步骤,通俗来说,一个XML交换文件包含两个部分,一个是XML架构,也就是XSD,另外一个是XML的数据部分。在.NET的智能设备(smart device)开发中必须使用.Net FrameWork的精简版,之所以称之为精简版,只是因为它是普通的.Net FrameWork的子集,因此它并不支持所有的普通模式下的功能,针对XML来说,它必须把XML的数据和XML的架构(XSD)分开,或许是微软为了考虑传输的文件大小的问题吧,因为在众多的应用中,架构一般不会改变,而且都是已知的架构,只传输XML数据总是比还要传输XML架构来的小。下面我们分步来讲解这两个部分。

2.1.1.XML架构(XSD)设计

在此我们所涉及到XSD,则主要是针对这个XML文件的架构制定遵循的版本和所涉及到的数据的类型。

在此,我们举例要描述数据表“T_Message”。

同时它包含两个字段:

MessageID int

MessageTitle varchar(128)

按照XSD的规范,我们就可以得到如下的架构。

xmlns:xs=http://www.w3.org/2001/XMLSchema

xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

msdata:Locale="zh-CN">

type="xs:int" minOccurs="0" />

type="xs:string" minOccurs="0" />

 

 

 

 

 

 

 

从以上可以看出,XSD描述了这个XSD的版本是1.0,属于w3c制定的架构等等信息,同时还描述了MessageID和MessageTitle两个字段,为了看得更明白,我们采用了加粗表示。

2.1.2.XML数据

在此我们所涉及到XML数据内容部分,则主要是针对这个XML文件所遵循的版本和数据的字段内容。

在此,我们举例要描述数据表“T_Message”。

同时它包含两个字段:

MessageID int

MessageTitle varchar(128)

假设这个数据表中存有两条记录,如下表所示:

MessageID

MessageTitle

1

数据库连接

2

数据库操作

按照XML的数据规范,我们就可以得到如下的XML数据。

1

数据库连接

 

2

数据库操作

 

 

2 .2.嵌入式系统

嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。[!--empirenews.page--]

当前主流的嵌入式系统的操作系统(OS)包括WinCE、Palm等等,其中以Palm的历史最为长久,但是以WinCE的普及推广速度最快,操作最为灵活,应用最为广泛,因此当前时期,大多数的用户选择WinCE作为当前嵌入式系统的操作系统。

2.2.1.WinCE操作系统

WinCE操作系统是嵌入式操作系统中的一种,为微软所研制开发,包含WinCE、WinCE.NET、Windows XP Embedded等一系列的Mobile Windows家族。正迅速地为人们所接受。

2.2.2.Compact .Net FrameWork

随着.NET开发平台2003版的推出,微软包容了嵌入式系统的开发,使得嵌入式系统的开发更为简便更为容易。

2.3.XML文件传输

由于XML是一个文本类型的文件,因此具备跨平台的能力,可以为UNIX、LINUX等非Windows平台所接受,由于是文本类型的文件,因此传输方式可以多种多样。比如使用存储器进行传输,存储器包括存储卡、磁盘、磁带等等存储载体;也可以通过网络下载复制的功能,比如通过有线或无线局域网,或者GPRS、Moden等等网络载体;还可以通过红外端口的发送接收文件的方式进行传输。

3.实现方法

由于是WinCE,因此可以使用Visual Studio .Net 2003版进行编程,利用Visual Studio .NET 2003版中带的Compact .Net FrameWork,使所编制的程序可以运行在WinCE的嵌入式系统中。

针对微软的.NET计划,相信不久的将来,Compact .Net FrameWork也可以运行到Palm等其它嵌入式系统中。

3.1.PC端XML数据导出

假设我们已经有了数据库连接SQLconn,strSQL是待执行的SQL语句,则我们的PC端服务程序导出可以写成如下方式。

//初始化SqlDataAdapter

System.Data.SqlClient.SqlDataAdapter myDataAdapter = new System.Data.SqlClient.SqlDataAdapter();

//初始化SelectCommand ,其中strSQL为待执行的SQL语句,SQLconn为数据连接

myDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(strSQL,SQLconn);

//使用myDataAdapter初始化SqlCommandBuilder

System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder (myDataAdapter);

//初始化一个DataSet

System.Data.DataSet DS = new System.Data.DataSet();

//执行strSQL中的SQL指令,查询结果填充到DS中

myDataAdapter.Fill (DS);

//从E:ExFromPC.XSD文件中导入XML架构

DS.WriteXmlSchema("E:ExFromPC.XSD");

//按照XML架构导出XML数据到E:ExFromPC.XML中

DS.WriteXml("E:ExFromPC.XML");

自此,XML文件已经导出完成,即可使用2.3所阐述的文件传输方式的任意一种传输到WinCE嵌入式系统中去。

3.2.WinCE端数据导入

//初始化DataSet

System.Data.DataSet DS = new System.Data.DataSet();

//初始化XML架构文件操作流

FileStream FsXSD = new FileStream("ExFromPC.xsd",FileMode.Open);

//初始化XML架构读取设备

XmlTextReader xtrXSD = new XmlTextReader(FsXSD);

//载入XML架构到DS中

DS.ReadXmlSchema(xtrXSD);

//关闭XML架构读取设备

xtrXSD.Close();

//关闭XML架构文件操作流

FsXSD.Close();

//按照装载了的XML架构载入XML数据到DS

DS.ReadXml("ExFromPC.XML");

在载入完XML数据之后,即可通过种种方法把数据写入到数据库中,或交由其它方式处理,在此不再陈述。

3.3.WinCE端数据导出

//初始化DataSet

System.Data.DataSet DS = new System.Data.DataSet();

//初始化SqlCeDataAdapter

System.Data.SqlServerCe.SqlCeDataAdapter myDataAdapter = new System.Data.SqlServerCe.SqlCeDataAdapter();

//初始化SelectCommand ,其中conn是数据连接,p_strSQL待执行的SQL语句

myDataAdapter.SelectCommand = new System.Data.SqlServerCe.SqlCeCommand(p_strSQL,conn);

//初始化SqlCeCommandBuilder

System.Data.SqlServerCe.SqlCeCommandBuilder myCB = new System.Data.SqlServerCe.SqlCeCommandBuilder(myDataAdapter);

//加载映射的数据表名p_strTableNameTemp为数据表名

myDataAdapter.TableMappings.Add("Table",p_strTableNameTemp);

//把SQL语句执行结果写入到DS中

myDataAdapter.Fill (DS);

//初始化XML架构文件操作流

FileStream FsXSD = new FileStream(ExFromPC.xsd",FileMode.Open);

//初始化XML架构读取设备

XmlTextReader xtrXSD = new XmlTextReader(FsXSD);

//载入XML架构

DS.ReadXmlSchema(xtrXSD);

//关闭XML架构读取设备

xtrXSD.Close();

//关闭XML架构文件操作流

FsXSD.Close();

//导出XML数据文件

DS.WriteXml("ExFromPC.xml");

自此,XML文件已经导出完成,即可使用2.3所阐述的文件传输方式的任意一种传输到PC中去。

3.4.PC端XML数据导入

//初始化架构文件操作流

FileStream FsXSD = new FileStream("E:ExFromCE.XSD",FileMode.Open);

//初始化XML数据文件操作流

FileStream FsXML = new FileStream("E:ExFromCE.XML",FileMode.Open);

//初始化DataSet

System.Data.DataSet DS = new System.Data.DataSet();

//初始化XML架构读取设备

XmlTextReader xtrXSD = new XmlTextReader(FsXSD);

//载入XML架构

DS.ReadXmlSchema(xtrXSD);

//关闭XML架构读取设备

xtrXSD.Close();

//关闭XML架构文件流[!--empirenews.page--]

FsXSD.Close();

//初始化XML数据读取设备

XmlTextReader xtrXML = new XmlTextReader(FsXML);

//导入XML数据到DS中

DS.ReadXml(xtrXML);

//关闭XML数据设备

xtrXML.Close();

//关闭XML数据文件流

FsXML.Close();

在读取XML数据到DS之后,即可通过种种手段写入到数据库中,在此不再陈述。

用XML方式同步数据,可以达到一次同步多个数据表的功能,为离线方式同步数据库的首选,可以适用于多种场合,比如Windows和Linux之间同步数据,Windows和UNIX之间同步数据。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭