DOTNET及C#在称重计量领域的上位软件系统的应用研

类别:最新资讯 时间:2018-03-12 点击:112 次

称重计量领域是一个广泛地应用领域,在交通、化工、矿场、油气田、港口等等不同的场合中都发挥着 举足轻重的作用,在工艺计量和过程控制中更离不开称重计量,生产过程自动化水平很大程度取决于计 量称重技术的发展。本文通过对当前windows环境下的全新变革的讨论,及对新兴的开发语言C#和.net全 新平台的详尽分析,阐述了称重计量领域的软件系统在新形势下面临的问题和机遇,及通过C#和.net这 些新技术如何持续应对未来的需求的方法和途径。
1.概述
称重计量领域是一个应用广泛的领域,在交通、化工、矿 场、油气田、港口等等不同的场合中都发挥着举足轻重的作用, 在工艺计量和过程控制中更离不开称重计量,生产过程自动化水 平很大程度取决于计量称重技术的发展。称重计量不仅仅是对相 关物品进行称重,它还包括了硬件控制、各种数据釆集和管理、 系统监测及网络信息共享,是一套功能齐备的、以称重信息为中 心的综合应用系统。
我国各行对称重计量领域的需求增多,尤其是交通方面和能 源领域,这几年的需求一直有增无减。据不完全统计,需求以每 年12%的速度增长(参见《中国称重计量仪表市场供需状况研 究》报告)。四十四所也正抓住这个良好时机,签订了大量的与 衡器相关的项目。在这种状况下,对称重计量领域的软件系统就 提出了更高的要求。如,更加要求软件的正规化,要求具有一定 灵活性和良好的构架,以满足当前称重计量领域的软件系统的迫 切需求。
本文就当前微软公司近来推出的C#强大的编程设计语言, 和面向未来的.net的战略计划为出发点,深入探讨一下对称重计 量领域的软件开发所带来的巨大意义。
2.称重领域的软件系统分析
根据长期以来在称重计量领域软件应用方面的研发经验,及 对其发展方面的深入调研,我们可以对该领域的一些特点进行总 结,这些特点基本上反映了当前称重计量领域所具有的典型特色 和所面临的问题。
2.1快速开发,和快速的维护
由于称重计量市场的战略需要,要求能在短时间内完成和满 足新签订项目的需求。因此需要进行快速的开发和调试,其中很 大一部分是在原有的软件基础上进行修改。除了进行必要的软件 配置管理外,还需要开发工具的快速性和高效性,能以最小的劳 动量实现所需要的功能和修改,以实现同步满足称重计量项目对 上位软件的需要。
2.2模块化,灵活组合功能,以满足不同的需求
由于称重计量领域的所有项目具有一定的相似性,有很大部 分是相同的。如架构基本相同,都需要显示界面、数据库管理、 流程操作界面;显示界面基本上要显示监视视频、称重结果、硬 件控制等等;流程基本上都是刷卡、称重、显示或音频提示、打 印和存入数据库;数据库大部分需要的年、季、月统计和以主要 关键字段为条件的查询,基本上都有用户管理、班组管理等等。 因此,为了不重复开发已有的功能,需要釆用模块化的软件开发 方式,把经常变动的部分设计成模块,根据项目的要求进行组 合,以达到复用和节约开发成本的目的。
2.3友好的界面
操作软件的用户大多数是对计算机了解不深,学历不高的一 般用户。为了避免对软件操作的理解和学习的困难,避免误操 作,同时为了提高软件操作的效率,需要软件的界面具有友好性 和亲和性,使软件对新用户能尽快上手,并能方便地使用各种基 本功能。
2.4和大量的硬件打交道,需要一定的速度
称重计量的软件的一个特点是它所面对的硬件种类比较繁 多,包括了称重仪表、读卡器、红绿灯、八路保警器、红外对 射、光幕、显示大屏幕、语音系统、道闸、视频系统、车号识别 系统、打印部分等。当这些硬件同时工作时,就要求开发语言开 发的软件具有一定的执行效率,以保证流程顺畅的运行和及时反 应,使软件不会延误整个称重过程的进行。
2.5面向未来的运作环境
在计算机方面,这几年正发生着深刻的变化。Windows7的 推出,.net战略的实施,电脑硬件的高速发展,平板电脑和手机 的高度智能化,这一切都给软件提出了更高的要求,需要向未来 兼容,对新一轮的计算机的运行平台的更新换代做好准备。
2.6面向网络
未来是网络化的时代,称重计量系统也必将向WiFi、物流 网、云计算、移动终端和各种形式的远程控制等等这些方面迈 进,而这些技术无一例外根植于网络。因此,称重计量领域的在 未来的一个重心就是网络化,以网络为核心,实现信息的快速共 享和自由传送。
3.旧软件系统的弊端
3.1开发效率低下
称重计量领域的软件系统的设计语言,大量地釆用地是 Visual C+ +和Borland C++,及Delphi等等开发语言,实际上 Windows下的商业软件也大部分是基于这些开发语言进行开发 的。这些语言的一个特点是,开发出的软件执行速率较快。它们 成功地实现了软件的高的执行效率,使语言接近系统底层,语法 精简和干练,但是它们实现一个功能,却需要大量的较低层化的 编程,从而影响了开发效率。执行效率和开发效率是软件开发中 的矛盾之处。
3.2维护比较困难
正是上述提及的开发语言相对比较“低级”具有更低层的操 作能力,从而在开发过程中更容易出现危险的错误,使软件可靠 运行性不高,一旦出现问题则需要更多的时间去寻找问题根源。 这是因为它们缺少更高级语言的安全性、科学性、智能化,和对 低层良好的封闭性。比如,C和C+ +中的指针问题,这个特性能 给软件带来非常高效的执行速度,但是却带来极大的问题。一旦 软件出现问题,软件就有可能面临崩溃,而且问题点也比较隐 蔽,不易发现。原有开发语言的这些特点造成了维护的难度和成 本的增加。
3.3不兼容新型操作系统
由于微软公司的战略技术,新一代操作系统Windows Vista 和Windows7及以后更高版本的系统,将不能很好的支持Visual C++和Borland C++等等这些传统开发语言开发的软件,也就是 说,这些开发语言将面临不能兼容新操作系统的尴尬局面。
3.4界面陈旧
原有的传统开发语言基本上是基于WindowsXP甚至是 Windows98的界面显示特点。这些10年前的界面特色,已经显 得陈旧,不能满足当前的审美取向,从而会严重影响软件的包装 和形象。如果刻意去设计良好的界面,又会增加额外的开发进 程,在一定程度上,增加了软件的复杂程度。
3.5新技术支撑不足
对于目前的新兴的软件技术,比如.net、Ajax、工作流、云 计算、SOA等等,原有的开发工具都不能很好的支持,甚至是不 能支持,这是由于先天的设计造成的。虽然现出针对这些开发工 具出现了很多面向新技术的插件和类库,以使这些旧的开发工具 也能支持新技术的应用,但是这毕竟是一种修补,勉强兼容新的 技术要求,同时这些修补也多出于一些爰好家之手,得不到官方 的技术支持。
4.新兴的C#与.net
4.1简介
2000年6月,微软官方正式发布了Mic「oso化NET (也称为 DotNet )平台战略,该平台是是微软的新的因特网和Web战 略,未来微软所有产品都将基于这个架构,它是一个基于因特 网、WEB及桌面系统的全新架构,用于通用服务(universal services ),可运行于任何平台上的任何浏览器中,并基于最新 的web标准.

