基于NT服务的机场国际AngelCUE离港系统的外设服务管理设计

2014-02-27 05:28杭州萧山国际机场有限公司金红阳
智能建筑与智慧城市 2014年3期
关键词:离港外设注册表

文│ 杭州萧山国际机场有限公司 赵 杰 金红阳

1 引言

在机场国际AngelCUE离港系统中,应用系统的服务器端软件模块必须能够接收来自外部服务设备,如登机牌打印机(ATB)、行李牌打印机(BTP)、护照阅读器(OCR)、登机口阅读器(BGR)、网关(GWY)等的服务请求,并在对服务请求进行分析后,执行相应的操作。每台离港工作站和这些外设之间的通信管理是利用PC机上开发的服务程序实现。另一方面,由于外设请求随机,需要监测管理AngelCUE平台上外部设备的实时状态信息,确保离港系统正常运行。

如果将该服务管理模块设计为NT服务,即使应用软件未启动,只要系统开机, 该模块也可完成服务器端软件的功能,实现系统的不间断运行[2,3]。所谓NT服务,实际上就是一个可以在系统启动时自动在一定身份下启动的伴随系统长时间存在的进程。NT服务归纳起来有以下几个特征:

(1)可以自启动,不需要交互启动,这对于服务器来说是一个重要的特征。

(2)NT服务没有用户界面,基本上类似一个DOS 程序,因为NT服务必须长时间运行,所以不像普通Win32进程一样有自主界面。

(3)NT服务通过SCM[3]接口进行管理,安装、启动、停止、撤除等都需要SCM的接口功能来进行。

(4)相关进程都以一定的身份运行,以方便进行服务器资源的存取。

(5)系统自动以线程方式运行,一般情况下不会占用系统资源,区别于普通的进程。

2 基于VB实现NT服务的方法

2.1 基于VB的OCX服务控件

在VB开发环境中,利用OCX服务控件来实现本案例的服务是一条捷径[4]。首先将从Web网站下载的ntsvc.ocx文件拷贝到winntsystem32下,利用regsvr32 ntsvc.ocx命令进行组件注册。注册成功后,VB可以从工程/部件引出的对话框列控件表中看到名为“Microsoft NT Service Control”多项。此控件拥有创建一个服务的基本功能,如果要编写一个NT服务,可以将其拖进窗体,然后设定属性,调用其与系统、注册表、SCM的交互功能就可以完成。

Ntsvc控件的属性和用法:

Account String,账号属性,即本NT服务在哪一个NT域账号下运行,缺省是Local System账号。

Controls Accepted Long,此服务接受哪些SCM控制,Controls Accepted为以下值:

“0”表示允许Start以及Stop。

“2”表示允许Pause 以及Continue。

“ 4”表示允许 shutdown。

其他值,用户自定义的某些事件。

利用Controls Accepted属性,可自行决定NT服务进程某个时刻是否允许SCM停止、暂停、启动等操作。

Dependencies String,如果服务依赖于某个或某些服务才能正常运行,则必须在注册服务时指定依赖的服务列表。Dependencies按照依赖顺序以chr(0)来分隔多个服务,最后必须以两个chr(0)结束。

Display Name String,显示名,即NT服务将以何种名字显示给用户。

Interactive Boolean,是否允许同桌面用户有交互的部分。

Load Order Group String,同Dependencies相关,决定在本服务启动之前,哪些服务必须启动,格式以chr(0)分割,连续的两个以chr(0)结尾。

Password String,服务启动的口令,如果使用缺省的账号,就没有必要设定服务启动的密码。

Service Name String,服务名,如果使用net.exe来控制服务,则net.exe程序指定的那一个服务参数就是此属性中的字符串。

Start Mode,枚举型,具体为:

vc Start Automatic 2服务可以自己启动。

svc Start Manual 3 服务手动启动。

svc Start Disabled 4 服务不能自启动。

2.2 实现服务

要将一个VB程序作为一个NT的服务,必须先向操作系统做一些“申请”。相应地,单VB是无法独立完成这些申请工作的,所以要借助ntsvc.ocx提供的属性和方法,向操作系统“申请”并传递相关信息,其中传递的相关信息如下所示。

Install:

将当前VB程序安装成NT服务,在此之前,必须设置Display Name,Service Name,Controls Accepted以及Start、Mode等属性,以及设置 Account、Password、Load Order Group、Dependencies等。这些信息设置的正确与否,决定服务程序能否正常启动运行。

Uninstall:

将当前ntsvc.ocx指定的服务从系统注册表中删除。NT服务取决于系统服务注册表的设定。

上述Install和Uninstall传递参数对应服务控件以下的方法:

(1)Start Service,将指定的已注册服务启动。

(2)Stop Service,若服务正在运行,则停止该服务。

