支付终端应用仿真方法和装置与流程

文档序号:11285927阅读:285来源:国知局
支付终端应用仿真方法和装置与流程

本发明涉及嵌入式技术领域,特别是涉及一种支付终端应用仿真方法和装置。



背景技术:

pos(pointofsale,支付终端)终端是一种嵌入式设备,在出厂时一般装载了厂商提供的固件,需要根据厂商提供的pos应用接口并根据实际业务开发流程开发出各类应用程序并装载到pos终端中,pos才能对外提供相关业务功能。现有的pos应用程序开发方案需要开发人员自行建立应用工程、编码并使用交叉编译工具将代码编译成目标代码,最后将目标代码下载到pos终端中查看运行效果是否与设计符合,如果在pos终端中观察、验证有误,需要重新修改代码、编译、下载、观察验证,直至达到设计要求,开发人员无法实时调试应用程序,应用开发的效率低下。



技术实现要素:

基于此,基于此,针对上述问题,提供一种支付终端应用程序仿真方法和装置,能够直接通过仿真环境运行应用程序,提高应用开发的效率。

一种支付终端应用仿真方法,所述方法包括:

检测第三方编辑器版本,根据预先选择的第三方编辑器版本使用对应的第三方编辑器打开对应的应用工程;

获取所述应用工程中的自定义应用程序,使用第三方编辑器编译所述自定义应用程序,将所述自定义应用程序与预设静态库及预设动态库链接生成可执行文件;

执行所述可执行文件,对所述自定义应用程序的功能进行仿真。

在一个实施例中,所述执行所述可执行文件,对所述自定义应用程序的功能进行仿真的步骤包括:

调用所述可执行文件中的预设静态库入口函数,根据所述预设静态库入口函数启动所述预设动态库,并获取所述自定义应用程序对应的入口函数地址;

根据所述入口函数地址获取所述自定义应用程序对应的入口函数,开始执行所述自定义应用程序,读取所述自定义应用程序执行的当前应用程序编程接口api;

检测所述预设动态库中是否存在与所述当前api对应的接口函数;

若存在,则调用所述预设动态库中对应的接口函数,根据所述当前api对应的接口函数参数进行仿真执行,得到执行结果;

若不存在,则将所述当前应用程序编程接口对应的接口函数参数发送至支付终端,接收所述支付终端返回的执行结果;

将执行结果显示在仿真界面上。

在一个实施例中,将执行结果显示在仿真界面上的步骤包括:

获取目标设备环境句柄和数据缓存地址,调用绘制函数操作所述目标设备环境句柄或将屏幕初始化数据映射到所述数据缓存地址上,以在绘图区域绘制初始化仿真界面;

调用加载数据函数将执行结果对应的目标数据复制到绘图区域上,更新初始化仿真界面,在仿真界面显示执行结果。

在一个实施例中,所述检测第三方编辑器版本,根据预先选择的第三方编辑器版本使用对应的第三方编辑器打开对应的应用工程的步骤包括:

检测第三方编辑器版本,在显示界面显示检测到的第三方编辑器版本;

根据作用于所述显示界面的操作指令,调用创建函数创建当前应用工程;

获取所述当前应用工程对应的名称和保存路径,将当前应用工程对应的数据格式转换为目标第三方编辑器版本对应的数据格式,生成目标应用工程;

使用所述目标第三方编辑器版本对应的第三方编辑器打开所述目标应用工程。

在一个实施例中,所述支付应用仿真方法还包括:

当检测到所述自定义应用程序对应的仿真结果达到预设要求时,调用预先集成的编译器解析所述自定义应用程序目录结构,自动生成对应的脚本文件;

将所述脚本文件编译生成支付终端目标文件,并下载至支付终端。

一种支付终端应用仿真装置,所述装置包括:

应用工程获取模块,用于检测第三方编辑器版本,根据预先选择的第三方编辑器版本使用对应的第三方编辑器打开对应的应用工程;

可执行文件生成模块,用于获取所述应用工程中的自定义应用程序,使用第三方编辑器编译所述自定义应用程序,将所述自定义应用程序与预设静态库及预设动态库链接生成可执行文件;

仿真模块,用于执行所述可执行文件,对所述自定义应用程序的功能进行仿真。

在一个实施例中,所述仿真模块包括:

