一种基于打印驱动层的对接技术的制作方法

文档序号:11729107阅读:245来源:国知局
一种基于打印驱动层的对接技术的制作方法与工艺

本发明涉及不同系统之间对接方法,具体是一种基于打印驱动层的对接技术。



背景技术:

随着21世纪互联网的高速发展,人们的生产、生活方式被彻底颠覆了。特别是在移动互联网领域,随着手机3g和4g技术的不断发展,手机网民数量出现爆炸性增长,因此带动了移动的支付业务连年保存数倍的超高位增长,手机支付已成为现代人们不可或缺的支付方式。

面对着移动支付这块大蛋糕,各大商家纷纷想趁支付行业变革之际,早一步进入移动支付市场,抢占市场份额。但是却尴尬的发现,由于互联网革命发展的太快了,许多商家还在使用着早期的功能简单、技术老旧、单机版的电脑系统软件,同时软件提供商基于更新换代利益驱使,往往不再对老系统提供功能升级,而是推荐客户从新购买新软件,而另一方面商户购买新软件往往需要投入大量财力、物力、人力和时间来完成软件的调试、数据的迁移、人员培训等,这是商户所不愿看见的。而目前解决此类问题只能通过系统对接方式。目前实现系统对接主要有两种方法:一种是软件提供商双方进行协商,软件一方通过调用对接另一方软件接口完成系统对接,但是不同系统之间由于开发语言的不同、技术架构和应用场景的不同以及竞争关系等原因,造成对接推进困难、周期长、成本高、操作难度大。另一种是通过采用一些硬件辅助设备进行系统对接,如国内“多啦宝”公司开发了一款哆啦开店宝硬件,商家收银软件可以通过这个哆啦开店宝将消费金额生成一个二维码让客户进行扫描支付,从而让收银软件具备移动支付功能,但是这样成本高、依赖硬件支撑、局限性大,而且这哆啦开店宝只聚焦于移动支付,功能简单、局限性大。因此。这两种对接都有着需要投入大量财力、物力、人力和时间等缺点,这严重挫伤了商户进入移动支付市场的积极性。



技术实现要素:

本发明的目的在于提供一种基于打印驱动层的对接技术,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:

一种基于打印驱动层的对接技术,可以在电脑生成一个定制的虚拟打印机驱动,通过这个驱动可以截取传入的打印机驱动数据,并将数据流封装成自定义的格式发送给应用程序,应用程序则通过对文件进行解析,并将所提取的数据发送给对接系统或者服务端,再将服务返回数据生成二维码,最后再将原始打印数据和追加在后的二维码一起打印机出来,客户通过扫码二维码就可以实现不同系统之间的数据交互。

作为本发明进一步的方案:所述制的虚拟打印机驱动基于微软打印机体系,在用户模式下利用com接口和hook技术重写index_drvstartdoc、index_drvenddoc等index_drvxxx系列打印机驱动钩子函数,并定义、选择名为sz1card1的localport型端口,加上定制对应的ini、inf、gpd文件,安装名为sz1card1print打印机驱动,以此截取包含页面布局和作业控制指令信息的数据流。

作为本发明进一步的方案:所述定制的虚拟打印机驱动包含的打印机处理器,通过对打印机处理器接口函数printdocumentonprintprocessor重写,完成对打印数据流的截取、封装、保存,然后通知应用程序开始进行数据解析。

作为本发明进一步的方案:所述应用程序,在接到驱动层消息通知后,将接受到的打印机数据按照约定的规则将其数据解析出来,并且根据提取规则将所需要的数据提取出来。

作为本发明进一步的方案:所述对接系统,应用程序将提取到数据通过网络请求发送到对接系统或服务器,对接系统或服务器在接受到数据后经过处理再根据需要返回应用程序。

作为本发明进一步的方案:所述打印,在接受到对接系统返回的数据后,将返回来的数据生成二维码,应用程序再将原始打印数据原始打印出来并在后面追加打印二维码,用户通过扫码此二位即可享受移动支付,从而实现不同系统的对接。

与现有技术相比,本发明的有益效果是:

本发明采用基于打印机驱动技术实现不同系统对接的方法,不但不需要增加额外的硬件设备,而且不用改变原有的系统软件,无需培训工作人员,就可以实现不同系统的对接,同时可以新增移动支付和会员营销等营销拓展功能。

附图说明

图1为打印对接交互示意图;图2为打印数据流封装框架。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和以餐饮行业系统对接具体实施方式为例对本专利的技术方案作进一步详细地说明。

a)驱动层。图1为本发明打印对接交互示意图,在微软windows2000以后的打印体系结构都是由一个打印假脱机程序(spooler)和一系列的打印驱动组成,当应用程序调用gdi函数执行打印时,gdi首先调用与此设备上下文相对应的打印机发出一个打印请求,然后接着gdi会调用相应的打印机驱动程序来处理打印请求,而在打印机驱动里面的打印假脱机服务将会在接受到打印机处理请求任务后会在系统磁盘上以一种特殊的增强图元格式文件将打印原始数据流保存成假托机文件,当假托机文件创建完成后,就会被发送到后台的printspooler打印出来,由于根据微软的打印体系结构其假脱系统和其他打印组件都是可以替换的,所以通过开发定制虚拟打印机驱动,完成对打印数据的拦截。因此本发明利用微软ddk,在用户模式下利用com接口和hook技术重写index_drvstartdoc、index_drvenddoc等index_drvxxx系列打印机驱动钩子函数,并通过定制对应的ini、inf、gpd文件,创建和使用名为sz1card1的localport型端口以及通过自定义printprocessor,其中由于printprocessor中printdocumentonprintprocessor函数是处理打印任务,我们在其中可以获取到打印数据、打印命令和相关设置属性,按照如图2打印数据流封装框架进行数据封装,当数据封装、保存后使用事件对象event通知本发明应用服务进行解析。通过上面步骤,当餐饮行业收银系统打印小票时,小票数据会被拦截保存因此小票并没有真正打印出来。

b)应用服务层。本发明在接受到驱动层的事件对象通知后,首先会通过采用异步机制一方面将驱动层转化后可以被解析的数据流文件进行数据解析,程序先在数据文件末尾取出evmode数据部分相对于整个文件末尾的偏移量,通过偏移量读取到devmode数据完成对真实打印机的打印页数、纸张大小、纸张方向等初始化设置,然后当定位到0x50的文件位置,读取2个dword数据后,再次使用gdi+和一系列emr_xxx函数将文件解析出来,由于应用程序是通过gdi函数进行打印操作的并且这些绘图记录实际是存在metafile文件中,所以通过然后通过利用enumeratemetafile的回调功能,可以在回调的函数通过switch拦截已知的120多种绘图记录类型,从而完成打印数据流的提取。另一方面程序在完成在将所需的数据提取后,程序根据配置文件里面的对接程序地址,采用跨平台的网络协议libcurl,可以通过多种通信方式如http、https等将数据发送到对接系统,对接系统在经过数据处理后,可以向程序返回数据,程序可以通过设置curlopt_writefunction可以在回调函数里接受到返回的值,并且可以根据curl_easy_perform函数error状态码对通信进行容错处理,提高程序健壮性。然后将返回的值,利用setpixel绘制完成二维码绘制,并根据解析打印原始数据流得到的末尾坐标将二维码插入,再一起打印出来。通过上面步骤,当收银系统点击打印小票的时候,小票后面追加多一个二维码,而客户可以通过扫描这个二维码完成即可完成移动支付、关注公众号、赠送积分优惠卷等功能,商家也在无需对收银系统进行改造和培训人员完成移动支付和营销功能。

本发明可以实现不同管理系统的对接,解决传统管理系统对接过程中需要修改管理软件、提供接口、增加预算和软件供应商协商等问题。同时不仅仅是可以简单、方便的实现了不同系统的对接,还可以让传统收银软件新增移动支付和会员营销等现代营销功能而无需原有软件做任何改变,因而具有很强的竞争力。

上面对本专利的较佳实施方式作了详细说明,但是本专利并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本专利宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1