孙泽明
(山西省电子工业科学研究所,山西 太原 030006)
笔者在做《煤矿综合自动化联网监测系统》时,需要把通过FTP 上传上来的安全监测数据进行图形显示,通过网络搜索一直没有找到合适的方法,笔者通过自己的摸索,用比较简单的方法实现了这一简单但是很实用的功能。
本系统使用MICROSOFT VISTUDIO2005 集成开发环境,后台数据库为SQLSERVER 2005,前台为ASP.NET +C#+AJAX。
SQLSERVER 2005:SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。
ASP.NET:ASP.NET 是.NET FrameWork 的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP 请求文档时再在Web 服务器上动态创建它们。指Active Server Pages(动态服务器页面),运行于IIS(Internet Information Server 服务,是Windows 开发的Web 服务器)之中的程序。
C#:C#是微软公司发布的一种面向对象的、运行于.NET Framework 之上的高级程序设计语言。C#是一种安全的、稳定的、简单的、优雅的,由C 和C++衍生出来的面向对象的编程语言。它在继承C 和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB 简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET 开发的首选语言。
Ajax:Ajax 用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在Ajax 之前,Web 站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。Ajax 提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript 和DHTML 立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript 和CSS 来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web 站点看起来是即时响应的。
具体要求:
· 可以选择不同传感器数据
· 不同传感器有不同的最大值、最小值、报警值
· 可以显示实时、历史数据
· 能左右移动查看以前的数据
编程思路:
每隔30 s 自动根据传感器属性和数据生成一幅临时图片,再显示,最后删除生成的临时图片文件。如图1:主界面图,图2:流程图。
图1 主界面图
图2 流程图
具体步骤:
1)在新建的ASP 页面上放置传感器列表combox,时间textbox.传感器列表控件id 是ddl1,该控件数据通过在page_load 事件中用代码实现数据提取或者通过相关数据表直接实现。本文通过第一种方法实现。
2)在新建的ASP 页面上放置ScriptManger、UpdatePanel控件,这俩个控件的所有属性均为缺省值。在UpdatePanel控件里放入Timer 控件,该控件的Interval 属性设置为30000,意思为每30 s 刷新一次,因为煤矿井下的安全监控数据是每30 s 上传一次,所以设置为30 s。
3)在UpdatePanel 控件中放置任意一幅图片,可以通过设置属性ImageUrl 改变。设置Height=600px,Width=700px。
4)放置3 个按钮,分别为btnFirst,btnPre,btnNext,btnLast;用来控制图形的前后移动。3 个label 控件,分别为lblCount,lblFirst,lblEnd,visible 属性为false,用来保存显示数据的多少,第一个数据和最后一个数据数量。本文设定最多显示1 个小时数据,所以初始化lblEnd.Tex=”120”。
5)初始化:设置初始变量值,Page_load()
6)画图函数
7)定时器函数:
获取数据总数,并设置变量iFirst、iEnd 的值。
8)移动到最前点、最后点、前一点、后一点函数
只需设置变量iFirst、iEnd 的值后调用CreateImage(iFirst,iEnd)即可
9)获取数据量多少函数
获取需要显示的所有点的个数,GetCount()。
本程序在VS2005 运行成功,发布也成功,且cpu 占用率很低,运行稳定。图3 是结果图。
图3 结果图
本程序的优点是动态根据各个不同传感器的不同属性值绘出不同的图形曲线。缺点是没有实现时间断档的处理,没有做成控件形式。