调用模块,用于调用所述可执行文件中的预设静态库入口函数,根据所述预设静态库入口函数启动所述预设动态库,并获取所述自定义应用程序对应的入口函数地址;

api获取模块,用于根据所述入口函数地址获取所述自定义应用程序对应的入口函数,开始执行所述自定义应用程序,读取所述自定义应用程序执行的当前应用程序编程接口api;

检测模块,用于检测所述预设动态库中是否存在与所述当前api对应的接口函数;

仿真执行模块,用于若存在,则调用所述预设动态库中对应的接口函数,根据所述当前api对应的接口函数参数进行仿真执行,得到执行结果;

交互执行模块,用于若不存在,则将所述当前应用程序编程接口对应的接口函数参数发送至支付终端,接收所述支付终端返回的执行结果;

显示模块,用于在仿真界面显示所述执行结果。

在一个实施例中,所述显示模块还包括:

初始化仿真界面建立模块,用于获取目标设备环境句柄和数据缓存地址,调用绘制函数操作所述目标设备环境句柄或将屏幕初始化数据映射到所述数据缓存地址上,以在绘图区域绘制初始化仿真界面;

更新模块,用于调用加载数据函数将执行结果对应的目标数据复制到绘图区域上,更新初始化仿真界面,在仿真界面显示执行结果。

在一个实施例中,所述应用工程获取模块包括:

编辑器检测模块,用于检测第三方编辑器版本,在显示界面显示检测到的第三方编辑器版本;

创建模块,用于根据作用于所述显示界面的操作指令,调用创建函数创建当前应用工程;

应用工程生成模块,用于获取所述当前应用工程对应的名称和保存路径,将当前应用工程对应的数据格式转换为目标第三方编辑器版本对应的数据格式,生成目标应用工程,使用所述目标第三方编辑器版本对应的第三方编辑器打开所述目标应用工程。

在一个实施例中,所述支付应用仿真装置还包括:

编译下载模块,用于当检测到所述自定义应用程序对应的仿真结果达到预设要求时,调用预先集成的编译器解析所述自定义应用程序目录结构,自动生成对应的脚本文件,将所述脚本文件编译生成支付终端目标文件,并下载至支付终端。

上述支付终端应用仿真方法和装置,检测第三方编辑器版本,使用第三方编辑器打开对应的应用工程,并对应用工程中的自定义应用程序进行编译,将自定义应用程序与预设动态库和预设动态库链接生成可以在第三方编辑器中执行的可执行文件,从而在第三方编辑器所在的系统下对自定义应用程序中的功能进行仿真。将仿真系统与第三方编辑器相关联,借助第三方编辑器的编译功能对自定义应用程序进行编译,使自定义应用程序能够进行仿真,有效的提高了支付应用程序的开发效率。

附图说明

图1为一个实施例中支付终端应用仿真方法的应用环境图;

图2为一个实施例中移动终端的内部结构示意图;

图3为一个实施例中支付终端应用仿真方法的流程图;

图4为一个实施例中可执行文件api仿真方法的流程图;

图5为一个实施例中显示仿真结果的显示方法的流程图;

图6为一个实施例中支付终端应用仿真方法的流程图;

图7为另一个实施例中支付终端应用仿真方法的流程图;

图8为一个具体实施例中支付终端应用仿真方法的流程图;

图9为一个实施例中生成可执行文件的流程示意图;

图10为一个实施例中发送数据格式的示意图;

图11为一个实施例中接收数据格式的示意图;

图12为一个实施例中支付终端应用仿真装置的结构框图;

图13为一个实施例中仿真模块的结构框图;

图14为一个实施例中显示模块的结构框图;

图15为一个实施例中应用工程获取模块的结构框图;

图16为另一个实施例中支付终端应用仿真装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。图1为一个实施例中支付终端应用仿真方法的应用环境图。参照图1,该应用环境包括移动终端110与支付终端120之间进行串口通信,移动终端110提供支付终端应用仿真环境对支付终端应用程序进行仿真,当移动终端110无法提供相应的仿真硬件时,移动终端110将对应的接口函数参数发送至支付终端120,支付终端120根据接收的接口函数参数调用对应的接口函数进行仿真,将仿真结果返回至移动终端110,在移动终端110中的仿真界面进行显示。

