翼云居前置服务在智慧酒店中的应用_第1页
翼云居前置服务在智慧酒店中的应用_第2页
翼云居前置服务在智慧酒店中的应用_第3页
翼云居前置服务在智慧酒店中的应用_第4页
翼云居前置服务在智慧酒店中的应用_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

翼云居前置服务在智慧酒店中的应用

0使得用户方便切换电信宽带和etv业务覆盖了许多酒店。为了更好地为酒店服务,提高客户对电信业务的合作能力,天益云推出了一种sa产品(云居智能酒店管理系统,以下简称云居系统)。目前很多酒店使用单独的门锁系统,公安登记系统,餐饮系统,充值卡系统,或者简易单机版的酒店管理系统。用户办理不同业务需要切换到不同的系统,使用极不便。而翼云居系统将这些功能单一的系统作为子模块集成到一个系统,为用户提供统一服务,方便用户操作,同时新增了OTA直连、包天影视房、翼支付聚合支付等新业务。翼云居是基于互联网上的云服务,酒店客户端采用Web浏览器,浏览器页面无法直接使用客户端本地资源。如:门锁制卡器、身份证读卡器、充值卡读写器和打印机。通常的方法是采用ActiveX控件,但只能用在IE浏览器,兼容性较差,虽然浏览器也提供了打印功能,但是无法控制打印参数,如:行间距、页边距、字体等,Javascript代码的浏览器兼容性也差。综合考虑,翼云居采用在酒店客户端安装翼云居前置服务解决设备接入问题。1前置界面设计酒店客户端使用的全部是WINDOWS系统,有早期的32位XP系统,也有当前流行的64位WIN10系统,考虑操作系统兼容性、部署方便性,前置服务采用32位C++/MFC库开发前置服务分为三个主要部分:Http接口服务、主程序和设备服务模块,设备服务涵盖门卡操作服务、身份证阅读服务、充值卡操作服务和打印服务等,如图1所示。前置实现Http接口服务,翼云居Web客户端通过调用前置服务的Http接口使用酒店客户端硬件资源。翼云居Web客户端调用前置服务的URL格式为:http://localhost:port/服务类型编码+操作参数(Json格式)。Http接口提供了Get、Post两种方法,Post用于参数较长的调用。返回结果的基本数据有:错误代码和结果内容,返回数据UTF-8编码转换后发送到浏览器页面服务类型采用4位数字编码,定义前置服务各种接口功能,如“0000”标识读取身份证信息、“9999”标识读取客户端机器码信息、“0200”标识充值卡读写服务、“1002”标识必达门锁免密型制卡服务等。前置主程序基于MFC对话框设计,程序启动时读取前置配置文件,获取门锁接口信息、身份证读卡器接口信息、菜单配置信息、充值卡接口信息和Http服务端口等。创建Http服务线程,根据前置配置的设备接口信息加载设备接口库、创建设备接口服务对象2预安装服务设计2.1内部组织设计主程序采用MFC基于对话框的托盘程序,启动后显示主对话框,点击关闭自动隐藏到任务栏,右击任务栏图标弹出菜单,点击“退出”并确认后退出前置服务程序,防止用户误操作关闭前置服务,主程序生命周期如图2。(1)程序启动后读取前置配置文件,配置数据有:Http服务端口,充值卡读写器配置参数(设备类型、端口、起始读写扇区),身份证阅读器配置参数(设备类型、端口),门锁读写器配置参数(门锁类型、门锁接口配置文件名、加密数据),菜单配置参数。门锁配置参数中涉及到酒店密码、接口授权码等敏感数据必须进行加密。(2)判断Http服务端口是否可用,若不可用,前置服务启动报错后退出。(3)前置数据库采用sqlite内存数据库,数据库表有:房间门锁信息、房卡操作日志、打印模板、打印任务,数据库初始化主要是清空房间门锁信息、房卡操作日志和打印任务,数据库预置了打印模板。(4)准备设备接口文件,前置服务涉及的设备类型数以百计,不同类型的设备接口文件名会重复,因此将不同类型的设备接口文件放在相应的文件目录下。前置服务配置文件中配置当前使用的设备类型,前置服务启动时,通过设备类型参数,将对应设备类型目录下的接口文件拷贝到主程序运行目录。(5)创建设备接口服务对象,对于门锁制卡器涉及不同的接口类型各不相同,因此我们设计了门锁虚基类,类中定义纯虚函数作为门卡操作的基本方法,每种门锁接口服务对象继承该虚基类,采用该门锁的接口实现父类中定义的虚函数。定义门锁基类对象全局指针变量,主程序启动时根据前置配置的门锁类型创建对应的接口服务类对象,并将对象地址赋给门锁基类全局对象指针变量。(6)启动Http服务线程,并在前置配置的Http端口上进行侦听来自翼云居Web客户端的设备连接请求。(7)创建并显示主对话框,用以测试身份证阅读器。(8)主对话框退出时,主程序释放相关资源,如:关闭Http服务线程、卸载接口库等,最后退出前置服务主程序。2.2新型安全建筑接口配置前置服务窗口基于MFC对话框设计,功能界面有:主界面(测试身份证阅读)、门锁配置、预制卡、打印模板配置和打印参数配置。主界面生命周期即为前置服务生命周期,点击对话框的“关闭”隐藏界面,双击托盘图标显示界面。其他界面通过右击托盘图标弹出的菜单即时创建模态对话框,点击对话框的“退出”或“关闭”即销毁对话框。托盘上弹出菜单项除“退出”,其他菜单项通过前置配置文件设置是否可选主界面通过点击“读身份证”按钮,调用身份证阅读器接口服务对象的基本方法,完成设备连接、寻卡、读卡、设备断开,并在界面上显示操作结果:身份证基本信息(身份证号、姓名、性别、出生日期、地址、签发机关、有效期起始和有效期终止)和照片。门锁配置界面实现对门锁接口配置文件和前置数据库的读写。根据前置服务配置中的门锁接口文件名打开门锁接口配置文件,配置门锁接口参数,如:串口号、酒店密码、接口授权码等,点击“保存”将数据写到配置文件并加密敏感数据,并断开制卡器,重新使用新的接口参数初始化门锁接口。房间门锁信息配置包括:房号、门锁号、房间名、楼号、层号、区域号,采用全覆盖保存,批量保存前先清空数据库房间门锁信息。预制卡界面实现在客人入住前根据客人预订入住时间进行制卡,主要服务于团队客人,当入住人数较多时,方便快捷完成入住服务。打印模板配置界面用于系统管理员创建、修改和删除打印模板,并测试打印效果。在该窗口内对打印模板参数的配置实现打印模板的管理,打印模板参数有:模板名称、打印机名称、打印纸张定义、打印字体定义、打印分辨率、打印方向、打印边距、行间距、列间距、打印样式标签定义。输入打印测试样本数据测试打印效果。打印参数配置界面用于用户对打印模板参数进行调整,优化打印效果,可调整的打印模板参数有:打印页边距、行间距、列间距、字体大小、字体样式,并提供打印测试2.3事件状态下接口服务设计该接口服务接收来自同一终端上的翼云居Web客户端的请求,因此接口服务设计为单个Web客户端连接,并未设计成多客户端连接。该接口服务为单独的线程,在前置服务主程序启动时创建,在主界面退出时,关闭服务Socket并恢复事件状态,触发线程退出。接口服务设计流程图(如图3)。(1)线程启动时创建事件,初始状态为未触发,线程等待该事件变为触发状态后,结束服务线程。(2)创建Http接口服务Socket,并绑定到服务端口,在该端口上侦听来自翼云居Web客户端连接请求。当Socket被关闭,接收客户端请求异常,结束服务线程。(3)接收该连接上的请求数据,采用HTTP协议格式解析请求数据,URL解码后解析URL参数得到请求的服务类型和请求参数。(4)根据解析出的服务类型调用相应的设备接口服务对象的方法,并传递请求参数,操作酒店终端上的硬件设备,得到操作结果,使用HTTP协议格式封装后返回翼云居Web客户端。(5)断开客户端Socket连接,继续侦听。3设计设备接口服务对象3.1助网络锁调soap接入翼云居系统的酒店设备主要有:门锁、身份证、充值卡和打印机。除门锁设备外,公安部对身份证阅读器制定了标准接口,基于打印机驱动使用MFC打印API,充值卡设备接口基本一致,而门锁设备种类繁多,接口方式众多,因此设计了门锁虚基类,定义了基本的纯虚函数,各种门锁接口服务类均继承该门锁虚基类,实现基类中的纯虚函数。定义的纯虚函数主要有:读取房间门锁信息、门锁接口初始化、释放接口资源、离线制卡、在线制卡、赠卡、读卡、清卡。(1)接口初始化,读取门锁接口配置文件相关参数。接口方式若基于DLL,导入门锁接口动态库文件,获取接口函数地址;若基于COM,注册COM组件,创建组件实例;若基于SOCKET,创建SOCKET客户端;若基于SOAP,启动网络锁回调SOAP服务,向网络锁平台注册应答回调地址;若基于HTTP,登录门锁网络平台获取令牌TOKEN,作为调用其他接口的参数,放在COOKIE或者URL参数中。(2)离线制卡,是指通过门锁制卡器给房卡写数据,制卡的数据包括:门锁号、区域号、楼号、楼层号、公共门号、卡片序号、是否允许开反锁、入住时间和预离时间。其中房号、是否允许开反锁和预离时间由翼云居Web客户端请求参数得到,再通过房号查询门锁信息表得到门锁号、区域号、楼号、楼层号、公共门号,程序计数器计算得出卡片序号。制卡的入住时间使用终端机器时间,刷卡之后将顶替掉之前该房间所有房卡,制卡成功后将房号、门锁号、入住时间、预离时间和卡ID保存到前置数据库操作日志表。(3)在线制卡,房间的门锁是联网的,制卡数据不是写入房卡,而是读取房卡ID,连同门锁号、入住时间、预离时间等数据通过网络发送到对应房间的门锁上。客人开门刷卡时读取房卡ID,对比门锁上写入的房卡ID、入住时间、预离时间决定能否开门。制卡成功同样保存操作日志。密码锁也是一种在线制卡,虽然脱离了房卡和制卡器,这里前置服务随机生成密码,连同入住时间、预离时间通过门锁网络平台发送到对应房间门锁。(4)赠卡,是指给同一房间发多张门卡。在做赠卡(副卡)时,入住时间必须和主卡相同,该时间在前置数据库中通过房号查询最近的制卡日志表得到。(5)读卡,读出房卡对应的房号、入住和预离时间,提供两种方式,一种是使用门锁接口读出房卡里面的制卡数据(锁号、入住时间和预离时间),再由锁号反查出房号;另一种是使用门锁接口查出卡ID,再由卡ID查询前置数据库制卡日志,得到制卡数据。(6)清卡,离线制卡方式提供两种方式清卡,一种是使用门锁接口的清卡函数,还有就是使用门锁接口的写卡函数写入脏数据(比如过期的时间);对于在线制卡方式,通过门锁网络平台接口删除门锁上的制卡数据完成清卡。3.2前置打印算法翼云居打印功能有两种实现方式,一种是利用浏览器自带打印功能,另一种是使用前置服务提供的打印接口。浏览器打印存在的缺陷是明显的:由于前端打印功能是通过Javascript脚本实现的,而Javascript存在浏览器兼容性问题,所以打印功能也存在浏览器兼容性问题;打印格式就是页面显示格式,所以定制一个打印格式需要编写一套Javascript脚本,相当不方便;打印字体大小、样式,页面的打印边距、行间距无法灵活修改调整。使用前置打印服务不存在浏览器兼容性问题,前置打印采用先进的基于打印样式模板的方法,通过配置打印模板快速定制打印格式,通过修改打印模板中的打印参数灵活修改字体、页面边距和行间距,只要给打印数据标注上打印样式模板中的样式标签,发送给前置打印接口即可完成打印功能。这里的表格型数据是指需要打印的数据可分为若干打印行,每一行又可以分为若干打印项。打印样式模板提供两种类型的样式标签:行样式标签和合并项标签。行样式标签定义的属性有:行高(非必选项,默认为0)、行边框(包括线条样式),以及该行每个打印项属性,包括:打印项类型(文本、线条、页码、二维码等)、打印项边框、字体大小、字体样式、对齐方式;合并项标签定义需要合并的打印项,标签属性与打印项属性相同。打印算法根据定义的模板基本参数(页面大小、页面边距和行间距)和标注上打印样式标签的打印数据源,计算出所有打印项(包括合并项)的打印坐标和所有打印线段的位置坐标,并实现自动分页和页首页尾,调用MFC打印API进行打印。打印服务提供的接口有:获取终端上所有打印机列表、获取打印机属性、下载打印模板、打印预览和打印。打印预览输出为JPG图片,方便在Web页面上展示。Web客户端调用打印接口服务进行数据打印的步骤如下:(1)利用模板打印样式标签将打印测试数据标签化,并标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论