C#是Microsoft在2000年7月推出.NET Framework的第1版 时提供的一种全新语言。C#是一种安全的、稳定的、简单的、 优雅的由C和C++衍生出来的面向对象的编程语言。它在继承 C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有 宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作 和C + +的高运行效率,及类似于Java的语法特点,以其强大的 操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件 编程的支持的特点,并经过十年的发展,现在已成为.NET开发 的首选语言。
4.2C#与.net的特点
4.2.1先进性
具有C + +和C的灵活性,和非常接近它们的执行效率,具 有高级语言的开发效率,具有庞大和高效率的运行库(.net Framework平台),可以说是微软集各种开发语言之大成。
在过去的二十年内,C和C + +已经成为广泛的应用在商用 软件的开发中的开发语言。但是C和C + +都提供了一些容易使 开发者产生错误的特性,也可以说C和C + +的灵活性是牺牲了 开发效率。如果和其他的开发语言相比(比如说VB ),相同功 能的C/C + +软件通常会需要更长的开发周期。正是由于C/C + + 开发的复杂性和需要较长的开发周期,所以许多C/C + +开发人 员都在寻找一种可以在功能和开发效率间提高更多平衡的开发 语言。
C#的出现解决了这个问题。它是一种先进的、面向对象的 语言,通过C#可以让开发人员快速的建立大范围的基于微软网 络平台的应用,并且提供大量的开发工具和服务帮助开发人员 开发基于计算和通信的各种应用。C#可以为C/C++开发人员提 供快速的开发手段而不需要牺牲任何C/C++语言的特点/优点。 从继承角度来看,C#在更高层次上重新实现了C/C + +,熟悉C/ C+ +开发的人员可以很快的转变为C#开发人员。
4.2.2网络化
C#是微软公司为了与JAVA语言进行竞争而研发的新型语 言,JAVA是网络编程中最重要的语言,其J2EE具有庞大、完 整的分布式企业级应用程序解决方案技术。为此,C#也必须具 有该方面的能力才能与JAVA进行同级别的竞争。C#天生就具 有了网络技术和运用的能力,对网络的功能的实现具有更强大 的能力。C#是后起之秀,它与WEB开发的结合,高于其它语言 尤其是Java语言。C#开发者可以方便的在网络平台上扩展自己 的应用。C#可以将任何组件转变为WEB服务,并且可以被运行 于Internet上的任何平台的任何应用调用,重要的是C#对这一 特性提供了内置的支持。更重要的一点,WEB服务框架可以让 任何WEB服务都看起来类似于C#的内置对象,所以可以让开发 人员在开发过程中继续使用他们已经具备的面向对象的开发方 法和技巧.
4.2.3复用技术的实现者
面对日益复杂的软件系统和软件需求,软件复用被认为是解 决“软件危机”、提高软件开发效率和质量、实现软件“批量 化”生产方式的重要途径之一。同时软件复用的研究和实践表 明,特定领域的软件复用活动相对容易取得成功。这里的领域是 指一组具有相似和相近软件需求的应用系统所覆盖的功能区域。 领域的内聚性(领域知识逻辑上的紧密相关性)和稳定性(在一 定时间内,领域知识不会发生剧烈的变化)为软件复用活动提供 了可供复用的软件资产和潜在的经济利益,使得特定领域的软件
复用相对容易获得成功。
C#是一个完全的、纯粹的面向对象的设计语言,因此具有 模块化、结构化的显著特点,对于实现技术和成果的复用具有强 大的优势。同时,C#泛函、特殊的dll方式等等技术也为成果复 用提供了更有利的方式。
4.2.4敏捷开发
C#所在的Visual Studio集成环境中自带了流程模板,相比较 其他所谓敏捷工程实践性更强,并且Visual Studio集成了编码以 外的版本控制、缺陷管理、UML建模等,以及专门用作用于测试 驱动开发的单元测试模板。Visual Studio为软件开发项目流程中 不同角色的人员提供相应的工具,以Team Foundation Server 为核心,将不同角色和工具整合在一起,这样不但增强了软件开 发团队中的沟通与协作,更能方便实现完整的使用程序生命周期 管理,在流程开发中使开发团队以及在整个开可预见性发流程中 确保更高和更好的质量。而且,Visual Studio支持统一建模语言 UML及特定领域语言DSL,可以让开发团队各个人员(.NET项 目管理人员、软件架构师或者开发人员)轻松可以直接执行软件 架构的构建。
从上文分析可以看出,C#和其编程环境中已经为敏捷开发 做了大量的准备,完全能够实现软件快速、高质量的开发。
4.2.5完全适应未来环境
正如前文分析,由于.ne tFramework是作为从Windows Vista开始未来所有操作系统的低层平台,所以C#具有完全的 兼容性,也是未来微软的操作系统兼容最好的开发语言。
5.应用情况
通过对C#设计语言与.net平台的分析可以看出,在以 Windows为主要操作系统下,它们是当前最佳的选择,因为它 们的特点可以满足计重称量领域的软件设计需要,能够适应该 领域的发展方向。以下通过称量汽车衡器类的项目来说明C# 及.net在计重称量领域的应用情况。
5. 1应用简介
由于汽车衡项目开发的需要,需要开发多用途、多接口的 计重软件,需要多称量平台和灵活的模块组合模式,即以模块 化思想,以面向汽车衡领域为目标,开发出具有可方便调整和 扩展、在硬件、报表、流程等等方面可组合和设计的新型的汽 车衡系统。
5.2系统结构
汽车衡项目的系统结构如下所示:
从该系统的结构中可以看出,该项目完全是以模块化实现 的,并按功能可以大致分为五个板块:主控、硬件、流程、数据 库和网络板块。每个板块又有各自相关的模块。