图2为一个实施例中移动终端的内部结构示意图。如图2所示,该移动终端包括通过系统总线连接的处理器、非易失性存储介质、内存储器、串行接口、显示屏和输入装置。其中,终端的非易失性存储介质存储有操作系统,还包括一种支付终端应用仿真装置,该支付终端应用仿真装置用于实现一种支付终端应用仿真方法,该处理器用于提供计算和控制能力,支撑整个移动终端的运行。移动终端中的内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种支付终端应用仿真方法。串行接口用于与支付终端进行串口通信,如发送接口函数至支付终端,接收用于支付终端返回的执行结果等。移动终端的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

如图3所示,在一个实施例中,提供一种支付终端应用仿真方法,包括如下内容:

步骤s310,检测第三方编辑器版本,根据预先选择的第三方编辑器版本使用对应的第三方编辑器打开对应的应用工程。

其中,第三方编辑器版本是指仿真系统之外的编辑器对应的版本,仿真系统与第三方编辑器自动建立连接,当开启仿真系统时,自动关联第三方编辑器,并检测第三方编辑器的版本。在仿真系统显示界面显示检测到的编辑器版本,接收用户选择指令,获取用户选取的第三方编辑器版本,使用该版本的第三方编辑器打开对应的应用工程。

具体地,可以利用仿真系统打开已有应用工程、新建应用工程、添加应用工程或删除应用工程。如果需要新建应用工程,则在使用选择的第三方编辑器打开应用工程之前,建立新的应用工程并编辑该应用工程的名称、路径和描述,保存后使用对应的第三方编辑器打开对应的应用工程。如果直接打开应用工程,则在已经存在的应用工程列表中选择一个应用工程,使用对应的第三方编辑器打开选择的应用工程。

步骤s320,获取应用工程中的自定义应用程序,使用第三方编辑器编译自定义应用程序,将自定义应用程序与预设静态库及预设动态库链接生成可执行文件。

其中,自定义应用程序是指开发人员根据需要实现的支付终端的应用功能在应用工程编辑界面编写的对应代码,编写代码的语言为支付终端对应的编程语言,如c语言程序,对应的入口函数为main函数,而为了实现对自定义应用程序的仿真需要提供应用界面用于输出信息并显示仿真信息,便于查看,因此自定义应用程序需要在能够提供仿真界面的环境中运行。

具体地,预设静态库中存储了系统入口函数,通过系统入口函数能够进入到系统仿真开发平台,预设动态库中存储了大量的接口函数,用来实现自定义应用程序的仿真功能和界面交互功能。为了提供自定义应用程序对应的仿真环境,需要将自定义应用程序的入口函数转接到提供仿真环境的系统的入口函数上,以使自定义应用程序能够在提供仿真环境的系统中运行,在运行过程中调用预设动态库中的接口函数,对相应功能进行仿真,因此需要将自定义应用程序与预设静态库以及预设动态库相关联。通过第三方编辑器对自定义应用程序进行编译,通过编译的链接过程将自定义应用程序对应的二进制文件和预设静态库以及预设动态库编译成能够在第三方编辑器对应的系统执行的文件。其中入口函数是指应用程序最开始运行时调用的函数,程序后续的所有操作都在入口函数下被调用或间接被调用。

步骤s330,执行可执行文件,对自定义应用程序的功能进行仿真。

具体地,当根据自定义应用程序和预设静态库以及预设动态库链接生成对应的可执行文件后,执行该可执行文件。其中,在预设静态库中封装一个系统入口函数,该系统入口函数为提供各种界面的系统对应的入口函数,执行可执行文件首先执行系统入口函数进入系统仿真平台,并同时启动预设动态库。进一步地,预设静态库中保存了自定义应用程序对应的入口函数地址,当执行系统入口函数进入系统仿真平台后,根据自定义应用程序对应的入口函数地址获取自定义应用程序对应的入口函数,调用该入口函数执行自定义应用程序,并根据自定义应用程序中编写的应用程序调用预设动态库中的接口函数,对相应功能进行仿真。

本实施例中,通过与第三方编辑器建立关联,使开发人员能够借助第三方编辑器建立应用工程,编写支付终端应用功能对应的应用程序,能够帮助开发人员快速创建应用程序框架。使用第三方编辑器进行编译使自定义应用程序与预设静态库以及预设动态库链接生成可执行文件,从而使自定义应用程序能够在第三方编辑器对应的系统下执行,借助第三方系统提供对应的仿真环境,并执行相应的仿真功能,提高了应用开发的效率。

