将POS终端虚拟为计算机打印机的方法和装置、POS终端转让专利

申请号 : CN201710278727.X

文献号 : CN107256134B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李坚强

申请人 : 百富计算机技术(深圳)有限公司

摘要 :

本发明涉及一种将POS终端虚拟为计算机打印机的方法和装置、POS终端。所述方法包括通过第一打印驱动接收打印指令,并根据所述打印指令获取第一待打印数据,所述第一打印驱动用于提供打印机类型为POS终端打印机;通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换为符合POS终端的第二待打印数据;将所述第二待打印数据发送给POS终端的打印机,以使所述POS终端的打印机对所述第二待打印数据进行打印。提高了POS打印机的利用率。

权利要求 :

1.一种将POS终端虚拟为计算机打印机的方法,其特征在于,应用于包括计算机和POS终端的场景中,包括以下步骤:通过第一打印驱动接收打印指令,并根据所述打印指令获取第一待打印数据,所述第一打印驱动用于提供打印机类型为POS终端打印机,所述第一待打印数据可为word格式数据、PDF格式数据、图片格式数据、TXT格式数据中的至少一种;

通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换为符合POS终端的第二待打印数据;

将所述第二待打印数据发送给POS终端的打印机,以使所述POS终端的打印机对所述第二待打印数据进行打印。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

将获取的第一待打印数据存储在指定文件目录路径下;

通过所述第一打印驱动调用打印伺服程序从所述指定文件目录路径中读取所述第一待打印数据,并将所述第一待打印数据转换为符合POS终端的第二待打印数据。

3.根据权利要求1所述的方法,其特征在于,所述通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换为符合POS终端的第二待打印数据包括:通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换单色位图数据,以及将所述单色位图数据转换为点阵数组数据,所述点阵数组数据为所述符合POS终端的第二待打印数据。

4.根据权利要求1所述的方法,其特征在于,所述将所述第二待打印数据发送给POS终端的打印机的步骤包括:将所述第二待打印数据发送给POS终端的打印代理程序,并通过所述打印代理程序将所述第二待打印数据传输给所述POS终端的打印机。

5.一种将POS终端虚拟为计算机打印机的方法,其特征在于,应用于包括计算机和POS终端的场景中,包括:通过POS终端的打印代理程序接收打印伺服程序发送的符合POS终端的第二待打印数据,并将所述第二待打印数据发送给所述POS终端的打印机;其中,所述第二待打印数据为所述打印伺服程序将第一打印驱动获取的第一待打印数据转换得到的,所述第一待打印数据可为word格式数据、PDF格式数据、图片格式数据、TXT格式数据中的至少一种;

通过所述POS终端的打印机打印所述第二待打印数据。

6.根据权利要求5所述的方法,其特征在于,所述通过POS终端的打印代理程序接收打印伺服程序发送的符合POS终端的待打印数据的步骤包括:通过POS终端的打印代理程序接收打印伺服程序发送的点阵数组数据,所述点阵数组数据为所述打印伺服程序将所述第一打印驱动获取的第一待打印数据转换为单色位图数据后,再将所述单色位图数据进行转换所得到的。

7.一种将POS终端虚拟为计算机打印机的装置,其特征在于,应用于包括计算机和POS终端的场景中,包括:打印驱动模块,用于提供打印机类型为POS终端打印机,接收打印指令,并根据所述打印指令获取第一待打印数据,所述第一待打印数据可为word格式数据、PDF格式数据、图片格式数据、TXT格式数据中的至少一种;

打印伺服程序模块,用于将所述第一待打印数据转换为符合POS终端的第二待打印数据,将所述第二待打印数据发送给POS终端的打印机,以使所述POS终端的打印机对所述第二待打印数据进行打印。

8.根据权利要求7所述的装置,其特征在于,所述打印驱动模块还用于将获取的第一待打印数据存储在指定文件目录路径下,以及调用所述打印伺服程序模块从所述指定文件目录路径中读取所述第一待打印数据,并将所述第一待打印数据转换为符合POS终端的第二待打印数据。

9.根据权利要求7所述的装置,其特征在于,所述打印驱动模块还用于调用所述打印伺服程序模块将所述第一待打印数据转换单色位图数据,以及将所述单色位图数据转换为点阵数组数据,所述点阵数组数据为所述符合POS终端的第二待打印数据。

