MT明泰读卡器API接口函数库使用说明书文档格式.docx
《MT明泰读卡器API接口函数库使用说明书文档格式.docx》由会员分享,可在线阅读,更多相关《MT明泰读卡器API接口函数库使用说明书文档格式.docx(68页珍藏版)》请在冰豆网上搜索。
增加二代证读取信息扩展接口
杨亚军
2013-08-08
增加获取设备状态函数
傅冲
2013-09-18
增加EERPOM操作
2013-10-12
增加设置磁条卡模式函数
2014-06-03
二代证相关操作函数与调用说明完善
余菊萍
2014-06-10
增加1604卡、删除二代证照片文件接口
2014-06-17
增加二代证扩展二接口与设置保存二代证照片名字的接口
2014-06-30
增加二代证接口扩展三与wlt转bmp函数
2014-07-07
增加金融IC卡读某某与卡号函数
蔡拔群
2014-07-24
实现AT88SC1604卡伪个人化
2014-11-06
修改二代证解码动态库动态加载失败的问题与磁条卡读取的BUG、添加二代证调用流程图
2014-12-24
打开设备端口做了处理,如果已经打开就不再去打开,增加了获取接触、非接卡片是否存在、安全模块是否存在的
2015-01-16
增加AT24C卡包括AT24C01、AT24C02、AT24C04、AT24C08、AT24C16、AT24C32、AT24C64、AT24C128、AT24C256
2015-01-23
增加LED4个灯灭、亮、闪烁控制
2015-01-27
增加非接触式CPU卡卡状态获取:
无卡、一X卡、多X卡
2015-04-20
增加接触卡、非接A卡,非接B卡到位状态获取:
无卡、有卡
1.文档概述
1.1.文档X围
该手册主要介绍二代证读写器、相关接口函数库的使用以与相关API的介绍。
在附录中介绍了读写器支持的卡型的卡片特性。
1.2.面向对象
购置了二代证读写器,欲使用二代证读写器进展二次开发的开发人员。
1.3.参考资料
(农行)金融IC卡读写器通讯协议说明
2.函数库介绍
2.1.功能
API函数库提供了使用二代证读卡器对卡片操作时所用到的函数接口,包括以下几个方面:
A.设备操作函数组
B.接触式卡片操作函数
C.非接触式卡片操作函数
D.某某操作函数
E.磁条卡操作函数
F.外挂键盘操作函数
2.2.性能
1.读写器通过串口或HID无驱设备与PC机进展通讯,不需要安装驱动程序。
2.API接口函数库封装了通过PC机来操作二代证读卡器时用到的各个函数,用户在执行操作时,只需调用相应的函数接口即可,不需要编写对读卡器的操作函数。
3.运行环境
3.1.硬设备
为运行本产品,您需要的硬设备的最小配置如下:
A.处理器:
80X86
B.内存:
64KB
C.
D.USB接口一个
E.RS232串口一个
3.2.软件的运行平台
为运行本产品,您需要的支持软件如下:
A.操作系统:
Win7/WindowsVista/Win2003/WinXP/Win2000;
B.程序编写工具:
VC/VB/PB/Delphi等;
3.3.函数调用方法
3.3.1.Delphi调用32位动态库的方法
语法:
[PublicPrivate|protected]FunctionFunctionName([Var][Arg1:
DataType1;
][Arg2:
DataType2;
...])[:
ReturnDataType];
far;
stdcall;
external‘libname’[NameAliasName];
调用语句的语法包含下面局部:
●关键字Public〔可选〕,表示函数可以被程序代码中的任意局部访问。
●关键字Private〔可选〕,表示函数在声明类的单元〔源代码〕外不能访问。
●关键字Protected〔可选〕,表示保护函数,保护元素只能被当前类和它的子类访问。
●关键字Function〔必选〕,表示调用函数,函数有返回值。
●FunctionName〔必选〕,调用外部函数的名称,区分大小写。
●关键字Var〔可选〕,表示通过引用传递参数,函数参数可以用值传递,也可以通过引用传递。
通过引用传递参数,它的值没被复制到存放函数例程参数的堆栈中,程序执行速度快。
通过引用传值,将允许过程和函数改变参数的值。
●ArgN:
DataTypeN〔可选〕,参数名以与参数类型,传递的参数类型可以是:
Shorint,Smallint,Longint,Integer(16/32),Single,Double,Extended,Currency,Date,Pchar,Object,Variant等。
●ReturnType〔可选〕,函数返回值的类型。
●Stdcall〔必选〕,表示传递约定,这样调用模块〔应用程序〕,与被调用模块〔DLL〕就使用一样的参数约定。
●关键字external〔必选〕,声明访问外部函数。
●Libname〔必选〕,访问的DLL名称,16位Delphi中外部声明不带扩展名的库名。
●Name‘AliasName’〔可选〕,Name指令可以为外部函数起别名,防止与系统例程和函数名称冲突。
外部程序调用的DLL函数,必须遵照如下规如此:
〔1〕必须列在DLL的exports子句中。
〔2〕在Delphi3中,调用函数还需被声明为stdcall,来使用标准的WIN32参数传递技术。
代替优化的register参数传递技术。
〔3〕在WIN32中,DLL可以使用全局数据,该数据将不会通过调用应用程序来分享,每当应用程序装载DLL时,它在自己的地址空间中存储着DLL的全部数据。
注:
详细请参考ICCard\EXAMPLES目录下的使用X例。
3.3.2.VB调用32位动态库的方法
[Public|Private]DeclareFunctionnameLib"
libname"
[Alias"
aliasname"
][([arglist])][Astype]
Declare语句的语法包含下面局部:
●Public〔可选〕用于声明在所有模块中的所有过程都可以使用的函数。
●Private〔可选〕,用于声明只能在包含该声明的模块中使用的函数。
●Name〔必选〕,任何合法的函数名。
动态库的入口处〔entrypoints〕区分大小写。
●Libname〔必选〕,包含所声明的函数动态库名或代码资源名。
●Alias〔可选〕,表示将被调用的函数在动态库(DLL)中还有另外的名称。
当外部函数名与某个函数重名时,就可以使用这个参数。
当动态库的函数与同一X围内的公用变量、常数或任何其它过程的名称一样时,也可以使用Alias。
如果该动态库函数中的某个字符不符合动态库的命名约定时,也可以使用Alias。
●Aliasname〔可选〕动态库。
如果首字符不是数字符号(#),如此aliasname是动态库中该函数入口处的名称。
如果首字符是(#),如此随后的字符必须指定该函数入口处的顺序号。
●Arglist〔可选〕,代表调用该函数时需要传递参数的变量表。
●Type〔可选〕,Function返回值的数据类型;
可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal〔目前尚不支持〕、Date、String〔只支持变长〕或Variant,用户定义类型,或对象类型。
arglist参数的语法如下:
[Optional][ByVal|ByRef][ParamArray]varname[()][Astype]
局部描述:
●Optional〔可选〕,表示参数不是必需的。
如果使用该选项,如此arglist中的后续参数都必需是可选的,而且必须都使用Optional关键字声明。
如果使用了ParamArray,如此任何参数都不能使用Optional。
●ByVal〔可选〕,表示该参数按值传递。
●ByRef〔可选〕,表示该参数按地址传递。
●ParamArray〔可选〕,只用于arglist的最后一个参数,表示最后参数是一个Variant元素的Optional数组。
使用ParamArray关键字可以提供任意数目的参数。
ParamArray关键字不能与ByVal、ByRef或Optional一起使用。
●Varname〔必选〕,代表传给该函数参数的变量名;
遵循标准的变量命名约定。
●()对数组变量是必需的。
指明varname是一个数组。
●type〔可选〕,传递给函数参数的数据类型;
可以是除Decimal以外的任何类型。
说明:
Function的数据类型决定其返回值的数据类型。
可以在arglist之后使用As子句来指定函数返回值的数据类型。
在arglist中,可以使用As子句来指定任何传给该函数参数的数据类型。
不单可以指定为任何标准数据类型,还可以在arglist中指定AsAny来禁止类型检查,从而允许将任意数据类型传递给该函数。
空圆括号表示该Function没有参数,且VisualBasic应确保不会传递任何参数。
注意:
〔1〕当所调用的外部函数需要一个值为0的字符串时,就要使用vbNullString常数。
该常数与零长度字符串("
"
)是不一样的。
〔2〕VB5调用32位动态库,对于ASCII码值大于128的读写操作,请参考Examples中24系列的BYREF传递方式;
16位动态库可以直接使用CHR函数转换。
〔3〕详细请参考ICCard\EXAMPLES目录下的使用X例。
3.3.3.VC调用32位动态库的方法
〔1〕在.CPP中包含“mtx_32.h〞头文件;
〔2〕在工程文件中参加mtx_32.lib文件。
〔3〕在C:
\WINDOWS\system32或工程文件中参加文件。
4.API介绍
4.1.函数调用流程
4.1.1.非接触式存储卡API调用流程
建立连接成功后软件中基于Mifareone卡测试一般的操作过程是:
读数
建立连接->
寻卡->
验证写数据中止卡片
值操作
4.1.2.非接触式CPU卡片API调用流程
软件中基于非接触CPU卡片,一般的操作过程是:
建立连接成功->
打开卡片->
发送APDU命令->
设置卡片状态为halt->
中止卡片操作
4.1.3.接触式CPU卡片API调用流程
软件中基于接触式CPU卡片,一般的操作过程是:
上电复位->
获取卡片状态/发送APDU命令->
卡片下电。
4.1.4.接触式存储卡片API调用流程
软件中基于接触式存储卡片,一般的操作过程是:
设置存储卡种类->
识别存储卡种类->
密码校验->
读数据/写数据/更改密码
4.1.5.某某API调用流程
软件中基于某某,一般的操作过程是:
目前我们的二代证接口有五套操作接口,下面分别对五套接口的操作流程都做一下详细描述,具体如下:
1.对于只需要读取二