delphi开发小白盒接口实现扫码控制
delphi开发意锐小白盒接口实现扫码控制
做扫码支付,有用到意锐小白盒(不是市面上模拟键盘的那种设置),需要进行对接。这种盒子可以通过程序控制打开,关闭和读取条码,的确比键盘的要好用,可以有效的防止客户扫码的时候影响收银员收款。盒子带说明文档和例子,但都是c#或者c++的。和delphi的东西有一部分区别。找了些资料关键点在用到了函数指针实现小白盒程序的回调。转换的过程比较顺利,但是使用的时经常内存报错。把c#的例子重新看了一遍,终于发现是函数的定义上,一定要加上cdecl 。搞了2天,完工…这次的开发熟悉了delphi的结构体,指针,指针函数和函数回调,还是有收获的。下面是转换后的delphi的函数库,有需要源码例子的和我联系:QQ:297554128
unit Inspos_func;interfaceuseswindows, Messages, SysUtils, registry, Variants;type //一是注意定义位置;PAIPAI_INI_PARAM = recordver: Integer; //参数结构体版本号,当前为1spToken: string;devLock: Integer; //设备防切机,0: 不防切机,1:防切机;需和使用的盒子匹配,目前只支持防切机clientShowFun: Integer; //客显截取支持configUI: Integer; //支持配置界面usePrinter: Integer; //控制打印机configInfo: string; //JSON格式的配置信息,UTF-8extentInfo: string;end;PAIPAI_SCENE = recordname: string;stateCount: Integer;end;PAIPAI_DECODE_RESULT = recorddata: pchar;cd: Integer;end;PAIPAI_SCENE_LIST = recordsceneCount: Integer;sceneArray: pchar;end;PAIPAI_EVENT = (BOX_CONNECTED = 1, //InsPOS小盒已连接BOX_DISCONNECTED, //InsPOS小盒断开连接DECODE_SUCCESS, //得到扫码结果TOKEN_INVALID, //服务商TOKEN无效TOKEN_VALID, //初始化设备未连接的情况,保存配置的token,设备连接后,校验token有效后,发送该消息。EVENT_SIZE);PPRet = (PP_NO_ERROR = 0, // No errors.PP_ERROR, PP_NOT_SUPPORTED, PP_API_UNINIT, PP_VERSION_ERROR, PP_NOT_FIND);Tppcallback = function(evt: PAIPAI_EVENT; decode: PChar): integer; cdecl ;function InitialPaipai(HWND: pchar; strPath: PChar; iniParam: PChar): PPRet; cdecl; far; external'libapi.dll' name 'InitialPaipai';function GetApiVersion(): PChar; cdecl; far; external 'libapi.dll' name 'GetApiVersion';function SetSceneState(state: Integer): PPRet; cdecl; far; external 'libapi.dll' name 'SetSceneState';function configSPToken(token: PChar): PPRet; cdecl; far; external 'libapi.dll' name 'configSPToken';function SetScanInterval(milliseconds: integer): PPRet; cdecl; far; external 'libapi.dll' name'SetScanInterval';function GetSceneList(): PChar; cdecl; far; external 'libapi.dll' name 'GetSceneList';function addEventCallback(cl: Tppcallback): PPRet; cdecl; far; external 'libapi.dll' name'addEventCallback';implementationend.