面向LED路灯定位的桌面监控设计

2013-12-30 09:48吴欢欢秦会斌
电子器件 2013年3期
关键词:脚本路灯代码

吴欢欢,秦会斌

(杭州电子科技大学新型电子器件与应用研究所,杭州310018)

随着城市的发展,传统路灯照明问题凸显,传统路灯被LED路灯代替是必然的,并且随着LED路灯智能化的发展,现场由从单片机采集路灯电流电压后经过主机与上位机进行GPRS数据传输,从而达到“遥控、遥测、遥讯”的目的。目前智能LED路灯控制箱的研究和发展,还有上位机软件的设计得越发成熟,相信不久的将来,中小城市的路灯就会普及智能LED路灯照明控制系统,而与客户监控直接接触的客户界面就会显得是所有信息表达的关键。

研究目前公司设计的产品时,发现目前智能控制系统的LED路灯定位大多是上传地图图片的形式,再根据图片的坐标在图片上进行标注,往往一张图片的程序占了好几米长,如果是基于Web服务器下载的话,数据的传输也会因为数据大而感觉程序比较卡,对于操作体验就会感觉很不流畅。针对问题,设计和实现简单的LED路灯定位系统以达到更好并且有效都路灯进行实时监控路灯。

1 开发工具介绍

Microsoft Visual Studio 2008是面向 Windows、Vista、Office2007、Web 2.0 的下一代开发工具,代号“Orcas”,是对Visual Studio 2005一次及时、全面的升级。VS2008引入了250多个新特性,整合了对象、关系型数据库、XML的访问方式,语言更加简洁。使用VS2008可以高效开发Windows应用程序[1]。

2 开发技术

2.1 JavaScript概述

JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等[4]。它是通过嵌入或调入在标准的HTML语言中实现的[5]。

2.2 CDHtmlDialog类介绍

在MFC类层次上,CDHtmlDialog为开发者提供了创建Webgui的一系列基础设施,包括事件机制、窗口行为、以及对HTML文档操纵接口。MSDN是微软提供给我们使用VS2008的帮助文档,在里面CDHtmlDialog类被解释为:用于创建对话框,使用HTML而不是对话框的资源来实现他们的用户界面。CDHtmlDialog可以加载HTML显示来自一个HTML资源或 URL。CDHtmlDialog也可以做与HTML控件的数据交换和处理事件从HTML控件,比如按钮点击等[2]。

2.3 百度地图API介绍

百度地图 API是一套应用程序接口。通过API,只需简单的操作,即可在自己的应用中构建功能丰富、个性化的、高效的地图功能。其中包含了构建地图基本功能的多个接口,提供了诸如位置搜索、周边查询、出行路线规划等功能服务。百度地图API服务是免费开放的。并提供了基于移动设备和浏览器的两套API。

3 LED路灯定位技术的设计

在整个智能路灯控制系统中,LED路灯定位系统使整个客户端软件的用户体验性和方便用户操作与监控无疑提供了一个很直观、方便的强大功能,基于MFC中CDHtmlDialog类来访问百度地图,在通过C++语言来访问JavaScript来实现路灯在地图中的定位。整体设计框图如1所示。

图1 定位设计框图

图1中,Web服务器是提供百度地图访问的服务器,通过自己设计的基于 CDHtmlDialog类的CMapInfomation对HTML来进行访问百度地图,并通过CMapInfomation类中的CallJScript来进行对脚本的访问,对路灯实际经度纬度在地图进行标注,通过数据的交互实现对路灯实时信息进行显示和控制[6-11]。

4 LED路灯定位技术的实现

4.1 MFC嵌入浏览器

在MFC系统工程资源中了插入一个对话框资源,将ID修改为IDD_HTMLMAP,再为这个对话框资源建一个类,类名为 CMapInfomation,基于 CDHtmlDialog类[3],如图2 所示。

图2 创建CMapInfomation类界面

4.2 实现脚本扩展