10.根据权利要求7所述的装置,其特征在于,所述打印伺服程序模块还用于将所述第二待打印数据发送给POS终端的打印代理程序,并通过所述打印代理程序将所述第二待打印数据传输给所述POS终端的打印机。

11.一种POS终端,其特征在于,应用于包括计算机和POS终端的场景中,包括:打印代理程序模块,用于接收打印伺服程序发送的符合POS终端的第二待打印数据,并将所述第二待打印数据发送给所述POS终端的打印机;其中,所述第二待打印数据为所述打印伺服程序将第一打印驱动获取的第一待打印数据转换得到的,所述第一待打印数据可为word格式数据、PDF格式数据、图片格式数据、TXT格式数据中的至少一种;

打印模块,用于打印所述第二待打印数据。

12.根据权利要求11所述的POS终端,其特征在于,所述打印代理程序还用于接收打印伺服程序发送的点阵数组数据,所述点阵数组数据为所述打印伺服程序将所述第一打印驱动获取的第一待打印数据转换为单色位图数据后,再将所述单色位图数据进行转换所得到的。

13.一种计算机,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至4中任一项所述方法的步骤。

14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。

说明书 :

将POS终端虚拟为计算机打印机的方法和装置、POS终端

技术领域

[0001] 本发明涉及计算机应用领域,特别是涉及一种将POS终端虚拟为计算机打印机的方法和装置、POS终端。

背景技术

[0002] 目前POS已经被广泛应用于各种支付场合,成为主流电子支付渠道之一。
[0003] 目前POS终端的打印机的作用仅仅是交易过后打印出所需的消费凭证,对打印机来说属于设备空置,远没有达到打印机设备寿命规格中允许的打印量,使用率低。

发明内容

[0004] 基于此,有必要针对POS打印机使用率低的问题,提供一种将POS设备虚拟为计算机打印机的方法和装置、POS终端,可以提高POS设备的使用率。
[0005] 一种将POS终端虚拟为计算机打印机的方法,包括以下步骤:
[0006] 通过第一打印驱动接收打印指令,并根据所述打印指令获取第一待打印数据,所述第一打印驱动用于提供打印机类型为POS终端打印机;
[0007] 通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换为符合POS终端的第二待打印数据;
[0008] 将所述第二待打印数据发送给POS终端的打印机,以使所述POS终端的打印机对所述第二待打印数据进行打印。
[0009] 在其中一个实施例中,所述方法还包括:
[0010] 将获取的第一待打印数据存储在指定文件目录路径下;
[0011] 通过所述第一打印驱动调用打印伺服程序从所述指定文件目录路径中读取所述第一待打印数据,并将所述第一待打印数据转换为符合POS终端的第二待打印数据。
[0012] 在其中一个实施例中,所述通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换为符合POS终端的第二待打印数据包括:
[0013] 通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换单色位图数据,以及将所述单色位图数据转换为点阵数组数据,所述点阵数组数据为所述符合POS终端的第二待打印数据。
[0014] 在其中一个实施例中,所述将所述第二待打印数据发送给POS终端的打印机的步骤包括:
[0015] 将所述第二待打印数据发送给POS终端的打印代理程序,并通过所述打印代理程序将所述第二待打印数据传输给所述POS终端的打印机。
[0016] 一种将POS终端虚拟为计算机打印机的方法,包括:
[0017] 通过POS终端的打印代理程序接收打印伺服程序发送的符合POS终端的第二待打印数据,并将所述第二待打印数据发送给所述POS终端的打印机;其中,所述第二待打印数据为所述打印伺服程序将第一打印驱动获取的第一待打印数据转换得到的;
[0018] 通过所述POS终端的打印机打印所述第二待打印数据。
[0019] 在其中一个实施例中,所述通过POS终端的打印代理程序接收打印伺服程序发送的符合POS终端的待打印数据的步骤包括:
[0020] 通过POS终端的打印代理程序接收打印伺服程序发送的点阵数组数据,所述点阵数组数据为所述打印伺服程序将所述第一打印驱动获取的第一待打印数据转换为单色位图数据后,再将所述单色位图数据进行转换所得到的。
[0021] 一种将POS终端虚拟为计算机打印机的装置,包括:
[0022] 打印驱动模块,用于提供打印机类型为POS终端打印机,接收打印指令,并根据所述打印指令获取第一待打印数据;
[0023] 打印伺服程序模块,用于将所述第一待打印数据转换为符合POS终端的第二待打印数据,将所述第二待打印数据发送给POS终端的打印机,以使所述POS终端的打印机对所述第二待打印数据进行打印。
[0024] 在其中一个实施例中,所述打印驱动模块还用于将获取的第一待打印数据存储在指定文件目录路径下,以及调用所述打印伺服程序模块从所述指定文件目录路径中读取所述第一待打印数据,并将所述第一待打印数据转换为符合POS终端的第二待打印数据。
[0025] 在其中一个实施例中,所述打印驱动模块还用于调用所述打印伺服程序模块将所述第一待打印数据转换单色位图数据,以及将所述单色位图数据转换为点阵数组数据,所述点阵数组数据为所述符合POS终端的第二待打印数据。
[0026] 在其中一个实施例中,所述打印伺服程序模块还用于将所述第二待打印数据发送给POS终端的打印代理程序,并通过所述打印代理程序将所述第二待打印数据传输给所述POS终端的打印机。
[0027] 一种POS终端,包括:
[0028] 打印代理程序模块,用于接收打印伺服程序发送的符合POS终端的第二待打印数据,并将所述第二待打印数据发送给所述POS终端的打印机;其中,所述第二待打印数据为所述打印伺服程序将第一打印驱动获取的第一待打印数据转换得到的;
[0029] 打印模块,用于打印所述第二待打印数据。
[0030] 在其中一个实施例中,所述打印代理程序还用于接收打印伺服程序发送的点阵数组数据,所述点阵数组数据为所述打印伺服程序将所述第一打印驱动获取的第一待打印数据转换为单色位图数据后,再将所述单色位图数据进行转换所得到的。
[0031] 上述将POS终端虚拟为打印机的方法和装置、POS终端,通过第一打印驱动获取第一待打印数据,调用打印伺服程序将第一待打印数据转换为符合POS终端的第二待打印数据,将第二待打印数据发送给POS终端的打印机进行打印,提高了POS打印机的使用率。

