VS2008环境(共6篇)
VS2008环境 篇1
1 引言
搜索是人工智能中的一个基本问题,也是模拟仿真中研究的一般性问题,是推理不可分割的一部分。现实世界中的大多数问题都是结构不良或非结构化的问题,一般不存在现成的求解方法,而只能利用已有的知识一步步地摸索着前进,如梵塔问题、MC问题、猴子摘香蕉、八数码难题等。
八数码难题一般描述:在3×3的方格棋盘上,分别放置标有数字1、2、3、4、5、6、7、8的八张牌,第九张牌不标数字,记为空格,给定一种初始状态和目标状态,通过移动空格,使得棋盘从初始状态向目标状态转换(其中操作空格可用的操作有:左移、上移、右移、下移,但不能移出棋盘之外),通过搜索策略寻找从初始状态到目标状态的解路径。
解决八数码问题的搜索策略有很多,归纳起来主要有3种:深度优先搜索(Depth First Search, DFS)、宽度优先搜索(Breadth First Search, BFS)、A*算法。前两种是经典的盲目搜索算法,后一种是经典的启发式搜索算法。对于八数码问题,深度优先搜索一般不能保证得到最优解,A*算法又与其启发式函数息息相关,也无法保证得到最优解。而宽度优先搜索算法可以得到从初始状态到目标状态的最短解路径。虽然宽度搜索算法效率相对较低,搜索点数较多,但考虑到计算机技术的飞速发展,运算速度已经不是影响搜索效率的重要瓶颈了。因此,展开宽度优先搜索算法的研究,不但对解决八数码难题有着实际的意义,而且对解决人工智能中的其他问题,也可以起到积极的参考作用。
从人工智能的角度分析八数码问题,对解决八数码问题的宽度优先搜索策略展开研究,给出算法的一般描述,通过对算法进行分析,指出了宽度优先搜索算法的优点,可以获得最优的解路径。最后,在VS2008开发环境下,设计并实现了宽度优先搜索算法,即BSF算法,通过实验运行效果验证了宽度优先搜索算法的优越性。
2 宽度优先搜索算法
2.1 一般描述
宽度优先搜索是—种先生成的节点先扩展的搜索策略,其一般过程是:从初始状态节点开始逐层向下扩展,在第N层节点还没有全部搜索结束之前,不进入第N+1层节点的搜索。
设TreeNodes表中的节点是根据生成的先后进行排序的,先进入TreeNodes表中的节点排在前面,后进入TreeNodes表的节点排后面,则算法可以进行一般描述:
(1)把初始节点StartState放入TreeNodes表中,作为当前节点。
(2)如果TreeNodes表中当前节点指向为空,则问题无解,失败退出。
(3)把TreeNodes表的当前节点取出,并记该节点为CurrentState。
(4)检查当前节点CurrentState是否为目标节点。若是,则得到问题的解,成功退出;否则进行第(5)步。
(5)若节点CurrentState无法扩展,设定TreeNodes的下一个节点为当前节点,转第 (2) 步。
(6)对当前节点CurrentState进行扩展,将其子节点存放入TreeNodes表的尾部,并为每一个子节点设置指向父节点CurrentState的指针,然后设定TreeNodes的下一个节点为当前节点,转第 (2) 步。
2.2 算法分析
对于求解八数码问题,首先要给出一个起始状态和结束状态,如图1所示。那么,宽度优先搜索算法的目标就是寻找一条从起始状态到结束状态的解路径。
根据算法的一般描述,首先把起始状态加入到TreeNodes表中,作为根节点0。然后,把0节点取出,和结束状态比较,从图1来看,明显不是目标节点。所以对节点0进行扩展,根据空格上下左右移动,得到4个子节点,即节点1、2、3、4,并加入到TreeNodes表的尾部。再取出节点1作为当前节点,也不是目标节点,对其进行子节点扩展,得到2个节点,即节点5、6,并加入到TreeNodes表的尾部。然后,取出节点2作为当前节点,以此类推,进行下去,整个搜索节点过程如图2所示。
图2给出了搜索到节点12时整个TreeNodes表的节点情况。然后继续搜索节点13,根据算法过程,直到发现目标节点结束。这样的搜索过程就是宽度优先搜索算法。最坏情况下,该算法将搜索整个状态空间,即搜索9!/2=181440个节点。但从图2可以看出,只要从根节点到目标节点构建一个路径,则该路径一定是最短的一条解路径。
3 实现
3.1 编程环境
软件实验开发软件选用了Visual Studio 2008,它是基于.NET框架的软件开发平台,.NET开发环境是流行的基于Windows平台的编程平台。Visual Studio 2008可以为项目指定.NET Framework的版本:.NET Framework 2.0、3.0或3.5。应用程序的.NET Framework目标是指为使该应用程序能够在计算机上运行而需要在该计算机上安装的.NET Framework版本。
Visual Studio 2008中的C#代码编辑器提供了语句结束和快速信息功能,以支持C#3.0中的下列新语言构造:
(1)隐式类型的局部变量
(2)查询表达式
(3)扩展方法
(4)对象/集合初始值设定项
(5)匿名类型
(6) Lambda表达式
(7)分部方法
C#语言简单易学,C#3.0语言和编译器引入了多种新的语言功能,为快速开发实现八数码问题的BFS算法提供了方便。
3.2 界面设计
求解八数码问题是一个智力型的游戏,基于这样的考虑,给出界面设计如图3所示。为了美观,在不影响系统运行性能的情况下,引用了第三方皮肤控件IrisSkin2.dll。从界面可以看出,除了起始状态和结束状态之外,还给出了存放中间状态的棋盘。另外一些关键的按钮,如“随机初始状态”、“随机结束状态”、“无解判断”、“宽度搜索”、“状态演示”等,其按钮作用比较明显。
作为游戏,在设计上,考虑了手动移动空格的操作方法。在中间状态情况下,棋盘上每个按钮可以按下操作,按下空格的上下左右按钮,如同空格的上移、下移、左移、右移。在信息记录里面显示操作步骤,游戏过程如图4所示。
3.3 BFS算法设计
宽度优先搜索算法设计主要包括状态编码、状态比较函数、无解判定、状态树构建算法、核心搜索算法等几个部分。
由于界面设计采用了按钮的形式,在状态编码上,按照顺时针顺序,使用整型数组存储每个按钮上的数字来表示某个状态,代码如下:
空格对应于按钮上无数字,在数组中值记为0。
通过状态比较才能判定是否已经达到目标状态。基于整型数组的状态编码方式,可以很方便进行状态比较,只要检查两个状态对应的数组是否相等即可。
无解判定可以避免无解的情况下盲目搜索。可以证明,八数码问题有解的充分必要条件是两个状态的逆序列奇偶性相同。为此,无解判定问题转化为计算两个状态的逆序列奇偶性问题,给出代码如下:
状态树构建问题主要是对当前节点构建其子节点的问题,分3种情况考虑:第一种情况,空格在棋盘中间;第二种情况,空格在棋盘的4个角上;第三种情况,空格在除前两种情况之外的位置。每一种情况构建子节点的数量不同。程序实现代码如下:
子节点构建完成之后, 要考虑是否已经在状态树上存在该状态, 如果存在, 则不加入到状态树中;否则, 加入状态树中, 作为一个新的节点存在。
宽度优先搜索算法是解决八数码问题的关键,根据BFS算法的基本思想,使用alllist存放整个TreeNodes树的所有节点,给出其实现代码如下:
3.4 实验结果
根据图3所示的操作界面上的起始状态和结束状态,首先进行无解判断,点击“有解判断”之后,程序提示是有解的。然后进行宽度优先搜索,界面显示如图5所示。
经过一段时间之后,系统搜索完成,弹出界面,如图6所示。
从搜索结果可以看出,此次八数码问题的解路径为20步,系统记录了每个节点的父节点,通过指向连接,可搜索到整个路径,点击状态演示后,最终界面如图7所示。
4 结语
从实验可以看出,宽度优先搜索是一种完备策略,即只要问题有解,它就一定可以找到解。并且,宽度优先搜索找到的解,还一定是路径最短的解。这些都是宽度优先搜索的优点。当然,宽度优先搜索也存在很多缺点,主要缺点是盲目性较大,尤其是当目标行点距初始节点较远时,将产生许多无用的节点,因此其搜索效率较低,虽然相对于计算机飞速发展的运算速度来讲,这已经不是关键问题,但仍是下一步有待改进的方面。
参考文献
[1]佘玉梅, 段鹏.人工智能及其应用[M].上海:上海交通大学出版社, 2007.
[2]王万森.人工智能原理及其应用[M].第2版.北京:电子工业出版社, 2007.
[3]詹志辉, 胡晓敏, 张军.通过八数码问题比较搜索算法的性能[J].计算机工程与设计, 2007, 06.28 (11) :2505~2508.
[4]刘浩, 鲍远律.A*算法在矢量地图最优路径搜索中的应用[J].计算机仿真, 2008, 04.l25 (4) :253-257.
[5]刘甲耀, 严桂兰.C#程序设汁教程[M].北京:电子工业出版社, 2007.
[6]余金山, 陈建荣, 王涛, 等.C#2008开发入行真功夫[M].北京:电子工业出版社, 2009.
VS2008环境 篇2
1 概述
窗体验证分为客户端验证和服务器端验证两种形式。客户端验证是指利用Java Script脚本,在数据发送到服务器之前进行的验证。服务器端验证是指将用户输入的数据全部发送到Web服务器进行的验证。
ASP.NET 3.5通过服务器控件形式引入了窗体验证,具有一定的智能性。在ASP.NET 3.5网站开发时,开发人员不必考虑是使用客户端验证或者是使用服务器端验证进行验证,因为在ASP.NET 3.5页面生成时,系统会自动检测浏览器是否支持Java Script。
验证控件具有完整的客户端实现,这使支持脚本的浏览器可以在客户端上执行验证。客户端验证通过在向服务器发送用户输入前检查用户输入来增强验证过程,这样就可以在提交窗体前在客户端检测出错误,从而避免了服务器端验证所需要的信息往返。
通过判断Page.Is Valid值可以确定页面上的控件是否都通过了验证。如果其值为True,表示所有的控件都通过了验证,如果其值为False,则表示页面上有控件未通过验证。
2 ASP.NET 3.5服务器验证控件
Base Validator类用作验证控件的抽象基类,为所有验证控件提供核心实现。验证控件用于验证关联的输入控件中的用户输入。当用户输入的值未通过验证时,验证控件将显示错误消息。由于验证控件是与输入控件分开的,可以将错误消息定位在页面上相对于输入控件的任意位置。ASP.NET提供了一些验证控件来执行特定类型的验证。它们是RequiredField Validator、Compare Validator、Range Validator、Regular Expression Validator、Custom Validator和Validation Summary控件。除了Validation Summary控件外,其他5个验证控件具有一些共同的属性,如表1所示。
使用Enable Client Script属性来指定是否启用客户端验证。默认情况下,此值设置为true,这在浏览器支持客户端验证的情况下,当在页面改变属性Control To Validate指定控件的值并将焦点移出时,就会产生客户端验证,从而保证响应速度。此时验证用的Java Script代码不是由开发人员开发,而是由系统产生。若将Enable Client Script值设为false,则只有当页面有往返时,才会实现验证工作,此时完全使用服务器端验证。可以逐个控件地禁用客户端验证。当客户端上的动态更新导致页布局出现问题时,或者当想要在验证发生前执行一些服务器代码时,这很有用。
如果一个页面已建立并设置了验证控件,若想在页面往返时不执行验证,如常见的“取消”按钮,只要设置“取消”按钮的属性Causes Validation的值为false就可以了。CausesValidation属性用于获取或设置一个值,该值指示当用户单击命令按钮时是否执行验证。属性Causes Validation值为false,表示不执行验证过程。在上述问题中,若要对一个控件设置多个规则,可通过多个验证控件共同作用,此时验证控件的属性Control To Validate应为相同值。如对密码文本框要求必填并且与确认密码文本框的值相同,此时可将Require Field Validator控件和Compare Validator控件都作用于密码文本框。Base Validator.Control To Validate属性用于获取或设置要验证的输入控件。使用Control To Validate属性来指定要验证的输入控件,对于所有验证控件,此属性必须设置为输入控件的ID(Custom Validator控件除外,对它来说,此属性可以保留为空白)。如果没有指定有效输入控件,则在呈现该页时将引发异常。该ID必须引用与验证控件相同的容器中的控件。它必须在同一页或用户控件中,或必须在模板化控件的同一模板中。
若要对同一个页面上不同的控件提供分组验证功能,可以通过将同一组控件的属性Validation Group设置为相同的组名来实现。
3 分组验证功能
3.1 界面设计
建立Validation Group.aspx文件,放置两个Text Box控件、两个Required Field Validator控件和两个Button控件,设置它们的属性如表2所示,界面设计如图1所示。
3.2 功能实现
设置rv Name控件和btn Submit控件的Validation Group为相同的值User Info Group,将它们分配到“用户信息”验证组,当控件触发服务器回发时,仅验证“用户信息”组中的验证控件。
设置rv Search控件和btn Search控件的Validation Group为相同的值Search Group,将它们分配到“查找信息”验证组,当控件触发服务器回发时,仅验证“查找信息”组中的验证控件。从而实现同一个页面的分组验证功能。
4结语
Base Validator类为所有验证控件提供核心实现,ASP.NET3.5提供的服务器控件具有一定的智能性,使用属性Validation Group实现了同一页面的分组验证功能。
摘要:在ASP.NET 3.5网站开发时,经常会使用表单获取用户的一些信息,为了防止垃圾信息,甚至空信息条目被收集,需要开发人员以编程方式根据实际需求进行验证。探讨基于VS2008的窗体验证,使用属性Validation-Group实现同一个页面的分组验证功能。
关键词:验证,属性,控件
参考文献
[1]覃焱.ASP.NET实现在数据库中二进制格式存取图片[J].电脑编程技巧与维护,2009,(09).
[2]韩家炜,Kamber,M.数据挖掘概念与技术[M].北京:机械工业出版社,2001.
[3]张涛.ASP编程基础[J].电脑编程技巧与维护,2009,(17).
[4]何川.基于Web Service的电子商务体系研究[J].电脑编程技巧与维护,2009,(16).
[5]张岸杨.ASP多层体信息系统的架构与实现[J].电脑编程技巧与维护,2009,(16).
VS2008环境 篇3
串口是计算机与外围设备之间的数据传输通道,由于使用其进行通信非常方便,并且能够实现数据的长距离传输,因此它的使用非常广泛。
在Windows环境下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源,即关闭串口。串口通信最重要的参数是率、数据位、停止位和奇偶校验。
2. VS2008下串口通信的实现
在VS2008下,实现串口通信的方法有三种:第一种,使用API通信函数;第二种,使用串口通信控件MScomm;第三种,使用VS2008专门提供的串口通信类Serial Port,Serial Port类极大的简化的串口编程的难度。接下来就以Serial Port介绍串口通信的实现。
2.1 初始化端口
首先,设置几个主要参数:
(1)Baud Rate(波特率)波特率是模拟线路信号的速率,是以波形每秒的震荡数来衡量,波特率主要有以下几种频率:2400,4800,9600,14400。
(2)Port Name Port Name是串口设备所使用的串口名称,在设计串口通信程序时,必须找到这个串口名称,否则无法和串口设备建立连接进行通信。
(3)Received Bytes Threshold这个参数主要是用来触发数据接收事件Data Received,当输入缓冲区中的数据量达到所设的数值时就触发,否则就一直等待。
(4)Write Buffer Size/Read Buffer Size设置串行端口输出/输入缓冲区的大小,这个参数需要根据具体的应用来设置,设置比实际使用小的话就会使程序出现问题。
这些设置根据具体使用的串口设备,本文设置为9600,com1,1,2048/4096。
参数设置完后就调用串口打开函数,Serial Port1.Open()。
2.2 串口读写
串口的读写有以下几种实现方式,见表1:
上表中的读函数与写函数需要配对使用,如果读的数据和写的数据不一致会使程序出问题。
串口的读功能经常与Serial Port类的一个事件有紧密联系,这个事件就是Data Received事件,表示将处理Serial Port对象的数据接收事件的方法。Serial Port对象接收数据时,将在辅助线程上引发Data Received事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如UI元素)时会引发线程异常。如果有必要修改主Form或Control中的元素,就要使用Invoke回发更改请求,这将在正确的线程上执行。
2.3 关闭串口
当使用串口完毕后,关闭串口,该函数为:Close()。
通过以上三个步骤,就可以实现最简单的串口通信。
3. 串口通信的应用
以下结合本人设计的上位机程序,讨论串口通信在VS2008中的应用。该程序通过串口实现与下位机的通信,从而实现对下位机的监控。
3.1 设计思想
程序包含“串口设置”,“获取设备ID”和“控制”三个功能。“串口设置”主要用于设置串口号,打开和关闭串口。“获取设备ID”主要用于获取每个设备的ID便于与其进行通信。“控制”主要用于对下位机系统进行的控制。程序界面如图1。
3.2 关键代码分析
(1)打开串口与发送数据
点击“打开串口”按钮后,执行Serial_Click()函数,该函数中调用serial Port1.Open()与Commandline()函数,其作用分别为打开串口,向串口发送数据。主要代码如下:
(2)接受数据
数据接收是串口通信中最为重要的环节,如果接收不及时和接收错误则会产生致命的问题。比如ReceivedBytes Threshold的设置就会影响到数据的接受。Data Received事件是当下位机向串口传输数据后上位机程序自动触发的,因此我们必须在此事件中完成我们所需要的相关操作及数据。其关键代码如下:
(3)实时监控
实时监控一般都要借助时钟来完成,本程序设置的间隔时间为1秒。
图中黑框表示设备在运行,白框表示设备没有运行。通过这个控制系统可以智能地监控设备的运行,从而节省很多人力物力。
4. 结束语
本文在对VS2008提供的串口通信类Serial Port做了详细介绍之后,通过系统控制程序演示了如何使用Serial Port类实现串口通信。使用Serial Port类开发串口通信程序高效快捷,可以很方便地实现简单的任务。
参考文献
[1]侯艳.VS2005中串口通信的实现[J].信息技术,2009,4:15-20.
[2]邱建华彭志豪.串口通信技术在Visual C++中的实现[J].软件工程师,2010,Z1:94-95.
[3]王正强.VC中应用MSComm控件实现串口通信[J].电子测试,2010,5:73-76.
VS2008环境 篇4
关键词:PDA,VC++,水准测量,电子手簿
0 引言
为了监测福建省及其近海地震活动,根据研究目标区域活动断裂的空间分布及活动特征,我中心在福建省内及闽赣交界处布设了闽赣跨断层场地、水口库区场地和厦门跨断层场地三类形变观测场地,监测相应断裂的活动。
闽赣跨断层短水准场地从1970-1982年共建有11个场地,2008年在福建省前兆流动监测项目中又增建了6个跨断层短水准观测场地,分别是:政和—海丰断裂带上的大田县旺建场地、邵武—河源断裂带上的泰宁县狮子山场地、闽江断裂带的闽候县坑南场地、永安—晋江断裂带上的安溪县参内场地,上杭—云宵断裂带上的平和县南山场地、沙县—南日岛断裂带上的莆田市莆田场地,观测场地分布见图1。
在水准测量工作中,手工水准记簿是一项极为繁琐的工作,记录、计算、检核各项工作需要记簿员非常准确、快速的完成,整个过程高度紧张,稍有差错就可能导致全测段返工。所以当可编程计算器一面世,各种类型的水准电子记录手簿纷纷出现,应用于各等级的水准测量。我中心水准记录也经历了从手工记录到Hp200Lx掌上电脑,再到基于EVB的PDA水准电子手簿的发展历程。
随着计算机软件及硬件技术的不断发展,微软不再对EVB软件进行升级,新一代的Win CE系统也不再支持基于EVB语言的程序设计,使我中心早期以EVB开发的水准记簿程序不能在新的PDA平台上运行,对生产作业造成很大影响。因此,必须对设备及软件进行升级换代。笔者提出利用Visual C++9.0开发新的基于PDA掌上电脑的水准观测记簿软件。
1 PDA及其开发环境简介
PDA是Personal Digital Assistant的缩写,意为“个人数字助理”。PDA产品大部分采用Windows Mobile、Palm OS和Linux这几种操作系统。其中微软公司研发的Windows Mobile(基于Win CE)系统继承了桌面Windows平台的易于使用和扩展性好等优点,使用最为广泛。
Win CE操作系统支持的与Windows系统兼容的API函数有上千个,使基于Win CE的嵌入式系统中运行的程序可以拥有与PC电脑中的程序同样复杂和强大的功能。可直接从微软官网下载Microsoft embedded Visual Tools开发工具包来开发Win CE应用程序。
这个软件包中还包含了Win CE平台模拟器,可直接在电脑上编写和调试Win CE程序,其中的进程、线程、视窗的概念,API函数以及控件的使用等与Windows系统非常相似。利用Microsoft Visual C++为开发语言,语言灵活性好,效率高,软件运行速度快,是基于PDA嵌入式程序设计的首选语言。在VS2008环境中进行,需安装如下组件:(1)安装VS2008,主要安装VC++9.0以及.Net Framework 3.5;(2)安装Active Sync,用来与PC同步;(3)安装Windows Mobile 6.0 Professional SDK(语言开发工具包),也可用VS2008集成的Windows Mobile 5 Professional SDK;(4)安装Windows Mobile 6 Professional Image(模拟器),也可用VS2008集成的Windows Mobile5 Professional Image。
2 程序设计思路
跨断层短水准场地分布在福建全省,比较分散、且测段短而多,但观测人员、仪器、标尺等相对固定,观测时间段固定,场地信息变化少。因此,在程序设计时充分考虑了以上因素,采用相对比较独立的模块化设计,系统主要包括六个模块:(1)设置观测人员、仪器型号、标尺常数等场地信息的系统初始化模块;(2)跨断层场地水准记录及计算模块(有观测时间限制);(3)长水准观测及计算模块(无观测时间限制);(4)仪器、标尺检测模块;(5)成果查询模块;(6)观测成果、仪检成果打印模块。
采用模块化设计的优势是把大部分信息录入工作放在系统初始化模块来运行,可提前在室内来完成,外业时就直接运行(2)或(3)模块录入观测数据、点击“下一步”按钮即可,这样就减少了记簿员的外业输入工作量,缩短外业时间,保证在一个观测时段内完成一次往测或返测,特别是在像水口场地这种有观测时间限制而水准路线又比较长的跨断层场地中体现得尤为明显。
3程序实现
由于PDA没有键盘输入,而水准观测外业记录时需要频繁输入数据,在外界光线比较强的时候PDA界面由于反光会看不太清楚,因此数据输入界面需要大而明显。程序设计时特别设计了大而高亮显示的数字输入控件,如图3所示。
以下是部分程序代码:
Msg Box"上下丝读数平均值与中丝读数的差超限!",,"三丝超限";}
4 结束语
本电子手簿是一个具有完善功能的水准测量记簿软件,可完全代替手工记簿。软件经过2011、2012年的厦门岛内外一等水准复测,闽赣跨断层短水准18处3期等复测的实际应用,成功实现了水准电子手簿的更新换代,提高了工作效率。说明基于VC++的PDA水准电子手簿工作流程正确,限差设置符合规范要求,数据安全性强,操作方便。
不仅如此,程序设计时,为了拓宽PDA电子手簿应用范围,同时编制了三、四等水准观测记录程序,可应用于一般工程性项目,例如在厦门市导线控制测量网布设项目中施测四等水准就得到了很好的应用。
参考文献
[1]国家地震局.跨断层测量规范[s].北京:地震出版社,1991.
[2]国家一、二等水准测量规范[s].北京:中国标准出版社出版,1992.
[3]国家三、四等水准测量规范(.GB12898-91).
[4]汪兵,李存斌,陈鹏等.EVC高级编程及应用开发[M].北京:中国水利水电出版社,2005.
[5]杨睿,尹晖.Smart Survey水准测量一体化系统设计与开发[J].测绘工程,2009,18(6),49-52.
[6]Microsoft Windows CE程序设计[M].北京:北京大学出版社,2001.
[7]周奕君,童小华.基于掌上电脑PDA的水准测量电子手簿研究与关键技术开发[J].黑龙江哈尔滨:测绘与空间地理信息,2008(1):l7~20.
VS环境下XML解析实现 篇5
1 XML简介
为了克服HTML的不足和局限性,W3C组织开发了XML,它也是一个标注语言,具有良好的数据存储格式、可扩展性、高度结构化、便于网络传输等特性。XML常用于不同系统之间的通信,通过Web方式或不同软件程序之间进行信息发布。XML也常常表现为简单、开放、自描述、上下文信息机器可阅读、内容与表现分离、多国语言字符集、支持Unicode等特点。
XML程序员能够创建属于应用程序的标签、元素,甚至标注语言,来满足应用需求。XML采用非常严格的语法,并需要小而快、轻量型的浏览处理程序。
设计XML的目的,是为了描述数据和文档。这些由人或程序来读取的数据,可以是高度结构化的,如存储在数据库中或电子表格中的数据;或者是松散结构的,如存储在信件或手册中的文本。XML已被许多产业界认可,用于应用程序或数据源的集成平台方面。程序员处理XML时,从大文本标签开始,到段落、子段落,到句子标签,到URL标签等等。一个格式良好的XML文档,必须包含元素、属性、文本,以及确定的规则。
每个XML文档有它的逻辑结构和物理结构。逻辑结构定义了元素、属性、数据类型和XML中使用的其它部件等。构成XML文档的元素的定义和描述,是XML文档能否成功的关键。物理结构提供一个个存储单元表示元素,这些单元称为实体,可表示如文本图像或其它媒体,如逻辑结构中允许的对象。
2 XSL简介
XSL是针对XML使用的XML样式技术,使用XSLT扩展样式表语言转换,XML结合CSS创建文档,由Web浏览器或其它用户代理程序调用执行。样式处理时,需要XML源文档和样式表,XML源文档包含于需要显示的信息,样式表则定义和描述XML文档如何被显示。XSL有处理指令PIs,它描述用于CSS中的XSL文档,以及它的位置或统一资源标识URI。XPath是一个路径表示工具,从源文档(源树)创建结果树和XSLT文档的指令树。XPath用于描述如何定位一个结点,XML文档树如何被遍历,文档的子集如何访问等。XSLT使用XPath指定信息存储在XML文件的具体位置,使用源XPath作为样式信息的XSLT文件中的标记引用方式。
3 XML解析实现
3.1 具体设计
XML解析程序的界面设计较简单,由三个按钮及其分别对应的文本框textbox、富文本框rich textbox和数组列表array list等控件组成。文本框,确定XML文件的路径;富文本框,显示XML文件的字符代码;数组列表,指示错误是否存在,如存在错误时即格式不是良好的,具体发生在哪些行和第几个字符位置。
三个按钮分别是:“装载文件”按钮,用于浏览XML文件;“另存为”按钮,用于保存更改后的文件;“校验”按钮,用于检测XML文件是否格式良好。
XML文件的路径应明确给出或文件能够被浏览。一个格式良好的XML文档,有助于确保信息是依据应用程序使用它的要求进行结构化定制的。仅仅是结构良好的XML文档,能够继续在任何其它元素中存储任何元素,或在任何相邻的元素旁边继续存储元素。
该解析器的优越性在于:1)开发XML文档与其编程中的修改相分离,文档的内容随时都是合法XML,因此可以用标准接口设计工具进行开发。2)XML文档的解析是在编译时进行,而不是在运行时进行,这对于复杂Web页面应用程序处理,保证了性能上的高要求。3)代码控制流保持着与页面分离,有助于在浏览器显示时,可以在服务器动态生成XML页面。4)对任何应用程序,如要求预处理XML文件的操作,这将是一个不错的选择。
该解析器使用C#.net实现,C#.net支持XML类的命名空间有五个,分别是:1)System.XML;2)System.XML.Schema;3)System.XML.Serialization;4)System.XML.XPath;5)System.XML.XSL。其中,System.XML命名空间包含主要的XML类,它有许多类用于读和写XML文档,这些类分别是:XMLReader;XMLText Reader;XMLValidating Reader;XMLNode Reader;XMLWriter;XMLText Writer。
可见,System.XML命名空间中共有4个读出和2个写入的XML类,这些类用于对XML文档的读写操作。XMLReader是一个抽象基础类,它包含了读文档的基本方法和属性,其中的Read方法,以流的方式读入一个结点。除了它的读出功能外,这个类也包含对文档结点进行导航遍历的多个方法。XMLWriter类,能够向XML文档中写入数据,它提供许多写的方法对XML文档中的项目写入,是XMLText Writer类的基础类。XMLText Reader、XMLNode Reader和XMLValidating Reader等类均是从XMLReader类派生出的类.除了XMLReader的方法和属性外,这些类还各自包含了读文本、读结点、读Schema等方法。XMLText Reader类用在编译器中,依据传递的文件名作为参数读入XML文档,如XMLText Reader text Reader=new XMLText Reader("D:ooks.XML")。创建XMLText Reader类的实例之后,接着调用Read方法,开始读文档。Read方法调用结束后,就可以读出存储在文档中的所有信息和数据。XMLReader类有属性如Name、Base URI、Depth、Line Number等。
3.2 具体实现步骤
具体实现步骤分为五步,分别为:
1)创建XML VALIDATOR对象:为了编译和处理错误,创建一个XMLValidator类,它使用了XML的许多其它类。
String f=file.text;//f是文件路径名
XMLValidator Validator=new XMLValidator(f);
2)装载XML文件:可以使用open File Dialog装载文件,因其可以浏览文件并选中文件。
open File Dialog1.Show Dialog();
string f;
f=open File Dialog1.File Name;
file.Text=f;
3)读文件并显示内容:从XML文件读入,此时要使用ASCIIEncoding类。
char[]char Data=new Char[200];
ASCIIEncoding ae=new ASCIIEncoding();
byte[]b=new byte[200];
File Stream fs=new File Stream(@f,File Mode.Open Or Create);
fs.Read(b,0,b.Length);
fs.Close();
Decoder d=Encoding.Default.Get Decoder();
d.Get Chars(b,0,b.Length,char Data,0);
string s="";
for(int j=0;j
s+=char Data[j];
txt XML.Text=s;
4)读路径:读路径使用XMLText Reader类,读文件内容使用XMLValidating Reader类。
XMLText Reader txtreader=new XMLText Reader(file Name);
reader=new XMLValidating Reader(txtreader);
5)处理错误:为了处理错误,使用Validation Event Handler类,它确定了错误并将错误放入数组列表部件中。
reader.Validation Event Handler+=new Validation Event Handler(Validation Call Back);
按上述五步实现的解析器,使用有效的好文档和无效的坏文档对其测试,结果都很成功,还可以修改文档并保存。下述例子说明对解析器进行的测试,运行时要么输入XML文档的路径,要么通过浏览找到文档然后点击“校验”按钮,操作较简单。
3.3 实验例子
例1:规则1,唯一的根元素。
XML文档必须包含唯一的超始标签和结束标签,包含整个文档,形成一个根元素。在该例子中,如表1所示,第二列是格式不良好的文档,因为它缺少一个根元素。
例2:规则2,正确地嵌套元素。
除根元素外,XML文档中的其它标签,必须正确地嵌套,也就是说,嵌套元素之间或嵌套元素与被嵌套元素之间的标签不能交叉或重叠。在HTML中,标签一般有单个的,如或
标签,这称为空标签。在XML中,空标签表示为
。如表2所示,如
例3:规则3,大小写敏感。
XML中的标签是大小写敏感的,这意味着标签
例4:规则4,属性值使用引号。
与HTML中属性值有无引号关系不大的情况相反,XML中的属性值必须总是使用引号。如表4所示,当属性值没有使用引号时,编译器返回错误。
例5:规则5,XML声明不可缺少。
在XML文档中,开始第一行必须有XML声明。如果缺少了XML声明,在编译处理时将产生错误。如表5所示。
4 结束语
该文使用C#.NET实现XML解析器,主要目的在于,通过简单且快捷的方法,检测出XML文档中的错误,以帮助程序员判定XML文档的格式是否为语法良好的。由于该解析器使用XML类,这些XML类在处理XML功能时,在编译、处理XML文档时发现其中的错误非常有效,因此,该解析器非常实用、高效,将其嵌入应用程序中使用,可以明显提高系统的效率和可靠性。
摘要:XML已成为数据交换的标准。为了节省时间、提高效率,并简化XML编程,基于Visual Studio.NET的开发环境,实现了XML解析器,它能够指出XML文档出现错误的位置,并判定一个XML文档是否格式良好。
关键词:微软开发环境,XML文档,XML解析,扩展样式表语言
参考文献
[1]周翔,阮世颖.基于Java的XML DOM解析器实现[J].电脑知识与技术,2007(21):755-756.
VS2008环境 篇6
随着对环境问题的重视,我国逐步加大了对污染企业的监控力度,对以往粗放型的钢铁行业也提出了新的环保标准。上海某钢厂是国家重点支持的大型支柱企业集团之一,顺应环保新形式,是实现可持续发展和生存的迫切要求。钢厂生产涵盖炼铁、炼钢、热轧、冷轧、水处理等工序,使用的设备众多,操作复杂。机组控制系统采用西门子控制器,由于技术限制,相关设备的运行只能在定制软件上查看,相关的报警信息仅限于HMI文字提示,极易错过环保设备重大故障报警,造成污染因子超标排放。目前钢厂已根据自身的生产情况,先后建立了污水排放在线监控系统、1号、2号烧结烟气在线系统、视频监控系统、空气质量在线监测系统等相关环保子系统,但各系统都相对独立,数据无法融合,未能实现统一管理。
开发综合性的环境监控系统,实现环保设备的远程自动监控运行及环境监测数据的有效统一管理是钢厂迫切需要。本文基于VS.NET强大的面向对象编程环境及可以实现跨技术边界的无缝通信作用,开发钢厂环境综合监控系统。通过结合钢厂内部资源,利用OPC技术和Web数据挖掘技术,基于VS.NET开发平台C#语言和面向对象的程序开发方法,利用OPC技术采集现有子系统的网络数据和PLC运行的状态信息,开发OPC语音报警客户端,将关键数据集成存储在SQL Server数据中[1]。采用Web数据挖掘技术,读取相关环保子系统的网络数据,将数据集成到环境监控系统中,以网站的形式发布。监控系统生成多种数据报表,避免了人工抄录、复制、统计多次数据信息,并且保证了数据准确性、一致性。
系统的实际运行结果表明,利用实时的数据报表和趋势图代替人工报表,读取PLC运行状态数据,及时获得环保设备运行情况,减小了故障率,避免了污染物的超标排放。环境监控系统将环保子系统的数据集成,减少了类似“数据孤岛”的存在,供环保部门管理人员一站式查看厂区环境状况,提高了企业环境监控管理水平,降低对环境的污染,具有良好的实际应用推广价值。
1OPC技术
OPC技术是基于Windows平台和微软公司的COM/DCOM组件对象模型的技术,普遍采用C/S架构模式,旨在为工业生产中不同的硬件设备之间提供通信接口标准。该技术主要适用在过程控制系统中解决不同硬件设备不兼容的难题,实现了不同硬件厂商设备构成的复杂系统的数据集成。OPC服务器是遵循OPC技术规范开发的标准软件驱动应用程序,作为传输桥梁从PLC中提取的数据信息再与下位机客户端进行通信。OPC客户端软件程序通过定制接口实现与OPC服务器的通信,读取OPC服务器提供的数据,实现对工业生产过程的监控[2]。
在本环境监测系统中,将OPC服务器安装在钢厂内部的服务器上,实现与底层PLC设备的通信,读取DB块的数据信息,环保设备监控系统通过OPC客户端读取OPC服务器中的数据,进而实现重要环保设备运行状态的数据集成,通讯系统结构如图1所示。利用VS.NET平台开发环境监控系统的环保设备监控客户端,实现I类环保设备、II类环保设备运行状态的实时监控,对出现故障的环保设备,实现报警点位置、报警信息的语音报警提示。软件采用SQL Server数据库将故障信息(包括故障时间、故障信息、故障排除的操作提示等)进行保存,为历史故障的查询、分析和数据挖掘提供第一手的资料。
2Web数据挖掘技术
数据挖掘是从庞大模糊数据中获得潜在有用信息的过程,Web数据挖掘是数据挖掘发展的一个分支,其主要对象是对网页数据的读取,在Web站点中对客户本身有价值的信息皆可作为数据挖掘的对象,包括网页文本信息(Text/HTML/XML)、各种控件信息、网页超链接信息等。在企业信息管理中运用Web挖掘技术搜集企业经营的环境信息,可以分析企业运行状况,进行风险分析、控制和危机预防[3]。
本系统鉴于钢厂内部网络的安全性和可靠性,读取污染源监控系统、废水排放监测系统等环保子系统的关键网络数据(厂区排放废气的浓度、废水的水质等等),采用基于HTTP协议的Web数据挖掘技术从网络页面抓取关键信息,通过对信息的数据分析及正则表达式处理将数据集成到B/S架构的环境监控系统中[4]。网页将请求的环保子系统废水排放检测系统网站地址内嵌到后台的程序中,获取内容源码后,按照预设的抽取规则,使用正则表达式按照字段分析,读取出水质站点的PH值、COD值、温度以及流速等关键信息。有些子系统的网页存在不完整的标记,通过TIDY类对预先进行修正。把数据以结构化的形式存储,对读取数据的处理结束后,把结果转存到新的数据表中。将数据信息嵌套到环境监控系统中,将不同点的采样数据进行整合,并且按照对数据的不同需求进行实时显示、与标准指标对比、记录故障信息以及预测未来趋势,以上数据集中显示于环境集控中心界面。调度设置环保平台监控在线数据指标,及时提取并储存异常数据,供不同部门的管理人员查看厂区的环境质量及排放情况,便于发现问题及时处理。具体数据挖掘过程如图2所示。
3环境监控系统设计
3.1总体框架设计
钢厂环境监控系统包括两个模块:环保设备运行状况监控客户端(C/S)模块和环境监控中心(B/S)相关子系统关键数据的集成发布模块,具体架构如图3所示,两个模块的数据都保存在同一个SQL数据库文件中。环保设备运行状况监控客户端主要完成I类、II类环保设备底层PLC控制设备信息的读取、处理和语音报警功能,采用OPC技术读取西门子控制设备DB块的状态数据,对环保设备实时状态的数据分析,自动报警提示播放语音文件,提醒操作人员采取相应举措避免故障的扩大。环境监控中心采用Web数据挖掘技术完成环保子系统网页关键数据的挖掘、集成和发布,生成相关的数据报表,省去了人工抄录的繁琐,降低了错误率。
3.2软件系统功能设计
环境监控系统的两大模块均采用VS.NET平台作为开发工具,其良好的人机界面和程序代码的高重复利用率,减少了系统的开发周期。环保设备运行状态监控客户端主要实现环保设备运行状态的数据截取,建立OPC与客户端连接之后,读取OPC Server的实时数据,从而判断运行情况,监控界面如图4所示。如果环保设备故障停机时,监控客户端调用相应的语音文件,提示操作人员,并把报警信息存入SQL数据库中,实现报警信息的可追溯,以及数据存储、归档、查阅等,同时为环境监控中心系统提供相关底层数据支持。由在线系统获取相关数据,实时读取现场环保设备的运行状态,代替以往的人工录入运行状况,极大减少了工作量,实现在线查看I类、II类环保设施运行情况的功能。以便钢厂环保部门及时发现问题,通知相关单位快速处理,减小环境污染。
环境监控中心采用Web数据挖掘技术通过Get/Post请求方式,获取钢厂相关环保子系统的关键数据[5],读取SQL数据库中环保设备运行状态的底层数据,通过对数据的分析、处理,将有效数据发布在网页上,以文字、趋势图和报表的形式展示给环境管理部门人员,随时查看厂区的空气质量,废水、废气的排放情况(监控界面如图5所示),力求做到合格排放,减小对环境的污染,实现环境状况监测的自动化和信息化,提高了企业环境监察能力,为达到国家要求的环境标准提供数据保障。
4实际工程应用情况
该系统主要应用于某钢厂机组中环保设备的运行及环境数据监控工作,把环保设备运行情况监控客户端和环境监控中心系统服务器部署在电气操作室同一台PC机上,监控客户端实时监控设备的运行状态,及时报警提示点检人员。监控中心系统供相关部门人员随时查看厂区环境情况和生产过程相关因子的排放情况。自2015年投入试运行以来,钢厂机组生产持续稳定,既方便了操作人员及时掌握机组运行状态的重要信息、及时准确调整工艺参数,又大大降低了环境事故,减少了周围群众的投诉,和谐了厂群关系。
5结束语
本系统在VS.NET平台的基础上将OPC技术和Web数据挖掘技术融合到工业以太网中,从现有西门子控制设备PLC的DB块中截取过程控制数据和从企业现有网络环保子系统中截取厂区内生产废气、废水等关键排放数据,实现对厂区环境信息的实时采集、分析、监测与报警。系统的在线运行情况证明,该系统能够提高企业综合管理水平,降低了重大环境污染事故的发生,做到符合国家新的排放标准,提高了企业管理效率。
摘要:为加强某钢厂环境监控力度,采用基于VS.NET平台方式,截取钢厂内控的污染在线系统、空气监测系统等环保子系统及环保设备运行状态数据,建立环境监控系统。采用OPC技术从环保设备PLC中截取过程控制的状态数据,采用Web数据挖掘技术读取环保子系统的关键信息,对关键数据进行分析处理,以B/S架构利用现有网络发布,生成环境数据报表、趋势图和报警信息,方便钢厂相关部门监控管理,及时处理问题。系统自投入运行,实现了关键数据的在线分析和处理,缩短了环保设备的故障发现时间,减少了污染物排放,降低了环境污染。
【VS2008环境】推荐阅读:
VS200807-14
VS2008中开发智能设备程序的一些总结06-19
英语辩论——环境保护VS经济发展05-09
长宁县环境保护局党组关于2008年度党风廉政建设工作总结06-29
ISO9001质量与环境管理体系内审员标准考试题与答案2008版10-03
VS201009-01
我VS粗心09-24
适应能力VS教育能力05-09
游戏交互VS交互游戏10-31
“江湖英语”Vs“庙堂英语”05-13