MT明泰读卡器API接口函数库使用说明.docx

上传人:b****7 文档编号:9278388 上传时间:2023-02-04 格式:DOCX 页数:84 大小:274.52KB
下载 相关 举报
MT明泰读卡器API接口函数库使用说明.docx_第1页
第1页 / 共84页
MT明泰读卡器API接口函数库使用说明.docx_第2页
第2页 / 共84页
MT明泰读卡器API接口函数库使用说明.docx_第3页
第3页 / 共84页
MT明泰读卡器API接口函数库使用说明.docx_第4页
第4页 / 共84页
MT明泰读卡器API接口函数库使用说明.docx_第5页
第5页 / 共84页
点击查看更多>>
下载资源
资源描述

MT明泰读卡器API接口函数库使用说明.docx

《MT明泰读卡器API接口函数库使用说明.docx》由会员分享,可在线阅读,更多相关《MT明泰读卡器API接口函数库使用说明.docx(84页珍藏版)》请在冰豆网上搜索。

MT明泰读卡器API接口函数库使用说明.docx

MT明泰读卡器API接口函数库使用说明

API接口函数库使用说明

内部文件:

V1.0.20

发布时间:

2015-04-29

版本更新记录

版本

发布时间

修订章节

作者

V.1.0.0

2011-04-18

建立文档

V1.0.1

2011-05-24

增加“接触式存储卡操作指令”

VI.0.2

2011-11-28

增加读序列号及磁条卡读数据命令

VI.0.3

2012-11-01

增加CPU卡波特率384000

林锐彬

V1.0.4

2013-01-15

增加密码键盘

林锐彬

VI.0.5

2013-08-02

增加二代证读取信息扩展接口

杨亚军

VI.0.6

2013-08-08

增加获取设备状态函数

傅冲

VI.0.7

2013-09-18

增力「EERPOM操作

傅冲

VI.0.8

2013-10-12

增加设置磁条卡模式函数

傅冲

VI.0.9

2014-06-03

二代证相关操作函数及调用说明完善

余菊萍

V1.0.10

2014-06-10

增加1604卡、删除二代证照片文件接口

杨亚军

V1.0.1

1

2014-06-17

增加二代证扩展二接口及设置保存二代证照片名字的接口

杨亚军

V1.0.1

2

2014-06-30

增加二代证接口扩展三及wit转bmp函数

杨亚军

V1.0.1.

3

2014-07-07

增加金融IC卡读姓名与卡号函数

蔡拔群

V1.0.1

4

2014-07-24

实现AT88SC1604卡伪个人化

杨亚军

V1.0.1

5

2014-11-06

修改二代证解码动态库动态加载失败的问题及磁条卡读取的BUG、添加二代证调用流程图

杨亚军

V1.0.1

6

2014-12-24

打开设备端口做了处理,如果已经打开就不再去打开,增加了获取接触、非接卡片是否存在、安全模块是否存在的

杨亚军

V1.0.1

7

2015-01-16

增加AT24C卡包括AT24C01.AT24C02.

AT24C04.AT24C08.AT24C16.AT24C32.

AT24C64.AT24C128.AT24C256

杨亚军

V1.0.1

8

2015-01-23

增加LED4个灯灭、亮、闪烁控制

杨亚军

V1.0.1

9

2015-01-27

增加非接触式CPU卡卡状态获取:

无卡、一张卡、多张卡

杨亚军

VI.0.20

2015-04-20

增加接触卡、非接A卡,非接B卡到位状态获取:

无卡、有卡

余菊萍

API接口函数库使用说明1

1.文档概述6

1.1.文档范围6

1.2.面向对象6

1.3.参考资料6

2.函数库介绍6

2.1.功能6

3.2.性能6

3.运行环境7

3.1.硬设备7

3.2.软件的运行平台7

4.3.函数调用方法8

3.3.1.Delphi调用32位动态库的方法8

4.3.2.VB调用32位动态库的方法9

5.3.3.VC调用32位动态库的方法10

5.API介绍11

1.1.函数调用流程11

4.1.1,非接触式存储卡API调用流程11

5.1.2.非接触式CPU卡片API调用流程11

6.1.3.接触式CPU卡片API调用流程11

7.1.4.接触式存储卡片API调用流程11

8.1.5.身份证API调用流程11

9.1.6.函数操作结果信息表15

2.2.设备操作函数组18

4.2.1打开读写器device_open18

5.2.2关闭读写器device_close18

6.2.3判断设备通讯类型device_gettype18

7.2.4设置通讯波特率device_setbaud19

8.2.5获取读写器版本信息device_version19

9.2.6读写器蜂鸣device_beep20

10.2.7LED灯控制device-ledctrl20

11.2.8获取读写器生产序列号device_readsnr20