如图4所示,在一个实施例中,步骤s330包括:

步骤s331,调用可执行文件中的预设静态库入口函数,根据预设静态库入口函数启动所述预设动态库,并获取自定义应用程序对应的入口函数地址。

具体地,预设静态库中封装了系统入口函数,并保存了自定义应用程序对应的入口函数地址。当开始运行可执行文件时,提供仿真环境的系统首先调用系统入口函数,提供应用程序入口点,运行可执行文件,获取可执行文件中自定义应用程序对应的入口函数地址,并启动预设动态库,其中预设动态库负责提供仿真环境。

步骤s332,根据入口函数地址获取自定义应用程序对应的入口函数,开始执行自定义应用程序,读取自定义应用程序执行的当前应用程序编程接口api。

具体地,当调用系统入口函数为应用程序提供入口后,根据获取的自定义应用程序对应的入口函数地址调用对应的入口函数,开始执行自定义应用程序,自定义应用程序中定义了实现不同功能的应用程序编程接口api,其中api是指applicationprogramminginterface,是一些预先定义的函数,能够提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

进一步地,为了实现支付终端的应用功能,根据应用功能的需求编写自定义应用程序,按照自定义应用程序的执行逻辑依次执行,如果将实现应用功能需要调用的函数的具体内容全部写在自定义应用程序中,可能造成逻辑复杂,当程序出现错误时不易检测,因此,为了便于自定义应用程序的执行,将实现某个具体功能的函数预先存储在其他文件中,如存储在预设动态库中或支付终端的相应硬件中,在自定义应用程序中编写接口函数直接调用该函数,执行相应的功能。

步骤s333,检测预设动态库中是否存在与当前api对应的接口函数。

具体地,按照自定义应用程序的执行逻辑依次执行自定义应用程序的过程中,获取当前执行的代码,若当前执行的代码为调用接口函数,首先检测与自定义应用程序编译链接的预设动态库是否能够提供对应的仿真环境,也就是预设动态库中是否存在与当前执行的接口函数对应的接口函数的具体功能描述。

步骤s334,若存在,则调用预设动态库中对应的接口函数,根据当前api对应的接口函数参数进行仿真执行,得到执行结果。

具体地,预设动态库中存储了大量的接口函数,分别实现不同的功能,若检测到预设动态库能够提供当前api对应的功能的仿真环境,则调用预设动态库中对应功能的接口函数,获取自定义应用程序中当前api提供的接口函数参数,执行对应的接口函数对自定义应用程序的功能进行仿真,获取仿真执行结果。

步骤s335,若不存在,则将当前应用程序编程接口对应的接口函数参数发送至支付终端,接收支付终端返回的执行结果。

具体地,有些接口函数与硬件相关,必须在相应的硬件上才能执行相应功能,不能直接在仿真系统上进行仿真。当自定义应用程序执行的当前代码调用的接口函数对应的功能无法在仿真系统上直接仿真,则将该调用函数参数按照预设格式打包成请求包发送至支付终端,支付终端对预设格式的数据包进行解析,并获取调用与接收的调用函数想对应的支付终端接口执行相应接口函数,获取执行结果,并将执行结果按照预设格式返回至仿真系统所在的移动终端。

进一步地,终端与支付终端之间进行串口通讯,两台机器之间的串口通讯需要遵循一定的收发格式,以保证两者之间的信息能够正确传递和解析,预先制定数据收发的数据格式。

步骤s336,将执行结果显示在仿真界面上。

具体地,在仿真系统中直接进行仿真或者通过支付终端进行交互仿真获取对应的仿真结果,绘制仿真界面,将仿真结果在仿真界面上显示。

本实施例中,通过调用预设静态库中封装的系统入口函数,执行可执行文件,并根据执行文件的自定义应用程序对应的入口函数地址获取对应的入口函数执行自定义应用程序,获取自定义应用程序的调用函数,根据调用函数的类型使用仿真系统直接进行仿真或通过与支付终端进行交互进行仿真,获取仿真结果并将仿真结果显示在仿真界面上,支持生成仿真界面并且根据接口函数提供接口函数的仿真功能,能够快速直观的展示自定义应用程序运行结果。