(3)Log Event,记录服务事件。服务运行中,可能会发生错误或意料不到的事件,这些可以通过此方法记录下来,供用户通过“事件查看器”查看相关的信息,以最优化服务。此方法有三个参数event、id、message。

Event指发生的事件类型,可以设为以下值:

svc Event Error 1 错误事件。

svc Event Warning 2 警告事件。

svc Event Information 4 提供参考信息。

svc Event Audit Success 8 审计成功。

svc Event Audit Failure 10 审计失败。

除以上方法,用户还需要读写注册表,此控件还提供注册表的访问方法:

Delete Setting(section[, key])

Get All Settings(section)

Get Setting(section, key[, default])

Save Setting(section, key, setting)

3 应用实例

了解以上的内容后,能够利用VB来设计一个离港系统AngelCUE平台上的外设服务,笔者通过以下案例来说明如何在VB中编写服务程序[5,6]。本例中服务的名称为vOCR,在SCM中显示为vOCR,此vOCR服务主要完成Angel CUE前端应用和OCR护照阅读器的数据通信服务,其余的外设服务以此类推。编写vOCR服务的主流程如图1所示。

图1 vOCR服务安装和撤除主流程图

3.1 创建工程

所有的VB控件必须有一个Form作为载体,所以,首先需创建一个标准工程,选择菜单工程部件,然后选取Microsoft NT Service Control,这时会在工具箱中出现NT服务控件,再拖一个MSComm1串口通信控件到窗口Form上,然后保存,创建过程完成。

3.2 设定NT服务控件属性

选中Form1上的NTService控件,在属性栏中设定Display Name: vOCR,Service Name:vOCR,Start Mode:2(自动启动服务),其他均为缺省。因为要求串口控件MSComm1收到每个数据后触发接收事件,所以在装载时要初始化设定MSComm1的触发条件。

3.3 编写其余代码,实现服务逻辑以及服务安装、撤除

因为服务程序实际上是一个exe文件,并且需要自己解决安装、撤除问题,因此需要在此程序中加入利用NT服务控件来实现安装、撤除问题。VB程序启动时正是Form装载的时候,所以需要在窗体的Load事件中加入一些代码:

3.4 添加控制服务的代码

尽管服务的触发等特性是依赖串口通信控件MSComm来实现的,但是服务的控制却是由SCM接口向每一个服务发出的,表现在VB服务程序中则为NT服务控件捕获到相关的事件发生,根据事件中具体的情况响应,决定能不能、如何控制服务逻辑。具体代码如下:

3.5 编写服务逻辑

具体就是在串口通信控件MSComm事件中,根据约定写一些服务细节。本例中就是离港系统PC工作站的串口和连接此PC工作站的OCR外部设备通信,但是考虑到对SCM命令的响应,所以需要编码为:

3.6 编译安装、测试

编译程序得到的服务程序的文件名为vOCR.exe,通过以下命令进行安装:vOCR.exe-install,如果需要撤除已经安装的服务,则为vOCR.exe-uninstall。安装成功后,如图2所示。打开控制面板的“服务”,看到其中的NT服务列表中包含已经加入的服务,显示为“vOCR”,如图3所示。可以类似于启动操作系统中其他任何服务,启动、停止、暂停此vOCR服务。当离港系统的PC工作站重新启动后,该服务也自动启动。

图2 vOCR服务安装成功界面

图3 vOCR服务自动加入本地服务

4 结束语

以上通过VB开发工具和NT服务控件编写简单的vOCR服务例子,在国际离港系统AngelCUE的平台中实现了一项外设的多个服务管理功能。当然也可以扩充到其他vATB、vBTP、vBGR等离港系统外设服务。同时,在这些服务中还可以加入外部设备的运行状态检测等逻辑应用,达到离港系统的AngelCUE平台对所有外设进行实时监测的目的。

【1】 SITA. SITA Training CP032(SITAPM)[EB/CD]. http: //www.sita.aero, 2007.

【2】 李卫东,彭淑敏,单新建,彭淑敏,单新建.卫星准实时数据处理后台管理服务系统设计[J].微计算机信息,2010,V.26(8-3):14-16.

【3】 王冰玉,宋伟.基于NT服务的D ICOM服务器端软件的设计[J].医学信息,2004,V.17(4):194-195.

【4】 黄志峰.Visual Basic高级编程实例精解[M].北京:国防工业出版社,2001.

【5】 谭浩强,薛淑斌,袁玫.Visual BASIC程序设计[M].北京:清华大学出版社,2001.

【6】 Jeffrey Richter,Christophe Nasarre. Windows via C/C++[M]. 北京 :清华大学出版社,2009.

猜你喜欢
离港外设注册表
长三角机场群运行相关性分析
更上一层楼 用好注册表编辑器
旺角暴乱嫌犯被禁止离港
注册表的便捷用法
外设天地行情
注册表编辑器也玩“失忆”
外设天地行情
外设天地行情
外设天地行情
学习器揭开注册表面纱