12.2.9获取设备状态get_device_status21

13.2.10读取读卡器的EEPR0M22

14.2.11更新读卡器的EEPR0M22

15.2.12复位串口配置信息ReSetupComm23

16.2.13读卡器软复位device_reset23

17.2.14获取设备状态扩展get_device_statusEx23

18.2.15获取非接触式CPU卡卡片状态dev.cardstate24

19.2.16获取接触式CPU卡到位状态ICC_GetStatus25

20.2.17读EMID号Dev_GetEMID25

4.3接触式卡片操作函数26

4.3.1判断接触式卡片状态sam_slt_getstate26

4.3.2接触式卡片上电复位sam_slt_reset26

4.3.3接触式卡设置复位波特率sam_s1t_reset_baud27

4.3.4接触式卡片下电sam_slt_powerdown27

4.4.非接触CPU卡函数28

4.4.1激活非接触式卡open_card28

5.4.2设置非接触式卡片为halt状态rf_halt29

4.4.3应用层传输命令card_APDU29

4.5非接触式存储卡操作函数30

4.5.1激活非接触式存储卡rf_card30

5.5.2非接触式存储卡认证扇区rf_authentication32

6.5.3非接触式存储卡读数据rf_read32

7.5.4非接触式存储卡写数据rf_write33

8.5.5非接触式存储卡读值块rf.readval33

9.5.6非接触式存储卡写值块rf_initval34

10.5.7非接触式存储卡加值rf_increment34

11.5.8IF接触式存储卡减值rf_decrement35

12.5.9非接触式存储卡值传送rf_transfer35

4.6二代身份证操作函数35

4.6.1卡操作指令-身份证读卡IDCard_Read36

5.6.2卡操作指令一身份证读卡IDCard_ReadCard38

6.6.3卡操作指令根据索引获取身份证数据IDCard_GetCardInfo38

7.6.4获取二代证模块IDIDCard.GetModelD39

8.6.5身份证读卡模块扩展一IDCard_ReadCard_Extra39

9.6.6设置二代证照片存储路径IDCard_SetPhotoPath40

10.6.7设置二代证照片名字IDCard_SetPhotoName40

11.6.8读二代证信息扩展二IDCard.ReadCard.Ex40

12.6.9删除所有二代证照片文件delete_all_photofile42

13.6.10获取卡ID号IDCard_Read」DNUM42

14.6.11获取卡姓名IDCard.Name43

15.6.12获取卡性别IDCard_Sex43

16.6.13获取卡名族IDCard.Nation44

17.6.14获取卡出生日期IDCard_Birthday44

18.6.15获取卡出生地址IDCard_Address45

19.6.16获取卡身份证号IDCard.IDNumber45

20.6.17获取卡签发机构IDCard」ssueD叩artment46

21.6.18获取卡有效期起始日期IDCard_ValidFromDate46

22.6.19获取卡有效期截止日期IDCard_ValidExpiryDate47

23.6.20获取卡预留信息IDCard_Reserve47

24.6.21获取非接触式卡片类型CLCard.Open48

25.6.22获得读卡过程中生成文件的Base64编码GetFileBase64Buffer48

26.6.23读取二代证信息扩展三IDCard_ReadCard_ExTwo49

27.6.24wit转bmp文件iWlttoBmp49

28.6.25读二代证追加信息50

4.7工具函数50

4.7.1将16进制数转换为ASCII字符hex_asc50

5.7.2将ASCII字符转换为16进制数asc_hex51

6.7.3DES算法加密函数rf_encrypt51

7.7.4DES算法解密函数rf.decrypt52

8.7.5将16进制数转换为Base64字符hex_base6453

9.7.6将Base64字符转换为16进制数base64_hex53

10.7.7DES算法力口密函数des_encrypt54

11.7.8DES算法解密函数des.decrypt55

12.7.9IDES算法加密函数des3_encrypt55

13.7.10IDES算法解密函数des3_decrypt56

14.7.11将ASCII字符转换为10进制数asc_dec57

4.8接触式存储卡操作函数57

4.8.1设置接触式存储卡种类contact_settype58

5.8.2识别接触式存储卡种类centact_identifytype59

6.8.3接触式存储卡密码校验contact_passwordcheck60

7.8.4接触式存储卡读数据contact_read60

8.8.5接触式存储卡写数据contact_write61

9.8.6接触式存储卡密码初始化(更改密码)contact_passwordinit61

4.9磁条卡操作函数62

4.9.1获取磁条卡数据magnetic_read62

4.9.2设置磁条卡数据输出方式set_magnetic_mode63

4.10外挂密码键盘63

4.10.1密码键盘下载主密钥63

4.10.2密码键盘下载工作密钥(密钥为密文)64

