APP下载

基于证件扫描的导览设备租赁系统的设计实现

2012-07-13张少能曾连荪

电子设计工程 2012年13期
关键词:线程应用程序数据库

张少能,曾连荪

(上海海事大学 信息工程学院,上海 201306)

随着物联网概念的不断普及和其技术的不断发展,物联网越来越多地渗透到人们日常生活的各个方面。智慧旅游,也被称为智能旅游。就是利用云计算、物联网等新技术,通过互联网/移动互联网,借助便携的智能导览设备,主动感知旅游资源、旅游经济、旅游活动、旅游者等方面的信息,及时发布,让人们能够及时了解这些信息,及时安排和调整工作与旅游计划,从而达到对各类旅游信息的智能感知、方便利用的效果[1]。

在已经部署智慧旅游的旅游景点中,会有大量的智能导览设备可供游客使用。而作为智能导览设备的的提供方,越来越多的租赁和归还信息,以及游客,员工绩效等信息有必要生成系统进行管理,为此,笔者设计了一套基于身份证件扫描的智能导览设备的租赁管理系统。

1 系统功能需求分析

该系统采用SQL Server数据库对景点的所有租赁设备实行标准化管理,借助OCR(Optical Character Recognition,光学字符识别)设备,建立起游客与租赁设备之间的一一对应关系,方便景点工作人员及时掌握租赁设备的使用情况。该系统的主要功能功能包括:系统登录,导览机租借,导览机更换,导览机归还,导览机查看,汇总统计,客户资料,系统设置,用户管理等。

1)系统登录模块:需用户提供正确的账户和密码方可进入系统。

2)导览机租借模块:借助身份证件扫描仪建立游客与导览机之间的对应关系,做出出租记录。

3)导览机更换模块:提供故障导览机的更换服务,做出更换记录。

4)导览机归还模块:将已出租的设备回收等级,并做出归还记录。

5)导览机查看模块:提供导览机租赁情况的实时查询服务。

6)汇总统计模块:统计汇总景点工作人员选定时间段内的工作量,工作时间等信息。

7)客户资料模块:提供OCR设备所扫描出的游客资料的查询服务。

8)系统设置模块:设置OCR设备按键的功能调整,扫描图片的保存路径等。

9)用户管理模块:用户密码修改,用户添加和用户删除。

2 系统实现的关键技术

2.1 解析扫描信息

通过调用IDcard.ocx控件中的特定方法来实现扫描信息的初步获取。以二代身份证为例,接口方法为BOOLRecog NewIDCardALL(),其实现了对二代证的扫描和识别,识别内容包括身份证号码、姓名、性别、民族、出生日期、住址等。该方法的调用需要提供4个参数,透过这些参数来完成扫描结果的输出。其中Content参数为识别内容选项,仅使用最低的五个比特。例如要识别姓名和证件号号,那么通过位运算0x00000001&0x00000010得值为0x00000011,即17。在本系统中,需要将扫描出来的信息全部识别出来,则Content参数的值为 0x0000001E,即 31。

2.2ADO.NET数据库技术

ADO.NET 的名称起源于 ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据.之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在.NET编程环境中优先使用的数据访问接口[2]。

它提供了平台互用性和可伸缩的数据访问。ADO.NET增强了对非连接编程模式的支持,并支持RICH XML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO.NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其他平台上的任何应用程序。

2) 采用综合评分法得出的土豆播种机的播种架试验装置的最优组合进行二次试验,选取的主要参数为播种机架倾角α=10°、皮带转速ω=0.27m/s、种勺空间尺寸大小55 mm×17.5mm。试验结果表明,优选后的排种器播种粒距合格率可达91.0%,重播率9%,漏播率2.0%,可以为土豆播种机播种架的改进提供理论支持。

ADO.NET的最重要概念之一是DataSet。DataSet是不依赖于数据库的独立数据集合。所谓独立,就是:即使断开数据链路,或者关闭数据库,DataSet依然是可用的[3]。

有了DataSet,那么,ADO.NET访问数据库的步骤就相应地改变了:

1)创建一个数据库链路;

2)请求一个记录集合;

3)把记录集合暂存到DataSet;

4)如果需要,返回第 2步;(DataSet可以容纳多个数据集合);

5)关闭数据库链路;

6)在DataSet上作所需要的操作。

本文采用了sql server express版本的数据库,使用ADO.NET技术测试数据库连接的部分代码如下[4]:

2.3 多线程技术

一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的分配等问题更加易于解决。

在智能导览设备的租赁环节,需要同时进行两项工作:1)即时响应现场工作人员关于扫描导览设备的条码;2)即时响应身份扫描设备的按键开始扫描游客证件。为此,需要借助vb.net的多线程技术。由于vb.net是基于.net框架的,而.net框架的重要组成部分CLR(Common Language Runtime,通用语言运行时)内置支持多线程应用,可以通过系统的System.Threading类直接建立多线程应用程序[5]。

多线程应用程序把程序分解为独立的事务,它们能通过下面的途径充分提高性能:

1)多线程技术可以使程序更容易响应,因为在其他工作继续时用户界面可以保持激活。

2)当前不忙的事务可以把处理器时间让给其他事务。

3)花费大量处理时间的事务可以周期性的把时间让给其他的事务。

4)事务可以在任何时候停止。

5)可通过把单独事务的优先级调高或调低来优化性能。

创建和维护线程的基类是System.Threading.Thread类,它能够创建并控制线程,设置其优先级并获取其状态。在创建线程前必须引用threading基类:Imports System.Threading。然后可创建一个新的线程类实例,并使用AddressOf语句为要运行的线程指定任务。接着可以利用 Start、Resume、Suspend、Sleep、Stop、Abort和 Join 等方法操纵线程,还可以通过如 IsAlive、IsBackground、Priority、ApartmentState和 ThreadState等属性查询和设置线程状态。如使用Thread类的Sleep方法可以阻滞当前线程,使用Suspend方法可以挂起线程,使用Resume可以重新启动挂起的线程,使用Abort方法可以停止一个线程,使用Join方法可以使当前线程等待其他线程运行结束[6]。

建立并启动线程的部分代码如下:

2.4 智能导览设备的激活认证

为了防止现场工作人员私自将导览设备借出而不在系统记录以谋取私利的情况发生,有必要加入导览设备的激活认证过程。具体实现过程如下:导览机开机后并不直接进入导览程序,而是进入特殊的激活认证环节,监听等待着来自管理机的激活信号;管理机也只有在完成机器条码扫描及游客身份证件扫描后才会发出激活信号,待导览机与管理机完成一次握手协议后导览机便进入正常的导览程序。而此时,管理机已经将机器的激活信息记录下来,这样就可以有效避免前文提到的问题发生。

3 系统的实现

完成各个功能模块的设计后,就可以将整体融合建立可执行文件,形成一个独立的可执行文件,再利用安装向导或者其他打包工具把系统打包成一个安装文件。最终实现如图1所示的应用界面[7]。

图1 用户界面Fig.1 User interface

4 结束语

本文使用数据库管理系统实现了对智能导览设备的管理,目前已经应用到安徽省国家AAAA级某风景区。在使用过程中也发现了一些不足,例如单机版不能实现局域网内的多台机器共享同一数据库,数据的处理量有限等问题,还需要再进一步地升级和完善。

[1]徐迪威,蔡建新.物联网及其应用剖析[J].计算机工程与应用,2011,47(15):229-231.

XU Di-wei,CAI Jian-xin.Analysis on internet of things and its application[J].Computer Engineering and Applications,2011,47(15):229-231.

[2]王宝祥.基于ADO.NET的数据库访问技术研究[J].计算机应用与软件,2004(2):130-132.

WANG Bao-xiang.Study of datebase access technology using ADO.NET method[J].Computer Appiications and software,2004(2):130-132.

[3]Willis T,Newsome B.Visual Basic 2005入门经典[M].4版.北京:清华大学出版社,2006.

[4]李维杰,孙乾君.SQL Server2005数据库原理与应用简明教程[M].北京:清华大学出版社,2007.

[5]张跃廷.C#数据库系统开发案例精选[M].北京:人民邮电出版社,2007.

[6]张焰林.基于VB.NET的多线程技术应用[J].计算机系统应用,2009,18(2):87-89.

ZHANG Yan-lin.Implementation of multithread technique based on VB.NET [J].Computer system&application,2009,18(2):87-89.

[7]徐振明.Visual Basic.NET程序设计与应用[M].北京:中国水利水电出版社,2007.

猜你喜欢

线程应用程序数据库
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
数据库
浅谈linux多线程协作
数据库
数据库
数据库
三星电子将开设应用程序下载商店