如图5所示,在一个实施例中,步骤s336包括:

步骤s336a,获取目标设备环境句柄和数据缓存地址,调用绘制函数操作目标设备环境句柄或将屏幕初始化数据映射到数据缓存地址上,以在绘图区域绘制初始化仿真界面。

其中,设备环境句柄是指dc句柄,对应一个dc对象,对象内部是一个数据结构,包含该dc的驱动程序相关的一些数据结构,比如驱动的函数指针,硬件相关的数据结构等等。设备环境指的是对应的硬件参数和驱动程序软件参数,是对设备硬件的一种抽象。比如gdi有屏幕dc和打印机dc等至少两种dc,dc是一种绘画工具,窗口显示需要一个画布,在画布上显示内容需要dc。

具体地,预先使用xml文件描述屏幕和按键特性,使用duilib库自动解析,创建绘图区域进行屏幕和按键仿真。其中xml是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。xml描述采用三级目录,第一级是仿真窗口大小,第二级是窗口背景描述,第三级是屏幕和按键描述。duilib是一款强大的界面开发工具,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率。

在初始化屏幕绘图区时,利用duilib库中的duisim文件获取屏幕对应的控件属性并设置屏幕数据结构参数,调用createcompatibledc创建dc,并根据宽和高度,调用createdibsection生成绘图区域并绑定dc,预设动态库获取目标设备环境句柄dc和数据缓存地址,通过调用绘制函数直接操作dc在绘图区域绘制初始化仿真界面或者将屏幕初始化数据映射到对应的数据缓存地址中,在绘图区域绘制初始化仿真界面,完成屏幕初始化仿真。

步骤s336b,调用加载数据函数将执行结果对应的目标数据复制到绘图区域上,更新初始化仿真界面,在仿真界面显示执行结果。

具体地,当根据自定义应用程序的接口函数对相应功能进行仿真后,获取对应的仿真执行结果,通过调用加载数据函数读取仿真执行结果对应的目标数据,将目标数据复制到绘图区域设备上,在仿真界面显示执行结果。

进一步地,预先设置对应参数描述屏幕仿真区域的大小,将屏幕仿真区域划分为最小有效区域、顶部区域和底部区域,根据执行结果对应的相应屏幕参数确定绘图区域的大小,如果使用顶部区域则屏幕有效区域向下缩小,屏幕坐标向下平移顶部区域像素高度;如果使用底部区域,则屏幕有效区域向上缩小,屏幕坐标不变,高度缩小底部区域像素。例如仿真界面存在虚拟按键,则将底部区域作为虚拟按键区域,屏幕大小根据相应参数进行调节。

特别地,仿真屏幕可以分为触摸屏和非触摸屏,使用预设参数值判断屏幕是否为触摸屏,当屏幕为触摸屏时,通过鼠标事件设置压力值仿真触摸操作,如点击屏幕区域,改变该处屏幕区域对应的压力值仿真该屏幕区域的触摸操作,通过触摸屏读取数据函数获取当前触摸屏坐标数据。

本实施例中,预先定义屏幕属性描述文件,并关联对应的界面库,对屏幕属性文件进行解析能够获取到目标设备环境句柄和数据缓存地址,通过调用绘制函数或者将屏幕初始化数据映射到数据缓存地址上,并能够根据当前执行结果更新仿真界面,在仿真界面对执行结果进行显示,能够建立初始化仿真界面,对支付终端的显示功能进行仿真。

如图6所示,在一个实施例中,步骤s310包括:

步骤s310a,检测第三方编辑器版本,在显示界面显示检测到的第三方编辑器版本。

具体地,获取描述第三方编辑器信息的xml文件,获取xml文件中的版本信息,检测第三方编辑器版本,在显示界面显示所有检测到的第三方编辑器的版本。特别地,调用更新检测函数获取服务器中的第三方编辑器xml文件,将服务器中的xml文件与本地存储的xml文件相比较,若检测到服务器中的xml文件中的版本号相对于本地存储的xml文件中的版本号有更新,则发出提醒,获取用户操作对第三方编辑器进行更新。

步骤s310b,根据作用于显示界面的操作指令,调用创建函数创建当前应用工程。