在创建完CMapInfomation类之后,这个类的主要作用就是访问资源为IDR_HTML_MAPINFOMATION的脚本,此脚本内容在4.2节设计与实现。网页脚本要调用C++程序代码,就必须要实现脚本扩展。实现脚本扩展就是在程序中实现一个IDispatch接口,通过CDHtmlDialog类中的OnGetExternal虚函数返回此接口指针,在脚本中通过Window.External.xxx(xxx为C++程序函数名)。在MFC中从CCmdTarget派生的类都可以实现自动化,而不必在MFC工程中引入繁杂的ATL。只要在CMapInfomation类的构造函数中添加EnableAutomation函数就好。代码:

4.3 C++代码调用网页脚本中的函数的实现

在MapInfomation类的代码中,实现对脚本HTML文档中所有对象的获取和函数关键字的读取和调用,使用函数GetJScript和CallJScript这2个函数,CallJScript这是一个虚函数,也是一个重载函数,他对于传入脚本函数的参数可以多变。

4.4 LED路灯定位的实现

以上关键代码实现之后,对于LED路灯定位只要实现在C++代码中用CallJScript调用addMarker函数,传入经度strLatitude,纬度strLongtitude2个参数就可以定位,实现代码:

实现的效果图如图3所示。

图3 路灯定位实现效果图

4.5 LED路灯监控的实现

在实现上述的定位功能之后,系统会实时对路灯进行监控,监控的只要是对GPRS传输过来信息的一个解析过程,解析的代码不是本文的介绍重点,就不在这里过多介绍了,下面是介绍在界面对实时监控的信息如何来进行操作。

对路灯的实时监控,在正常时候就显示图3的情况,要了解详细的路灯信息是就要双击标记点,实现后如图4所示。

HTML主要实现代码:

在C++程序中主要代码:

图4 监控见面

当然所说的实时进行路灯监控主要是对路灯告警信息的进行监控,主要体现是,在对GPRS信息进行解析之后,界面上对控制箱有报警信息的标记会进行跳动,当我点击跳动时,界面就会显示出报警的具体信息,从而实现了实时监控,如图5所示。

图5 具体告警信息显示图

5 结束语

面向LED路灯定位的桌面监控设计的实现,给实际的智能路灯控制系统带来了更加直观的用户体验,在与传统的地图图片标注来说,实现了现在实时更新地形地图状况,实现了桌面监控的实时性和可靠性,为系统的操作带来了更好的可读性和可操作性。

[1]孙鑫.VC++深入详解[M].北京:电子工业出版社,2006.

[2]丁有和.Visual C++.NET编程实战[M].天极出版社,2002:3.

[3]王华,叶爱亮,祁力学.Visual C++6.0编程实例与技巧[M].机械工业出版社,1998.

[4]张长富,黄中敏.JavaScript动态网页编程实例手册[M].海洋出版社,2005:8.

[5]孙素华.DreamWeaver MX 2004完美网页设计实战技巧篇[M].中国青年出版社,2006:1.

[6]李黎明.安阳市路灯智能监控系统技术简介[J].山西建筑,2012,38(16):132-133.

[7]杨章伟.21天学通Visual C++[M].电子工业出版社,2009:36-49.

[8]朱荣辉,吴爱国.基于GPRS的城市照明监控系统开发[J].电器应用,2005,24(12):100-103

[9]万乡才,梁龙学,吕晓剑.基于GPRS的路灯节能控制系统的研究与设计[J].自动化与仪器仪表,2012,2:62-63.

[10]韩斌杰.GPRS原理及其网络优化[M].北京:机械工业出版社,2003:15-50.

[11]申利民,翁桂鹏.基于ZigBee的智能小区LED路灯控制系统设计[J].中国照明电器,2011,12(2):10-14

猜你喜欢
脚本路灯代码
酒驾
安奇奇与小cool 龙(第二回)
路灯
创世代码
创世代码
创世代码
创世代码
为什么高速公路上不用路灯照明
快乐假期
小编的新年愿望