附图说明

[0032] 图1为一个实施例中将POS终端虚拟为计算机打印机的方法的应用场景示意图;
[0033] 图2为一个实施例中将POS终端虚拟为计算机打印机的方法的流程图;
[0034] 图3为一个实施例中Windows操作系统的打印流程图;
[0035] 图4A为一个实施例中打印端口监视器的工作流程图;
[0036] 图4B为一个实施例中图形事例示意图;
[0037] 图5为一个实施例中将POS终端虚拟为计算机打印机的方法的POS终端流程图;
[0038] 图6为一个实施例中计算机110将打印数据传输给POS终端120打印的工作流程图;
[0039] 图7为一个实施例中POS终端虚拟为Windows打印机装置的结构框图;
[0040] 图8为一个实施例中将POS终端虚拟为计算机打印机的装置的结构框图;
[0041] 图9为一个实施例中将POS端虚拟为计算机打印机装置的工作流程图。

具体实施方式

[0042] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
[0043] 图1为一个实施例中将POS终端虚拟为计算机打印机的方法的应用场景示意图。如图1所示,该应用场景包括计算机110和POS终端120。计算机110与POS终端120可通过有线或无线通信方式进行数据通信。计算机110上可安装Windows操作系统、Linux操作系统等。有线方式可为串口、USB线缆、以太网等连接通信。无线通信方式可为WIFI等方式。计算机110可通过第一打印驱动接收打印指令,并根据所述打印指令获取第一待打印数据,所述第一打印驱动用于提供打印机类型为POS终端打印机,通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换为符合POS终端的第二待打印数据,将所述第二待打印数据发送给POS终端的打印机,以使所述POS终端120的打印机对所述第二待打印数据进行打印。
[0044] 图2为一个实施例中将POS终端虚拟为计算机打印机的方法的流程图。如图2所示,一种将POS终端虚拟为计算机打印机的方法,以计算机角度描述,包括步骤202至步骤206。其中:
[0045] 步骤202,通过第一打印驱动接收打印指令,并根据所述打印指令获取第一待打印数据,所述第一打印驱动用于提供打印机类型为POS终端打印机。
[0046] 具体地,计算机可通过安装的第一打印驱动接收用户触发的打印指令,并根据该打印指令获取第一待打印数据。该第一待打印数据可为word格式、PDF格式数据、图片格式数据、TXT格式数据等。
[0047] 步骤204,通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换为符合POS终端的第二待打印数据。
[0048] 具体地,打印伺服程序是指用于将计算机中待打印数据转换为符合POS终端的待打印数据的应用程序。第一打印驱动通过函数调用打印伺服程序。
[0049] 步骤206,将所述第二待打印数据发送给POS终端的打印机,以使所述POS终端的打印机对所述第二待打印数据进行打印。
[0050] 具体地,计算机的打印伺服程序通过约定协议将第二待打印数据发送给POS终端的打印机进行打印。该约定协议是指符合计算机和POS终端之间进行数据通信的协议。
[0051] 上述将POS终端虚拟为打印机的方法,通过第一打印驱动获取第一待打印数据,调用打印伺服程序将第一待打印数据转换为符合POS终端的第二待打印数据,将第二待打印数据发送给POS终端的打印机进行打印,提高了POS打印机的使用率。
[0052] 在一个实施例中,上述将POS终端虚拟为计算机打印机的方法还包括:将获取的第一待打印数据存储在指定文件目录路径下。
[0053] 具体地,用户需要在调用第一打印驱动之前,配置系统相关参数,并指定一个文件目录路径,用于存储第一待打印数据。例如在Windows系统中,用户可以将路径设置为:HKEY_CURRENT_USER\SOFTWARE\ImagePrinter,用于存储第一待打印数据。此外,也可通过安装第一打印驱动来自动完成系统相关参数的配置。所述配置系统相关参数,请参照表1。
[0054] 表1
[0055]
[0056]
[0057] 在一个实施例中,上述将POS终端虚拟为计算机打印机的方法还包括:通过所述第一打印驱动调用打印伺服程序从所述指定文件目录路径中读取所述第一待打印数据,并将所述第一待打印数据转换为符合POS终端的第二待打印数据。
[0058] 具体地,第一打印驱动获取打印指令,然后将所述第一待打印数据转换为位图数据并将其存储在指定文件目录路径下。随后,第一打印驱动调用打印伺服程序获取所述指定文件目录路径中的位图数据,并将所述第一待打印数据转换为符合POS终端的第二待打印数据。
[0059] 图3为一个实施例中Windows操作系统的打印流程图。Windows打印驱动程序基于开源(GNU License)的ImagePrinter开发,属于Windows平台的虚拟打印机驱动类别,也就是说,ImagePriter是一种用于实现虚拟打印机驱动的开发工具,在打印流程中的作用即是一个端口监视器,并提供端口驱动程序的实现。端口驱动程序即为第一打印驱动。如图3所示,windows操作系统的打印流程包括:
[0060] 步骤302,启动打印应用程序。
[0061] 具体地,打印应用程序创建一个设备上下文并在其上绘制一个对象,然后调用GDI(Graphics Device Interface图形设备接口)中相应的函数接口向此设备上下文相对应的打印机发出一个打印请求。创建一个设备上下文即配置一个设备运行环境。GDI即Windows提供的图形设备接口,它是Windows系统的一个核心部件,是Windows图形功能的心脏,它的主要功能是负责Windows系统与绘图程序之间的信息交换。所有的图形图像处理以及字体处理,颜色管理功能等都实现与GDI中。
[0062] 步骤304,创建设备上下文。
[0063] 具体地,GDI函数调用相应的打印机驱动程序来处理打印请求。
[0064] 步骤306,图形设备接口GDI调用相应的打印机驱动程序。
[0065] 具体地,打印驱动程序创建一个打印作业,并调用GDI函数通过打印接口DLL(DLL为接口文件)和打印图形DLL将处理结果返回GDI。
[0066] 步骤308,GDI函数来调用打印假脱机系统。
[0067] 其中,Windows操作系统的打印假脱机技术主要是指当主机处理器给外部设备传送数据时,为了减少占用主机处理器的时间(因为端口的速度通常远低于处理器的速度)而采用的一种把辅助存储器(通常为硬盘)当作端口的缓冲存储器来使用,具体的发送工作由后台来处理的一种技术。
[0068] 以上所述步骤,为打印机驱动开发Windows固有流程。即如果是在Windows平台上开发打印机驱动程序,则需实现以上步骤。
[0069] 步骤310,打印假脱机系统调用语言监视器。语言监视器主要用于支持打印机的双向通讯,监视打印机的状态,获取并处理一些事件。
[0070] 具体地,打印脱机调用打印请求处理器以便将打印作业发送到应用程序指定的打印机上。然后,打印请求处理器将打印作业发送到本地打印提供者,如果打印作业的类型是非直接打印,那么本地打印提供者就将打印作业以原始假脱机文件的格式存放在磁盘上,并且将后来的打印片段不断的附加到假脱机文件中,直到应用程序调用了EndDoc函数终止一个打印作业为止。以上步骤302到步骤310可以重复多次,用来产生一个完整的假脱机文件。接下来本地打印提供者启动一个后台线程,打印主线程根据对打印假脱机子系统资源的监视情况,选定一个最佳的时刻触发假脱机文件的解析过程。此时,打印主线程将调用StartDocPort函数启动打印处理器中的一个线程来开始解析工作。打印机处理器线程调用ReadPrinter来激活本地打印提供者以便从磁盘读取所述生成的打印假脱机文件。同时,打印处理器还调用了WritePrinter函数来激活打印机作业的语言监视器以便将数据通过物理端口发送到相应的打印机上。
[0071] 步骤312,语言监视器调用端口监视器。
[0072] 具体地,打印语言监视器调用端口监视器的功能来给打印机发送数据。端口监视器控制打印机和物理端口之间的通讯。它的作用是向端口设备传送或者从端口设备接收数据(有些端口监视器仅有传送功能)。一般的,操作系统会提供端口监视器来支持一些类型的端口(LPT,COMN等)供打印机使用,这时就不需要开发人员提供自己的端口监视器。但是如果打印机的端口类型不在操作系统默认支持的端口类型列表中,则需要开发人员编写自己的打印端口监视器并随打印机驱动程序一起安装。其中,ImagePrinter在打印流程中的作用即是一个端口监视器,同时提供端口驱动程序的实现。
[0073] 图4A为图3中打印端口监视器的工作流程图。在端口监视器中的实现中,通过配置WriteFile,实现了向特定文件目录路径下写入位图数据的功能。如图4A所示,打印端口监视器的工作流程包括:
[0074] 步骤404,开启打印端口。
[0075] 具体地,打印假脱机402首先要调用端口监视器的OpenPort函数,该函数的主要功能是打开一个端口并返回一个标识该端口的句柄。在假脱机的后续调用中,该句柄将作为其他处理函数的输入参数使用。句柄即整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。
[0076] 步骤406,开始打印作业。
[0077] 具体地,一个端口被打开之后,打印假脱机接着调用StartDocPort函数来开始一个打印作业。StartPort函数主要通过调用Windows API(Application Programming Interface应用程序编程接口)提供的CreateFile函数来建立一条和内核端口驱动之间的数据链接。
[0078] 步骤408,判断向打印机读还是写数据。
[0079] 具体地,当数据链接建立之后,打印假脱机可以根据需要进行双向操作,一种是向打印机写数据,这种情况下打印假脱机先调用端口监视器的WritePort函数然后会多次调用Windows API提供的WriteFile函数来向内核端口驱动发送数据。在所述第一打印驱动中,通过配置写入端口410,和调用WriteFile函数,来向指定的文件路径目录下写入位图数据。另外一种是向打印机读数据,此时打印假脱机先调用端口监视器的ReadPort函数然后再调用Windows API提供的ReadFile函数从内核端口驱动读取硬件信息。
[0080] 步骤412,传送数据。
[0081] 具体地,向打印机写入数据之后,打印假脱机会调用GetPrinterDataFromPort函数,该函数的主要作用是通过调用Windows API提供的DeviceloControl函数来最终实现打印驱动程序和内核端口驱动之间的数据传输。
[0082] 步骤414,完成打印流程。
[0083] 具体地,以上操作完成之后,打印假脱机调用EndDocPort函数来结束一个打印作业。该函数的主要作用是释放CreateFile函数建立的数据链接和StartDocPort函数中申请的所有系统资源。
[0084] 步骤416,判断打印队列中是否还有作业待打印。
[0085] 具体地,当按照上述过程完成了一个打印作业之后,打印假脱机查看和这个端口相连的打印队列中查看还有没有其他的文件需要打印。如果有,则程序返回到StartDocPort函数重复执行上述过程,如果没有,打印假脱机便关闭这个端口。
[0086] 步骤418,关闭端口。
[0087] 具体地,端口监视器的ClosePort函数用来关闭端口。该函数的主要作用是在是放在OpenPort函数中申请的所有系统资源。
[0088] 在一个实施例中,所述通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换为符合POS终端的第二待打印数据包括:通过所述第一打印驱动调用打印伺服程序将所述第一待打印数据转换单色位图数据,以及将所述单色位图数据转换为点阵数组数据,所述点阵数组数据为所述符合POS终端的第二待打印数据。
[0089] 具体地,通过所述第一打印驱动调用打印伺服程序后,打印伺服程序将在指定文件目录路径下获取第一待打印数据。同时判断第一待打印数据是否为单色位图数据,如果第一待打印数据为非单色位图数据,首先将位图数据转换为单色位图数据后,再将单色位图数据转换为点阵数组数据,所述点阵数组数据为所述符合POS终端的第二待打印数据。其中,所述点阵数组数据包括首字符、各行图形的字节数和图形数据。其中:
[0090] 首字符[1Byte],用于表示图形的行数。
[0091] 第一行图形的字节数[2Byte,高字节在前]、第一行图形的图形数据[一行的宽度为384个点]。
[0092] 第二行图形的字节数[2Byte,高字节在前]。依次类推。第三行,第四行等。
[0093] 其中,1表示该位置上有数据(黑点),0表示该位置上无数据(白点),例如:
[0094] 如图4B所示,图形的像素为98*44像素
[0095] 转换后的数组为:
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103] 点阵数组的第一个字节0x2C即表示图像的行数(也就是高度)为44。即0X2C为十六进制,转换为十进制为44,即44行。以此类推。
[0104] 在一个实施例中,所述将所述第二待打印数据发送给POS终端的打印机的步骤包括:将所述第二待打印数据发送给POS终端的打印代理程序,并通过所述打印代理程序将所述第二待打印数据传输给所述POS终端的打印机。
[0105] 具体地,打印伺服程序将单色位图数据转换为点阵数组数据后,通过约定通讯协议发送给POS终端。约定通讯协议采用LRC(Longitudinal Redundancy Check纵向冗余校验)验证机制。在点阵数组数据从伺服程序传输到POS终端的打印代理程序后,首先会进行LRC验证,确保点阵数组数据的准确性与完整性,如果点阵数组数据有误,POS终端的打印代理程序将返回一个错误代码给打印伺服程序;打印伺服程序将重新发送点阵数组数据给POS终端的打印代理程序;最后打印代理程序将正确完整的数据传输给所述POS终端的打印机,完成打印任务。其中,所述约定通讯协议包括数据头、数据长度、数据内容、LRC验证、响应包、响应包数据头、响应包数据内容、LRC验证等。具体地,在发送数组数据时,先发送数据头,再发送数据内容,数据头格式的定义请参照表2。
[0106] 表2
[0107]
[0108] 其中,起始字符表示数据的开始标志,数据头信息包括:数据包的长度,设备类型信息,数据包的类型,以及命令的索引信息,用于传输数据的初始化。其中,数据内容格式定义请参照表3。
[0109] 表3
[0110]
[0111] 数据包长度为除开始字符以外的整个数据的长度,接收端接收时,首先接收数据包长度,然后再接收剩余数据。数据包类型和命令索引包含解析格式,计算格式,真正的数据内容,数据根式等信息。LRC为数据校验,为除起始字符外其他数据的异或值,保证了数据的准确性。数据内容的具体格式如下,若参数为整数,则使用4字节表示(高位在前)请参照表4。
[0112] 表4
[0113]参数1 参数2 参数2 。。。 参数n
[0114] 在数据成功打印或者在数据传输过程完毕之后,POS终端将会返回信息给打印伺服程序,其返回响应包的定义请参照表5。
[0115] 表5
[0116]
[0117] 其中起始字符表示数据的开始标志,数据头信息包括:数据包的长度,设备类型信息,数据包的类型,以及命令的索引信息,用于传输数据的初始化,数据内容格式定义请参照表6。
[0118] 表6
[0119]
[0120] 数据包各部分含义与上述的数据包含义相同,数据内容多出一个错误代码,若错误代码(ErrorCode)为LRC校验错误,或者响应包本身校验错误,则PC端重新发送上一个数据包。错误代码的定义如下:
[0121]
[0122] 上述将所述第二待打印数据发送给POS终端的打印机的步骤,通讯协议采用LRC验证机制,保证了点阵数组数据的完整性与正确性,使POS打印机可以精准的打印出用户所需要的数据。
[0123] 图5为另一个实施例中将POS终端虚拟为计算机打印机的POS端方法的流程图。如图5所示,将POS终端虚拟为计算机打印机的方法,以POS终端角度描述,包括步骤502和步骤504。其中:
[0124] 步骤502,通过POS终端的打印代理程序接收打印伺服程序发送的符合POS终端的第二待打印数据,并将所述第二待打印数据发送给所述POS终端的打印机;其中,所述第二待打印数据为所述打印伺服程序将第一打印驱动获取的第一待打印数据转换得到的。
[0125] 步骤504,通过所述POS终端的打印机打印所述第二待打印数据。
[0126] 在一个实施例中,所述通过POS终端的打印代理程序接收打印伺服程序发送的符合POS终端的待打印数据的步骤包括:
[0127] 通过POS终端的打印代理程序接收打印伺服程序发送的点阵数组数据,所述点阵数组数据为所述打印伺服程序将所述第一打印驱动获取的第一待打印数据转换为单色位图数据后,再将所述单色位图数据进行转换所得到的。
[0128] 通过以上步骤,完成了将打印数据转换为适合打印机打印的数据,并保证了数据的完整与正确性,成功地将POS打印机虚拟为计算机打印机,提高了POS打印机的利用率。
[0129] 在一个实例中,所述通过POS终端的打印代理程序将所述第二待打印数据发送到POS终端打印机的步骤包括:
[0130] 所述通过POS终端的打印代理程序接收到打印伺服程序发送的符合POS终端的待打印数据后,进行对第二待打印数据的校验,然后将正确完整的第二待打印数据发送到POS终端打印机进行打印。
[0131] 具体地,POS终端的打印代理程序监控数据端口,当POS端打印代理程序监控到打印伺服程序发送来的点阵数组数据后,首先POS端打印代理程序会对点阵数组数据即第二待打印数据进行LRC验证,判断点阵数组数据是否正确和完整,如果正确,将所述第二待打印数据传送至POS端打印机,将第二待打印数据打印出来,然后向计算机端发送一个打印完成的返回值,并完成打印任务。如果第二待打印数据不正确或者不完整,POS端打印代理程序会向计算机端发送一个错误代码,计算机端打印伺服程序将会重新发送第二待打印数据到POS端打印代理程序,直至第二待打印数据正确完整的传输到POS端打印机并完成打印任务。
[0132] 上述从POS端描述的将POS终端虚拟为计算机打印机的方法,通过约定协议将第二待打印数据传送到POS端,并最终将数据打印出来的方式,保证了数据的准确性和完整性,使用户可以将正确的数据通过POS端打印机打印出来。
[0133] 图6为一个实施例中计算机110将打印数据传输给POS终端120打印的工作流程图。如图6所示,计算机110上安装有第一打印驱动和打印伺服程序。POS终端120上安装有打印代理程序和打印机。以计算机角度来描述,计算机110将打印数据传输给POS终端120打印的过程包括:
[0134] 步骤602,接收打印驱动选择指令,并获取第一打印驱动。
[0135] 具体地,打印驱动选择指令可为接收用户在打印界面选择POS终端打印机类型所产生的指令。根据该打印驱动选择指令获取第一打印驱动。第一打印驱动可为适用于POS终端打印机的驱动程序。
[0136] 步骤604,第一打印驱动将第一待打印数据传送至指定文件目录路径下,并查找调用打印伺服程序。
[0137] 具体地,第一打印驱动将第一待打印数据转换成位图数据,并将位图数据发送至指定的文件目录路径下,并调用打印伺服程序。
[0138] 步骤606,所述打印伺服程序将第一待打印数据转换为点阵数组数据,点阵数组数据即为第二待打印数据,并将第二待打印数据发送至POS端的打印代理模块,所述打印端打印代理模块为POS端用来接收计算机端的程序。
[0139] 具体地,计算机端打印伺服程序将获取指定文件目录路径下的第一待打印数据,然后判断第一待打印数据的位图数据是否为单色位图数据,然后将单色位图数据转换为点阵数组,点阵数组为所述第二待打印数据,然后将第二待打印数据通过约定协议发送至POS端的打印代理模块。根据所述POS终端打印代理程序通过监听通讯端口,获取所述已转换待打印数据,并调用POS打印机;根据所述POS打印机,打印所述待打印数据。
[0140] 图7为一个实施例中将POS终端虚拟为计算机打印机的装置的结构框图。如图7所示,一种将POS终端虚拟为计算机打印机的装置,以计算机角度描述,包括打印驱动模块702和打印伺服程序模块704。其中:
[0141] 打印驱动模块702用于提供打印机类型为POS终端打印机,接收打印指令,并根据所述打印指令获取第一待打印数据。
[0142] 打印伺服程序模块704用于将所述第一待打印数据转换为符合POS终端的第二待打印数据,将所述第二待打印数据发送给POS终端的打印机,以使所述POS终端的打印机对所述第二待打印数据进行打印。
[0143] 在一个实施例中,所述打印驱动模块还用于将获取的第一待打印数据存储在指定文件目录路径下,以及调用所述打印伺服程序模块从所述指定文件目录路径中读取所述第一待打印数据,并将所述第一待打印数据转换为符合POS终端的第二待打印数据。
[0144] 在其中一个实施例中,所述打印驱动模块还用于调用所述打印伺服程序模块将所述第一待打印数据转换单色位图数据,以及将所述单色位图数据转换为点阵数组数据,所述点阵数组数据为所述符合POS终端的第二待打印数据。
[0145] 在其中一个实施例中,所述打印伺服程序模块还用于将所述第二待打印数据发送给POS终端的打印代理程序,并通过所述打印代理程序将所述第二待打印数据传输给所述POS终端的打印机。
[0146] 图8为一个实施例中POS终端的内部结构框图。如图8所示,一种POS终端包括打印代理程序模块802和打印模块804。其中:
[0147] 打印代理程序模块802用于接收打印伺服程序发送的符合POS终端的第二待打印数据,并将所述第二待打印数据发送给所述POS终端的打印机;其中,所述第二待打印数据为所述打印伺服程序将第一打印驱动获取的第一待打印数据转换得到的。
[0148] 打印模块804用于打印所述第二待打印数据。
[0149] 在一个实施例中,所述打印代理程序还用于接收打印伺服程序发送的点阵数组数据,所述点阵数组数据为所述打印伺服程序将所述第一打印驱动获取的第一待打印数据转换为单色位图数据后,再将所述单色位图数据进行转换所得到的。
[0150] 请参阅图9,图9为一实施例中POS终端虚拟为计算机打印机系统的工作流程图,该系统可以包括:
[0151] 打印驱动模块902,用于选择POS打印机打印驱动以及获取用户打印指令,将待打印数据传送至指定文件目录路径下,并查找调用打印伺服程序。
[0152] 打印伺服程序模块904,用于获取待打印数据,并判断待打印数据是否为单色位图数据,如果不是单色位图数据,将其转换成单色位图数据后,将单色位图数据转换为点阵数组数据,并将数据通过约定协议发送到POS终端装置。
[0153] 打印代理模块906,接收打印伺服程序模块传送过来的数据,并判断数据是否正确,完整。如果数据有误,将重新向计算机端打印伺服程序请求点阵数组数据,然后将点阵数组数据传送至打印模块。
[0154] 打印模块908,接收点阵数组数据,并将点阵数组数据打印出来,完成打印任务,并反馈打印结果。
[0155] 上述将POS设备虚拟为打印机的方法,通过与计算机端的打印流程融合,用户无需做额外的工作就可以利用POS打印机打印简单的文档。且计算机端与POS机之间可以支持多种链接方式,并不局限于传统的并口线缆链接方式,计算机端可以使用串口、USB线缆、以太网、WiFi等方式链接POS打印机来打印文档,提高了POS打印机的利用率。
[0156] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
[0157] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。