4.10.3密码键盘激活主密钥和工作密钥65

4.10.4密码键盘设置键盘输入密码的长度65

4.10.5密码键盘设置键盘超时时间65

4.10.6获取键盘输入的密码(明文传输)66

4.10.7获取键盘输入的密码(密文传输)66

4.11AT88SC1604卡67

4.11.1读数据srd_160467

4.11.2写数据swr_160168

4.11.3校验应用区密码csc_160468

4.11.4校验擦除密码cesc_160469

4.11.5擦除数据ser_160469

4.11.6写密码wsc_160470

4.11.7伪个人化fakefus_160471

4.11.8个人化psnl_160471

4.12金融IC卡71

4.12.1读取金融IC卡卡号和姓名72

1.文档概述

1.1.文档范

该手册主要介绍二代证读写器、相关接口函数库的使用以及相关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.硬盘:

2.0GB

D.USB接口一个

E.RS232串口一个

3.2.软件的运行平台

为运行本产品,您需要的支持软件如下:

A.操作系统:

Win7/WindowsVistaAVin2OO3AVinXPAVrin2OOO:

B.程序编写工具:

VC/VB/PB/Delphi等:

3.3.函数调用方法

3.3.1.Delphi调用32位动态库的方法

语法:

[PublicPrivateIprotected]FunctionFunctionName([Var][Arg1:

DatalXpe1;][Arg2:

DataI\pe2;...])[:

ReturnDataType];far;stdcall;externaFlibname,[NameAliasName];

调用语句的语法包含下而部分:

•关键字Public(可选),表示函数可以被程序代码中的任意部分访问。

•关键字Private(可选),表示函数在声明类的单元(源代码)外不能访问。

•关键字Protected(可选),表示保护函数,保护元素只能被当前类和它的子类访问。

•关键字Function(必选),表示调用函数,函数有返回值。

•FunctionName(必选),调用外部函数的名称,区分大小写。

•关键字Var(可选),表示通过引用传递参数,函数参数可以用值传递,也可以通过引用传递。

通过引用传递参数,它的值没被复制到存放函数例程参数的堆栈中,程序执行速度快。

通过引用传值,将允许过程和函数改变参数的值。

•ArgN:

DataT\-peN(可选),参数名以及参数类型,传递的参数类型可以是:

Shorint,Smallint,Longint,Integer(16/32),Single,Double,Extended,Currency,Date,Pchar,Object,Variant等。

•Rctumiype(可选),函数返回值的类型。

•Stdcall(必选),表示传递约定,这样调用模块(应用程序),与被调用模块(DLL)就使用相同的参数约定。

•关键字external(必选),声明访问外部函数。

•Libnamc(必选),访问的DLL名称,16位Delphi中外部声明不带扩展名的库名。

•Name'AliasName'(可选),Name指令可以为外部函数起别名,避免与系统例程和函数名称冲突。

外部程序调用的DLL函数,必须遵照下列规则:

(1)必须列在DLL的exports子句中。

(2)在Delphi3中,调用函数还需被声明为stdcall,来使用标准的WIN32参数传递技术。

代替优化的register参数传递技术。

(3)在WIN32中,DLL可以使用全局数据,该数据将不会通过调用应用程序来分享,每当应用程序装载DLL时,它在自己的地址空间中存储着DLL的全部数据。

注:

详细请参考ICCard\EXAMPLES目录下的使用范例。

3.3.2.VB调用32位动态库的方法

语法:

[PublicIPrivate]DeclareFunctionnameLibMlibnamen[AliasHaliasname9>][([arglist])][Astype]

Declare语句的语法包含下面部分:

•Public(可选)用于声明在所有模块中的所有过程都可以使用的函数。

•Private(可选),用于声明只能在包含该声明的模块中使用的函数。

•Name(必选),任何合法的函数名。

动态链接席的入口处(entrypoints)区分大小写。

•Libnamc(必选),包含所声明的函数动态链接座名或代码资源名。

•Alias(可选),表示将被调用的函数在动态链接库(DLL)中还有另外的名称。

当外部函数名与某个函数重名时,就可以使用这个参数。

当动态链接库的函数与同一范围内的公用变量、常数或任何其它过程的名称相同时,也可以使用Aliaso如果该动态链接库函数中的某个字符不符合动

态链接库的命名约定时,也可以使用Alias0

•Aliasname(可选)动态链接库。