具体地,在仿真系统显示界面的界面窗口包括菜单栏、工具栏、显示窗口及状态栏。菜单栏中包括运行、项目、工具、视图等菜单。运行菜单主要用于仿真环境的控制,设置和导入可执行文件,项目菜单提供仿真机型选择和编译,工具菜单用于各种工具调用,视图菜单用于控制窗口显示。工具栏提供快捷入口,显示窗口包括机型仿真图、打印仿真输出、通讯仿真输出、磁卡仿真输出、ic卡仿真输出以及输出信息窗口。

获取作用于显示界面的操作指令,如点击显示界面的运行菜单,获取新建指令,调用创建函数创建当前应用工程。

步骤s310c,获取当前应用工程对应的名称和保存路径,将当前应用工程对应的数据格式转换为目标第三方编辑器版本对应的数据格式,生成目标应用工程。

具体地,在创建当前应用工程的过程中获取用户设置的当前应用工程的名称与保存路径,按照设置的保存路径保存当前应用工程。获取对应版本的第三方编辑器打开当前应用程序,其中对应版本是指用户在显示界面显示的第三方编辑器版本中选择的用来打开当前应用程序的第三方编辑器对应的版本。

进一步地,当在其中一个版本的第三方编辑器创建了当前应用工程后,使用另一个版本的第三方编辑器打开当前应用工程,调用转换函数,获取当前应用工程的名称和存储路径,根据当前应用工程的名称和存储路径获取对应的当前应用工程,同时获取目标版本第三方编辑器,读取目标版本第三方编辑器对应的数据存储格式,将当前应用工程的数据格式转换为目标版本第三方编辑器对应的数据存储格式,生成对应的目标应用工程。其中目标版本的第三方编辑器可以是相同第三方编辑器的任何版本。

步骤s310d,使用目标第三方编辑器版本对应的第三方编辑器打开目标应用工程。

具体地,目标版本的第三方编辑器获取目标应用工程,通过用户操作指令打开目标应用过程,并进行后续编译仿真操作。

本实施例中,提供各个第三方编辑器之间的转换功能,能够使用不同版本的第三方编辑器打开相同的应用工程,提高了系统的兼容性,简化了仿真系统的操作。

如图7所示,在一个实施例中,支付终端应用仿真方法还包括:

步骤s340,当检测到自定义应用程序对应的仿真结果达到预设要求时,调用预先集成的编译器解析自定义应用程序目录结构,自动生成对应的脚本文件。

具体地,预先在仿真系统中集成编译器,如gcc编译器,当在第三方编辑器中根据仿真结果调试修改自定义应用程序,使自定义应用程序对应的支付终端的应用功能仿真结果达到预设要求时,调用预先集成的编译器,自动解析自定义应用程序的目录结构,通过执行rebuild命令对自定义应用程序中的修改过的代码进行编译链接生成对应的makefile文件或rebuildall命令重新编译自定义应用程序所有代码生成对应的makefile文件,makefile文件是一种脚本文件。

步骤s350,将脚本文件编译生成支付终端目标文件,并下载至支付终端。

具体地,调用预先集成的编译器对应的编译源代码,对makefile文件进行编译生成支付终端对应的目标二进制文件,将编译后的目标二进制文件下载至支付终端,使支付终端实现相应功能。整个编译链接过程使用管道读取的方式显示在仿真界面上,显示编译过程中出现的错误、警告或其他编译信息。

本实施例中,预先存储的编译器能够自动将仿真符合预设要求的自定义应用程序编译链接成支付终端对应的目标二进制文件,简化了编译操作过程,降低了操作复杂度。

如图8所示,在一个具体实施例中,以在windows系统下,使用vs编辑器为例,提供一种支付终端应用仿真方法,包括以下内容:

步骤s401,当检测到vs版本有更新时,发出提醒通知更新vs版本。

其中,vs(microsoftvisualstudio,美国微软公司的开发工具包系列产品)。vs是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具。通过比较本地xml文件中的版本信息和服务器xml文件中的版本检测是否有vs版本更新,当有vs版本更新时,发出提醒,获取对应的更新指令使用更新模块更新vs版本。

步骤s402,更新完成后,检测当前存在的vs版本并显示在仿真系统显示界面。

步骤s403,获取预先选择的当前vs版本打开对应的当前应用工程。

