巧用ActiveX控件实现Web程序中的客户端硬件操作

时间:2022-09-16 08:06:10

巧用ActiveX控件实现Web程序中的客户端硬件操作

摘要:B/S模式是应用广泛的一种软件体系结构。本文针对如何在这种架构的Web程序中运用ActiveX控件实现客户端硬件操作进行了一些探讨,给出了一个可行的解决方案。

关键字:B/S模式 Web程序 客户端硬件操作 ActiveX控件

一、引言

目前,网络版应用软件的开发模式主要有“客户/服务器”(Client/Server,简称C/S)模式和“浏览器/服务器”(Browser/Server,简称B/S)模式。

C/S模式的应用程序分为客户端和服务器端两部分,可以充分利用两端硬件优势,降低系统通信开销。但这种模式也有不足之处,软件需要分别在客户机和服务器上进行安装,增加了部署和维护的开销。

随着软件和网络的发展,浏览器的功能越来越强大,B/S模式的Web程序逐渐兴起和成熟。在这种结构下,用户界面完全可以通过浏览器实现,软件的一部分事务逻辑在前端实现,但主要事务逻辑在服务器端实现,客户通过浏览器与服务器端软件进行交互并得到结果。这种结构不仅节约了开发成本,并且部署和维护只在服务器端进行,降低了开销。然而这种模式也有不足之处,如客户端只能通过脚本做一些简单的交互而无法直接控制硬件。

笔者日前参与开发了一款基于触摸屏的自助系统,采用的就是B/S模式。由于该系统需要在自助终端上实现读写磁卡、收币和找零等功能,需要对读卡器、纸币器等多种硬件设备进行操作。为此,笔者对于如何在Web程序中实现客户端的硬件操作进行了一些研究,最终运用ActiveX控件解决了这个问题。

二、ActiveX控件

ActiveX控件是一种可重用的软件组件,可以很快地在网页和桌面应用程序中加入特殊的功能。开发控件可以使用各种编程语言,如C、C++、Visual Basic等等。ActiveX控件一旦被开发出来,就可以被当作预装配组件用于开发客户程序。笔者在开发中使用了最简单的Visual Basic作为工具。下面就简要介绍在VB中创建ActiveX控件的过程。

在“新建”工程对话框中选择“ActiveX控件”。控件界面可以根据需要进行设计,也可以没有任何界面,只提供一些公共方法。笔者在开发自助系统的读写磁卡控件时就没有界面,而是定义了进卡、退卡、读卡、写卡、卡机复位等几个方法以供调用。

在ActiveX控件中可以按如下方式定义公共方法:

Public Function 函数名( )

……(函数体)……

End Function

使用函数而不是过程的好处在于,即使没有需要返回的结果数据,操作是否成功的信息也可以返回给调用者,以便调用者在方法调用结束后进行适当的后续操作。

因为ActiveX控件将来可以嵌在网页中,在客户端下载后就在客户端执行,所以很多和硬件有关的操作都可以在这里实现。笔者就是在ActiveX控件的公共方法中调用硬件设备的DLL函数完成硬件操作的。

通过“文件”菜单中的“生成.ocx”命令可生成ocx控件文件。由于ocx控件不能独立执行,所以在集成开发环境执行时系统会自动生成临时网页。右击网页选择“查看源文件”命令,可以看到类似这样的代码:

这段代码很重要,其中的classid是我们将来使用控件时必需的信息。

三、在Web程序中使用ActiveX控件

ActiveX控件开发完成以后就可以嵌入在网页中使用了。嵌入时需指定控件名称id和对应的ocx文件,通常还需要设置宽度和高度,没有界面的可设为0。例如:

控件嵌入网页后就可以在脚本中调用控件的公共方法。承上例,如:

document.getElementById("card").WriteCard(msg);

其中card是控件名称,WriteCard(msg)是控件的方法,调用该方法便可将变量msg的值写入磁卡。

四、结束语

ActiveX控件解决了网页程序无法操作客户端硬件的问题,拓宽了Web程序的应用领域。但ActiveX控件能否正常使用还要受浏览器设置的影响。如果在浏览器端禁用了ActiveX控件,相应功能将无法实现。由于笔者参与开发的自助系统只运行在企业内部的自助终端上,所以可以事先设置好浏览器属性。对于其他的网站,可以提示用户设置浏览器属性以便允许ActiveX控件的启用。

(作者单位:江西省工贸高级技工学校)

上一篇:浅淡用Photoshop选择图像的技巧 下一篇:项目教学法在《电子CAD》课程中的应用