如果首字符不是数字符号(#)*则aliasname是动态链接库中该函数入口处的名称。

如果首字符是(#),则随后的字符必须指定该函数入口处的顺序号。

•Arglist(可选),代表调用该函数时需要传递参数的变量表。

•Type(可选),Function返回值的数据类型:

可以是Byte、BooleaiKIntegerLong、CurrencyxSinglexDouble、Decimal(目前尚不支持)、Date、String(只支持变长)或Variant,用户定义类型,或对象类型。

arglist参数的语法如下:

[Optional][ByVaiIByRef][ParamArray]varname[()][Astype]

部分描述:

•Optional(可选),表示参数不是必需的。

如果使用该选项,贝ijarglist中的后续参数都必需是可选的,而且必须都使用Optional关键字声明。

如果使用了ParamArray,则任何参数都不能使用Optionalo

•ByVai(可选),表示该参数按值传递。

•ByRef(可选),表示该参数按地址传递。

•ParamArray(可选),只用于arglist的最后一个参数,表示最后参数是一个Variant元素的Optional数组。

使用ParamArray关键字可以提供任意数目的参数。

ParamArray关键字不能与ByVaRByRef或Optional一起使用。

•Vamame(必选),代表传给该函数参数的变量名;遵循标准的变量命名约定。

•()对数组变量是必需的。

指明varname是一个数组。

•type(可选),传递给函数参数的数据类型:

可以是除Decin间以外的任何类型。

说明:

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目录下的使用范例。

3.3.3.VC调用32位动态库的方法

(1)在.CPP中包含“mtx_32.1T头文件:

(2)在工程文件中加入mtx_32.Hb文件。

(3)在C:

\WINDOWS\system32或工程文件中加入Getlnfo.dll文件。

4.API介以

4.1.函数调用流程

4.1.1,非接触式存储卡API调用流程

建立连接成功后软件中基于Mifareone卡测试一般的操作过程是:

।■读数

建立连接->寻卡->验证►写数据—►中止卡片

L►值操作

4.1.2.非接触式CPU卡片API调用流程

软件中基于非接触CPU卡片,一般的操作过程是:

建立连接成功->打开卡片->发送APDU命令->设置卡片状态为halt-〉中止卡片操作

4.1.3.接触式CPU卡片API调用流程

软件中基于接触式CPU卡片,一般的操作过程是:

建立连接成功上电复位-)获取卡片状态/发送APDU命令卡片下电。

4.1.4,接触式存储卡片API调用流程

软件中基于接触式存储卡片,一般的操作过程是:

建立连接成功设置存储卡种类->识别存储卡种类->密码校验->读数据/写数据/更改密码

4.1.5.身份证API调用流程

软件中基于身份证,一般的操作过程是:

目前我们的二代证接口有五套操作接口,下面分别对五套接口的操作流程都做一下详细描述,具体如下:

1.对于只需要读取二代证的情况,操作流程如下:

方案1、直接读取身份证信息的UNICODE码,通过返回的UNICODE码传入相关函数获取身份证信息。

建立连接成功-〉读卡,获取身份证信息的UNICODE码(IDCard_Read)->获取姓名(IDCard_Name)/获取性别(IDCard_Sex)・・./(保存照片IDCard_PhotoSave_Ex)->关闭设备流程图如下:

方案2、不需要二代证照片,直接读取身份证信息

建立连接成功->读卡(IDCard_ReadCard)->解析数据(IDCard_GetCardInfo)->关闭设备流程图如下:

方案3、需要设置二代证照片保存全路径(包括照片名字)及获取身份证信息

建立连接成功->读二代证扩展一(IDCard_ReadCard_Extra)解析数据(IDCard_GetCardInfo)->关

闭设备

流程图如下所示:

方案4、需要设置二代证照片路径、照片保存名字、需要照片信息的Base64码.

建立连接成功->设置照片存放路径(IDCard_SetPhotoPath)设置照片名字(IDCard_SetPhotoName)读二代证扩展二(IDCard_ReadCard_Ex)->关闭设备具体流程图如下所示:

注意:

上述四个方案,实际是四个身份证读卡函数,不建议一次二代证读卡,调用四个身份证读卡函数中的多个,

如果只是需要身份证部分信息(比如身份证号码),建议采用方案一:

如果只是需要读取身份证信息的明文,不需要保存照片,可以采用方案二、方案三(照片文件传空)、方案四(照片保存参数填0);

如果需要保存照片,并且指定照片保存的全路径(包括照片名字,比如:

C:

\zp.bmp),那么建议采用方案三;

如果需要修改保存照片的名字或者获取照片信息的Base64码,那么建议采用方案四。

2.对于需要读取多种非接卡的情况,操作流程如下:

建立连接成功->判断卡类型(CLCard.Open)->解析数据(IDCard.GetCardlnfo)关闭设备

4.L6.函数操作结果信息表

说明:

实际返回的错误信息为表中数据的负数形式,例如:

命令超时,返回-0x0011。

StatusH

StatusL

说明

OOH

OOH

命令执行正确回应

OOH

O1H

可选的功能接口或参数不支

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1