具体地,在当前windows系统中存在的vs版本中选择任意一个vs版本打开应用工程。其中应用工程可以是已经创建并保存的应用工程,也可以是新建的应用工程。进一步地,可以根据需要添加应用工程或删除应用工程。

步骤s404,获取目标版本vs,将当前应用工程转换为能够在目标版本vs中打开的应用工程。

具体地,能够支持vs版本间的转换功能,应用工程在一个vs版本下打开或者使用一个vs版本保存后,可以使用其他vs版本再次打开。如当前应用工程在vs2003版本对应的应用工程文件中,当使用vs2007版本打开该应用工程时,获取该应用工程对应的名称和存储路径,使用转换函数将应用工程的数据存储格式转换为vs2007版本能够打开的数据格式,将转换后的应用工程保存至vs2007版本对应的应用工程文件中,使用vs2007打开该应用工程。

步骤s405,获取应用工程中的自定义应用程序,将自定义应用程序转换成二进制文件,并将二进制文件与entry模块和windows动态库编译链接生成可执行文件。

如图9所示,entry为一个静态库,封装了winmain函数,winmain函数是windows平台应用程序的默认入口函数,自定义应用程序为c语言程序,入口函数为main函数,通过将自定义应用程序转换为二进制文件,并与静态库编译链接,能够将自定义应用程序的入口函数变为winmain函数,从而启动windows平台应用程序入口机制。

进一步地,windows动态库是指payprocore模块,由entry模块启动后接管windows消息循环,能够提供界面交互功能和仿真功能。将自定义应用程序对应的二进制文件与entry模块以及payprocore模块编译链接生成可执行文件。

步骤s406,执行可执行文件,调用自定义应用程序接口函数,判断是否可以直接仿真,若是,则执行步骤s407,若否,则执行步骤s408。

具体地,获取自定义应用程序的main函数地址,调用main函数并启动payprocore模块,执行自定义应用程序,自定义应用程序中包括多个接口函数,payprocore模块中存储有多个接口函数,由于payprocore模块是windows平台中的动态库,对于有些硬件模块无法直接在windows平台中进行仿真,如rf模块,由于windows中不存在rf模块对应的硬件,因此无法提供对应的仿真环境。根据调用的接口函数判断windows平台是否能够直接仿真,若是,则执行则执行步骤s407,若否,则执行步骤s408。

步骤s407,直接在windows平台进行仿真,并输出仿真结果。

具体地,调用payprocore模块中对应的接口函数,直接在windows平台对相应功能进行仿真,并输出仿真结果。进一步地,在进行仿真之前,payprocore模块调用相关函数对仿真环境进行初始化,并释放仿真资源,为后续仿真提供环境。

步骤s408,发送仿真命令至pos终端,获取pos终端返回的仿真结果。

具体地,如windows平台无法提供当前接口函数功能的仿真环境,则获取调用的接口函数,将该接口函数按照如图10所示的数据格式发送至pos终端,其中a1为整体的发送格式,b1为a1中的数据内容的详细格式,c1为b1中每个参数的详细格式。pos终端接收调用的接口函数,payprocore模块使用_declspec形式导出厂商定义的posapi函数,posapi函数是指pos终端的接口函数。pos终端根据接口函数调用对应的posapi函数,对该功能进行仿真,并按照如图11所示的数据格式将仿真结果返回至windows平台所在的移动终端,其中a2为整体的发送格式,b2为a2中的执行结果对应的数据内容的详细格式,c2为b2中每个参数的详细格式。

步骤s409,在仿真界面上显示仿真结果。

具体地,将mfc和directui界面库相结合,对不同pos机型对应的仿真界面进行仿真,简化机型添加流程,并使用duilib库进行解析,清晰易懂,方便快捷。其中mfc(microsoftfoundationclasses,微软基础类)是一个微软公司提供的类库,以c++类的形式封装了windowsapi,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量windows句柄封装类和很多windows的内建控件和组件的封装类。directui界面库是指直接在父窗口上绘图(paintonparentdcdirectly)。即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上。duilib库是国内首个界面开源库,一款强大的界面开发工具,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率。

使用xml文件描述pos机型对应的屏幕和按键特性。xml描述采用三级目录,第一级是仿真窗口大小,第二级是窗口背景描述,第三级是屏幕和按键描述。分别使用不同的控制描述屏幕和按键,并分别设置属性描述,描述屏幕和按键的大小以及对应属性,如描述黑白屏或彩屏属性、描述是否为触摸屏的属性参数、以及描述屏幕有效区域的属性参数和屏幕初始化属性参数等,描述按键是否为虚拟按键的属性参数。

