基于Windows服务、网络和串口投影机远程控制设计
2009-08-13张会铭陆云龙雷志华
张会铭 陆云龙 雷志华
摘 要:在小型或零星的多媒体教室实现对投影机的网络远程控制,仍然值得进一步研究。在此阐述Windows服务的基本特性,分析服务器端网络数据帧与串口数据帧通信协议的转换,论述基于Windows服务的软件设计流程。进而提出在无网络中控的情况下,对投影机实现远程控制的“零成本”解决方案,并介绍投影机远程冷启动开机和延时关机的方法。基于Windows服务的数据通信有着在特殊应用中的优势。
关键词:Windows服务;网络;串口;远程控制;投影机
中图分类号:TP393文献标识码:B
文章编号:1004-373X(2009)10-080-03
Design of Remote Control of Projector Based on Windows Service and Network Serial Interface
ZHANG Huiming,LU Yunlong,LEI Zhihua
(Modern Educational Technology Center,Huazhong University of Science and Technology,Wuhan,430074,China)
Abstract:It is still desirable to study and develop remote control on the projector in miniature or scattered multimedia classroom.The basic characteristics of Windows service is elaborated in this paper,and the communication protocol between network data frames and serial interface data frames is ananlyzed,and the software design process based on Windows service is discussed.Furthermore,a solution withzero-cost of the remote control on projector has been put forward when there is no availability of central network control.The method of remote coldstart-on and postpone-off of projector has been introduced at the same time.The data communication based on Windows service is innovative points.The advantage of this technique in some special application has been illuminated.
Keywords:Windows service;network;serial interface;remote control;projector
0 引 言
在小型、零星或分散的多媒体教室里,如果吊装投影机后,再配置一套多媒体教室设备网络集成中央控制系统(简称网络中控)显得有些多余。因为网络中控的主要控制对象是投影机,是围绕投影机服务而实现多媒体教室设备的集成控制。不过投影机已经具备了信号源的切换功能,与其连接的计算机又有网络和串口资源,而且网络中控还必须占用一个目前网络资源紧张的IP地址。
为了充分利用投影机和计算机自有的硬件软件资源,这里使用Microsoft Visual Studio 2005[1]集成开发工具和.NET 2.0框架,采用C#编程语言,提出一种既能在运行时不需用户交户的窗口界面、不与其它应用进程发生冲突,又能实现投影机的远程冷启动开机和延时关机,基于网络、Windows服务[2]和串口的投影机远程控制“零成本”解决方案。
1 关键技术的实现
1.1 计算机Windows服务技术特征
一个计算机Windows服务程序[2,3]是没有Windows窗口界面的后台运行程序,是在Windows操作系统下不要求用户交互而能在后台运行特定功能的可执行应用程序。对于自动启动的Windows服务程序,在Windows启动或是重启之后,用户登录之前就开始执行,随Windows系统关闭而最后停止。Windows服务程序的应用范围很广,典型的Windows服务程序包含硬件控制、应用程序监视、系统级应用、诊断、报告、Web和文件系统服务等功能。
Windows服务应用程序的启动由Windows服务控制管理器(Service Control Manager,SCM)完成,而SCM通过维护数据库对已经安装到系统的所有服务和驱动程序进行统一而安全的控制和管理,是一个远程进程调用服务器,在Windows操作系统导入时自动启动。Windows服务分为服务应用程序启动、服务程序监控及运行和服务程序安装三个部分。这三部分通过安装程序组合为一个完整的.exe文件。
实现投影机的远程控制,开发用户主要精力放在网络与串口通信协议及程序设计上。与投影机连接的计算机设置为服务器端,由服务器端的网络与串口通信程序转发客户端发送的控制信号实现对投影机控制,或作为返回投影机的应答信号。显然,计算机只是数据信号转发的硬件软件中介,网络与串口通信软件只能在计算机的Windows操作系统后台进行,即Windows服务承担此特殊任务。这是实现硬件控制和应用程序监视,并以软件设计为主的解决方案。.NET框架简化了Windows服务程序的创建和控制过程,其中启动函数OnStart()和关闭函数OnClose()都是Windows服务开发重点。
1.2 网络数据帧与串口帧的通信协议设计
为了在计算机启动后立即监听网络,及时转发客户端发来的控制信号到投影机,使投影机实现相应的动作,则计算机首先必须实现基于Windows服务的网络和串口的转换协议,定义图1所示网络数据帧和串口数据帧格式。服务器和客户端都以网络数据帧来通信,网络数据帧包含IP头、TCP头和若干串口数据帧。由于服务器端的计算机可能要使用多个串口控制嵌入式设备,同时因不同厂家生产投影机的串口波特率、效验位、数据位、停止位等都不一致。无法确定所有投影机的串口设置,串口帧除了串口数据(N位)外,还需要在串口数据前加串口号(1位)、串口设置(1位)。为了编程方便,设定统一串口帧长度,对于不够长度的,以填充位(为0)来补齐。在允许网络数据帧最大长度的情况下,可以一个网络数据帧包含若干个串口数据帧,各个串口数据帧以串口帧头和串口帧尾区分开。
1.3 网络与串口通信软件设计
由上面论述可知,与投影机连接的计算机设置为服务器端。其软件设计[4,5]采用客户机/服务器(C/S)模型,与远程客户端实现网络通信,都要建立通信网络套接字Socket对象,以后服务器端和客户端通过这个套接字进行网络通信。.NET 2.0提供了SerialPort串口组件,以完成与投影机或其他嵌入式设备的串口数据信号转发。
在服务器端,基于计算机Windows服务的关键程序是网络与串口通信程序设计,网络与串口通信主程序流程图如图2所示。服务控制管理器SCM在Windows系统启动后就调用网络与串口通信程序的OnStart()函数。在OnStart()函数里建立新的线程,并建立新的Socket对象,使用bind()函数绑定本地计算机的IP地址和协议端口,通过listen()函数监听该协议端口。为了提高计算机的运行效率,采用非阻塞异步Socket编程。
网络侦听到新的连接后,就建立新线程并生成新的Socket对象,原线程继续侦听网络,新的Socket对象与客户端的Socket对象建立连接,并接收客户端发来的网络数据帧。服务器端Socket对象收到网络数据帧后,解析出串口数据帧,并读出串口号和串口设置,根据串口号初始化本地计算机的SerialPort串口组件,如波特率、停止位、数据长度、握手连接等。以SerialPort组件的Open()方法打开相应的串口;把从网络数据帧解析出的串口数据,用SerialPort组件的Write()方法发送出去,以控制投影机的相应动作;然后侦听正使用的串口资源,并通过SerialPort组件的异步方式Read()方法读入返回的应答信号。等待规定毫秒时间延时后,读入串口接收缓存器,如有返回的串口数据,就把返回的串口数据加上IP头,与TCP封装成网络数据帧,按接收到的客户端IP地址发送出去。如在规定时间里没有返回串口数据,表明外界嵌入式设备的串口资源有故障,就生成失败串口数据封装网络数据帧发回到原先连接的客户端。最后关闭正使用的Socket对象和串口资源,原Socket对象同时继续网络侦听等待新的客户端连接。Windows系统关闭时,Windows服务控制管理SCM就关闭网络与串口的通信程序,从而退出Windows服务系统后台运行。
2 投影机远程控制案例
2.1 “零成本”解决方案
根据上述的网络、Windows服务和串口远程控制开发流程,可以使设计不再使用网络中控硬件,但具备网络中控的网络与串口通信协议功能,以“零成本”方式[6,7]实现投影机远程控制。设计如图3所示的基于网络、Windows服务与串口通信应用。
整个项目系统中有4个信号源:计算机数据信号、便携机数据信号、影碟机视频信号、录像机视频信号,全部由投影机实现信号切换。控制投影机开机关机及信号源切换控制,由其串口与计算机的串口一连接。根据投影机不同的串口设置,客户端发送的串口数据帧设置与计算机、投影机的串口设置相一致。计算机的串口二与电动屏幕的串口连接(电动屏幕通过一个小型AVR单片机[8]控制的两个继电器来实现电动屏幕的升、降和停止,AVR单片机有一个全双工串口),同样串口数据帧设置也与电动屏幕的串口设置相一致。客户端以网络套接字Socket对象发送或接收网络数据帧,根据远程投影机或电动屏幕的串口设置发送串口号和相应串口设置,并由若干串口控制数据代码组成符合规定的串口数据帧,再按TCP/IP协议组成网络数据帧,实现基于网络、Windows服务和串口的投影机远程控制。
2.2 投影机远程冷启动开机和延时关机
在没有网络中控的情况下,如果要实现投影机的远程冷启动开机和延时关机[9,10]控制。首先要实现对投影机所连接的计算机进行远程冷启动开机(唤醒功能),并能通过计算机的串口资源控制投影机的冷启动开机和延时关机。计算机的硬件如主板、网卡等都要符合网络开机唤醒功能设置;计算机的软件采用开机后即可自动运行的Windows服务,以实现网络与串口的数据协议转换。
在主控客户端确定需要唤醒远程投影机所连接计算机时,客户端通过Socket广播发送相应含有网络唤醒数据帧的数据包给网络中的计算机。当需要唤醒的计算机控制芯片发现数据包内包含本网卡的媒体访问控制(Media Access Control,MAC)地址信息的网络唤醒数据帧后,就立刻通过网络唤醒(Wake on Lan,WoL)连接线向计算机发出开机信号,通知主板开机。在网络中,当计算机处于关机状态时,IP地址和计算机名字都不能识别机器的身份,惟一能识别其身份的只有它所带网卡的物理地址,即MAC地址。每块网卡的地址是惟一的,也就是说网卡的MAC 地址可以用来惟一地标识网络上的某台计算机。
网络唤醒数据帧的格式为连续6 B的FF和连续重复16次的MAC地址。若要唤醒电脑网卡的MAC地址00-DF-1E-32-E7-CD,则其对应的网络唤醒数据帧如图4所示。
对于实现投影机的远程关机,客户端只需被控计算机的管理员账号和密码,就能控制或者进入被控计算机的操作系统。其实现原理是视窗管理规范(Windows Management Instrumentation,WMI)[11]。通过WMI为客户端用户提供通用访问管理信息,设置客户端在其本地计算机读取/写入/执行的权限,也包括关机设置。当客户端发出远程关机命令时,被控计算机通过WMI确认客户端用户使用权限,使用上面所述的Windows服务,实现网络数据帧到串口数据帧的协议转换,并通过计算机串口向投影机发送延时关机信号。投影机延时关机完成后,根据客户端的要求,被控计算机也可随即关闭Windows服务,并自动关机,最后整个系统进入远程冷启动开机的功能。
3 结 语
利用基于网络、Windows服务和串口的数据通信技术,通过计算机作为中介,实现了对投影机远程冷启动开机和延时关机;并使用计算机网络套接字Socket和SerialPort串口控件,完成了在无网络中控硬件支持的情况下,利用本地计算机网络资源和串口资源,以及投影机本身信号源切换资源,实现对投影机的“零成本”远程控制。同时基于网络、Windows 服务和串口的数据通信有更多的用途,在只有计算机而又要实现对被控设备进行网络远程控制时,就要应用到这种技术。
参考文献
[1]邹建峰,周山峰,项细威.C#企业级开发案例精解[M].北京:人民邮电出版社,2006.
[2]颜听,李腊元.Windows的服务质量机制及其实现[J].计算机应用研究,2004(5):241,257.
[3]廖乐林.通用并发客户服务程序设计技术研究[J].科技促进发展,2007,31(6):8-10.
[4]白日东,范悦.基于Windows Sockets的通信应用程序开发[J].吉林工程技术师范学院学报,2007,23(12):60-61.
[5]华泽玺,王长林,尹忠科,等.基于主动发送/串口监听模式的实时数据采集[J].西南交通大学学报,2005,40(1):35-38.
[6]薛红.在金盘系统中实现基于.NET和Windows服务的超期借阅电子邮件催还服务[J].现代图书情报技术,2006(6):80-84.
[7]田先亮,刘文苹.Windows服务在计算机房管理中的应用[J].中国科技信息,2007(12):109-110.
[8]马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2007.
[9]彭建业,王海峰.基于VB 6.0的计算机远程关机的设计与实现[J].现代电子技术,2007,30(22):85-86.
[10]陆云龙,张会铭,雷志华.多媒体教室设备远程冷启动开机和次序延时关机的设计[J].中国现代教育装备,2007(8):51-53.
[11]周中雨.基于WMI的Windows服务器监视系统的研究与实现[J].计算机系统应用,2004(10):52-54.