5.3C#的实现
5.3.1命名空间划分板块
C#中的命名空间(namespace )是一种顶级声明,软件的 其它所有部分都在命名空间中,它提供了一种从逻辑上组织信息 的方式,有助于功能的规整和系统的模块化,防止命名冲突。 C#的命名空间是划分功能类型的工具,在.net f「amewo「k平台 中,有定义好的数以千计的各种类型的命名空间,每个命名空间 中又包括和该命名空间的含义相关的各种类。
在本项目中,可以利用C#的命名空间来实现每个板块,每 个板块可以看成是一组相同功能和模块的组合,利用命名空间就 可以实现这样的功能和模块组合。
5.3.2类实现模块
C#中的类与C+ +时代的类有比较大的不同。C#是完全面向 对象的开发语言,它的所有代码是由一个个类实现。和C+ +比, C#中的类又多了更多的特性,比如属性和字段分开、扩展方 法、事件、自动属性、对象初始化器、密封、抽象、分部、索引 器等等,这些新特性,使类具有更强大的表现性,能更准确地用 代码实现一件事物。
因此可以用C#中的强大的类来实现模块。它能实现一批面 向某一应用的函数(方法)和属性(及字段)的组合。模块的属 性就是类的属性、字段,模块的接口就是类中的函数(方法).
用C#中的类来实现模块,可以完整和准确地实现模块的功能, 体现了模块的内聚性。
5.3.3外部模块实现组合
为了方便组合,有很多模块是要根据项目进行增减的,也就 是说这些模块是活动的,是可以由甚至是用户来进行组合的。为 此,就需要以单独文件存在的外部模块来完成。一般是以动态链 接库的方式来实现。C#可以实现两种动态链接库方式:一种是 标准的动态链接库(dll),是各种设计语言之间兼容的方式。因 此,用其它语言开发的动态链接库(模块)可以釆用这种方式加 入到系统来,比如项目中的硬件模块是用Borland C++ Builder 和Visual C++开发的,通过标准动态链接库方式加入到硬件板块 中;另一种是C#新制订的标准,通过这种新标准,可以非常方 便的调用C#自己开发的外部模块。
5.3.4消息交互
C#可以实现Windows下的所有信息交互方式,例如Pipe管 道消息传递、文件映射、Socket等等。
在本项目中,釆用消息方式来实现各个模块之间的信息交 互。例如在初始化时的流程如下:
模块之间必然存在各种交互和互动,由于微软公司在其 dotnet底层中,针对其Windows操作系统整合和封装了全部的系 统接口(API),因此,作为dotnet的御用语言C#也就能轻松的 调用这些功能,甚至是直接调用系统的API接口,这样,对本项 目中的模块之间的通讯提供了全面的支持。