进一步地,在仿真界面显示仿真结果之前,首先根据对应的pos终端的机型初始化仿真界面,调用duilib库解析屏幕属性参数,创建对应的绘图区域并确定绘图区域大小,初始化后获取仿真结果对应的数据更新初始化仿真界面进行显示。

步骤s410,调用预先存储的编译器将仿真结果满足预设条件的可执行文件编译为pos终端对应的目标二进制文件,下载至pos终端。

具体地,预先在payprocore模块中集成gcc编译器,获取可执行文件,将可执行文件编译成pos终端对应的目标二进制文件,下载至pos终端,实现pos终端对应的应用功能。

本实施例中,通过将自定义应用程序与windows入口函数以及windows动态库编译链接成可执行文件,将pos终端对应的应用程序转换为能够在windows平台执行的可执行文件,利用windows界面进行仿真,并且根据自定义应用程序的接口函数在windows平台仿真或者与pos终端交互仿真,将仿真结果显示在仿真界面,能够实时根据仿真结果对自定义应用程序进行调试,在调试完成后根据预先集成的编译器能够直接生成pos终端能够执行的目标程序,简化了pos终端应用功能程序的调试、编译过程,提高了应用开发的效率。

如图12所示,在一个实施例中,提供一种支付终端应用仿真装置,包括:

应用工程获取模块1210,用于检测第三方编辑器版本,根据预先选择的第三方编辑器版本使用对应的第三方编辑器打开对应的应用工程。

可执行文件生成模块1220,用于获取应用工程中的自定义应用程序,使用第三方编辑器编译自定义应用程序,将自定义应用程序与预设静态库及预设动态库链接生成可执行文件。

仿真模块1230,用于执行可执行文件,对自定义应用程序的功能进行仿真。

如图13所示,在一个实施例中,仿真模块1230包括:

调用模块1230a,用于调用所述可执行文件中的预设静态库入口函数,根据所述预设静态库入口函数启动所述预设动态库,并获取所述自定义应用程序对应的入口函数地址。

api获取模块1230b,用于根据所述入口函数地址获取所述自定义应用程序对应的入口函数,开始执行所述自定义应用程序,读取所述自定义应用程序执行的当前应用程序编程接口api。

检测模块1230c,用于检测所述预设动态库中是否存在与所述当前api对应的接口函数。

仿真执行模块1230d,用于若存在,则调用所述预设动态库中对应的接口函数,根据所述当前api对应的接口函数参数进行仿真执行,得到执行结果。

交互执行模块1230e,用于若不存在,则将所述当前应用程序编程接口对应的接口函数参数发送至支付终端,接收所述支付终端返回的执行结果。

显示模块1230f,用于在仿真界面显示所述执行结果。

如图14所示,在一个实施例中,显示模块1230f还包括:

初始化仿真界面建立模块1231,用于获取目标设备环境句柄和数据缓存地址,调用绘制函数操作所述目标设备环境句柄或将屏幕初始化数据映射到所述数据缓存地址上,以在绘图区域绘制初始化仿真界面。

更新模块1232,用于调用加载数据函数将执行结果对应的目标数据复制到绘图区域上,更新初始化仿真界面,在仿真界面显示执行结果。

如图15所示,在一个实施例中,应用工程获取模块1210包括:

编辑器检测模块1210a,用于检测第三方编辑器版本,在显示界面显示检测到的第三方编辑器版本。

创建模块1210b,用于根据作用于显示界面的操作指令,调用创建函数创建当前应用工程。

应用工程生成模块1210c,用于获取当前应用工程对应的名称和保存路径,将当前应用工程对应的数据格式转换为目标第三方编辑器版本对应的数据格式,生成目标应用工程,使用目标第三方编辑器版本对应的第三方编辑器打开目标应用工程。

如图16所示,在一个实施例中,支付终端应用仿真装置还包括:

编译下载模块1240,用于当检测到自定义应用程序对应的仿真结果达到预设要求时,解析自定义源代码目录结构,自动生成对应的脚本文件,调用预先集成的编译器将脚本文件编译生成支付终端目标文件,并下载至支付终端。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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