例如本例中的消息,就直接釆用了系统的API接口,常规和 字符串方式的声明分别如下:
[DllImport("User32.dll", EntryPoint = "SendMessage")] private static extern int SendMessage(IntPtr hWnd, uint Msg, uint wParam, int lParam);
[DllImport("User32.dll", EntryPoint = "SendMessage")] privatestatic extern int SendMessage2(
IntPtr hWnd, uint Msg, int wParam,
ref _COPYDATASTRUCT lParam );
使用方法,示例如下(aO「de「ID和aPa「a为发送的信息): SendMessage(aHandle, WM—APP, aOrderID, aPara);
5.4项目的设计过程
5.4.1建模
对项目中的每一个板块需要进一步建模,以确定板块的详细 的实现细节及每个模块之间的调用关系。例如利用Visual Studio 下(Visual Studio 2010内部存在更强大的设计工具)的UML设 计工具设计出的硬件板块与其它板块和模块的配合情况:
C#所在的Visual Studio集成开发环境中,集中了大量类似于 UML这样的方便的设计工具,为软件的开发提供了极其便利的手 段和途径,对软件的快捷的开发提供了有利的支持。

5.4.2类关系的确定
类的设计是程序代码化的最后一步,根据UML的建模的结 果,可以进一步设计出各个模块的结构,和它们之间的关系。例 如本项目中的主控模块的主空间的类关系如下:

上图是一个类的直观视图,它是根据实际代码转化而来,也 可以转化为完全一致的实际代码。通过这种方式,C#设计的程 序的结构和内容一目了然。
5.4.3代码实现
根据类的关系和结构,就可以编写代码,甚至是由C#编辑 器自动生成代码,比如主控模块的主空间的代码如下(内容已收 缩只显示类结构):

从上图可以看出,C#的代码井然有序、非常清晰,准确 地实现了设计的模型。C#的编辑器中还内建有非常强大的智 能感知系统(IntelliSense),会非常迅速和智能地感应设计 者的下一步动作。(图:智能感知系统。见下文)
清晰、简洁、强大的设计界面,有利于程序的快速编写和
As s cablyLo «d£venlAr gs Jj| Ass«*blyLotdEv«ntHtndltr J AsyncCallbtck i) Mtribul更高效的维护,对于短时间内构建和维护“速食”的称重计量领 域的软件系统具有非常大的意义.

6.发展前景
微软的.NET是一项非常庞大的计划,也是微软公司今后发展的战略核心,“在任何时间、任何地点,获取所需的信息”。作为一种全新的开发语言,它的市场占 用份额已经上升到了第六位(参见Tiobe发布2011年1月发 布的开发语言排名)。因此,作为.net环境下的核心开发语 言c#,其地位会不断地提高,技术水平会不断地得到发展和 进步。而基于Windows平台下的称重计量领域的软件系统, 完全可以利用.net和C#所带来的技术革新和进步,为该领域 内的持续发展提供强有力的支持和强大的保障,为今后的多 样的、广阔的应用和新时代的PC方面的变革,作好充分的准 备.
 

中国领先的称重软件技术提供商

The Leading Provider of Geomatic Solutions in China

展开收起网站地图