




已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
API接口函数库使用说明 内部文件 V1 0 20 发布时间 2015 04 29 版本更新记录 版本 发布时间 修订章节 作者 V 1 0 0 2011 04 18 建立文档 V1 0 1 2011 05 24 增加 接触式存储卡操作指令 V1 0 2 2011 11 28 增加读序列号及磁条卡读数据命令 V1 0 3 2012 11 01 增加CPU卡波特率384000 林锐彬 V1 0 4 2013 01 15 增加密码键盘 林锐彬 V1 0 5 2013 08 02 增加二代证读取信息扩展接口 杨亚军 V1 0 6 2013 08 08 增加获取设备状态函数 傅冲 V1 0 7 2013 09 18 增加EERPOM操作 傅冲 V1 0 8 2013 10 12 增加设置磁条卡模式函数 傅冲 V1 0 9 2014 06 03 二代证相关操作函数及调用说明完善 余菊萍 V1 0 10 2014 06 10 增加1604卡 删除二代证照片文件接口 杨亚军 V1 0 11 2014 06 17 增加二代证扩展二接口及设置保存二代证照片名字的接口 杨亚军 V1 0 12 2014 06 30 增加二代证接口扩展三及wlt转bmp函数 杨亚军 V1 0 1 3 2014 07 07 增加金融IC卡读姓名与卡号函数 蔡拔群 V1 0 14 2014 07 24 实现AT88SC1604卡伪个人化 杨亚军 V1 0 15 2014 11 06 修改二代证解码动态库动态加载失败的问题及磁条卡读取的BUG 添加二代证调用流程图 杨亚军 V1 0 16 2014 12 24 打开设备端口做了处理 如果已经打开就不再去打开 增加了获取接触 非接卡片是否存在 安全模块是否存在的 杨亚军 V1 0 17 2015 01 16 增加AT24C卡包括AT24C01 AT24C02 AT24C04 AT24C08 AT24C16 AT24C32 AT24C64 AT24C128 AT24C256 杨亚军 V1 0 18 2015 01 23 增加LED 4个灯灭 亮 闪烁控制 杨亚军 V1 0 19 2015 01 27 增加非接触式CPU卡卡状态获取 无卡 一张卡 多张卡 杨亚军 V1 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 2 2 性能 6 3 运行环境 7 3 1 硬设备 7 3 2 软件的运行平台 7 3 3 函数调用方法 8 3 3 1 Delphi调用32位动态库的方法 8 3 3 2 VB调用32位动态库的方法 9 3 3 3 VC调用32位动态库的方法 10 4 API介绍 11 4 1 函数调用流程 11 4 1 1 非接触式存储卡API调用流程 11 4 1 2 非接触式CPU卡片API调用流程 11 4 1 3 接触式CPU卡片API调用流程 11 4 1 4 接触式存储卡片API调用流程 11 4 1 5 身份证API调用流程 11 4 1 6 函数操作结果信息表 15 4 2 设备操作函数组 18 4 2 1 打开读写器device open 18 4 2 2 关闭读写器device close 18 4 2 3 判断设备通讯类型device gettype 18 4 2 4 设置通讯波特率device setbaud 19 4 2 5 获取读写器版本信息device version 19 4 2 6 读写器蜂鸣device beep 20 4 2 7 LED灯控制 device ledctrl 20 4 2 8 获取读写器生产序列号 device readsnr 20 4 2 9 获取设备状态 get device status 21 4 2 10 读取读卡器的EEPROM 22 4 2 11更新读卡器的EEPROM 22 4 2 12 复位串口配置信息 ReSetupComm 23 4 2 13 读卡器软复位 device reset 23 4 2 14 获取设备状态扩展 get device statusEx 23 4 2 15 获取非接触式CPU卡卡片状态 dev cardstate 24 4 2 16 获取接触式CPU卡到位状态 ICC GetStatus 25 4 2 17 读EMID号Dev GetEMID 25 4 3 接触式卡片操作函数 26 4 3 1 判断接触式卡片状态sam slt getstate 26 4 3 2 接触式卡片上电复位sam slt reset 26 4 3 3 接触式卡设置复位波特率sam slt reset baud 27 4 3 4 接触式卡片下电sam slt powerdown 27 4 4 非接触 CPU 卡函数 28 4 4 1 激活非接触式卡open card 28 4 4 2 设置非接触式卡片为halt状态 rf halt 29 4 4 3 应用层传输命令card APDU 29 4 5 非接触式存储卡操作函数 30 4 5 1 激活非接触式存储卡rf card 30 4 5 2 非接触式存储卡认证扇区 rf authentication 32 4 5 3 非接触式存储卡读数据rf read 32 4 5 4 非接触式存储卡写数据rf write 33 4 5 5 非接触式存储卡读值块rf readval 33 4 5 6 非接触式存储卡写值块rf initval 34 4 5 7 非接触式存储卡加值rf increment 34 4 5 8 非接触式存储卡减值rf decrement 35 4 5 9 非接触式存储卡值传送 rf transfer 35 4 6 二代身份证操作函数 35 4 6 1 卡操作指令 身份证读卡IDCard Read 36 4 6 2 卡操作指令 身份证读卡IDCard ReadCard 38 4 6 3卡操作指令 根据索引获取身份证数据IDCard GetCardInfo 38 4 6 4 获取二代证模块ID IDCard GetModeID 39 4 6 5 身份证读卡模块扩展一IDCard ReadCard Extra 39 4 6 6 设置二代证照片存储路径 IDCard SetPhotoPath 40 4 6 7 设置二代证照片名字 IDCard SetPhotoName 40 4 6 8 读二代证信息扩展二 IDCard ReadCard Ex 40 4 6 9 删除所有二代证照片文件 delete all photofile 42 4 6 10 获取卡ID号 IDCard Read IDNUM 42 4 6 11 获取卡姓名 IDCard Name 43 4 6 12 获取卡性别 IDCard Sex 43 4 6 13 获取卡名族 IDCard Nation 44 4 6 14 获取卡出生日期 IDCard Birthday 44 4 6 15 获取卡出生地址 IDCard Address 45 4 6 16 获取卡身份证号 IDCard IDNumber 45 4 6 17 获取卡签发机构 IDCard IssueDepartment 46 4 6 18 获取卡有效期起始日期 IDCard ValidFromDate 46 4 6 19 获取卡有效期截止日期 IDCard ValidExpiryDate 47 4 6 20 获取卡预留信息 IDCard Reserve 47 4 6 21 获取非接触式卡片类型 CLCard Open 48 4 6 22 获得读卡过程中生成文件的Base64编码 GetFileBase64Buffer 48 4 6 23 读取二代证信息扩展三 IDCard ReadCard ExTwo 49 4 6 24 wlt转bmp文件 iWlttoBmp 49 4 6 25 读二代证追加信息 50 4 7 工具函数 50 4 7 1 将 16 进制数转换为 ASCII 字符hex asc 50 4 7 2 将 ASCII 字符转换为 16 进制数asc hex 51 4 7 3 DES 算法加密函数rf encrypt 51 4 7 4 DES 算法解密函数 rf decrypt 52 4 7 5 将 16 进制数转换为 Base64 字符hex base64 53 4 7 6 将 Base64字符转换为16进制数base64 hex 53 4 7 7 DES 算法加密函数des encrypt 54 4 7 8 DES 算法解密函数des decrypt 55 4 7 9 TDES 算法加密函数des3 encrypt 55 4 7 10 TDES 算法解密函数des3 decrypt 56 4 7 11 将 ASCII 字符转换为 10 进制数asc dec 57 4 8 接触式存储卡操作函数 57 4 8 1 设置接触式存储卡种类contact settype 58 4 8 2 识别接触式存储卡种类contact identifytype 59 4 8 3 接触式存储卡密码校验contact passwordcheck 60 4 8 4 接触式存储卡读数据contact read 60 4 8 5 接触式存储卡写数据contact write 61 4 8 6 接触式存储卡密码初始化 更改密码 contact passwordinit 61 4 9 磁条卡操作函数 62 4 9 1 获取磁条卡数据magnetic read 62 4 9 2 设置磁条卡数据输出方式set magnetic mode 63 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 11 AT88SC1604卡 67 4 11 1 读数据 srd 1604 67 4 11 2 写数据 swr 1604 68 4 11 3 校验应用区密码 csc 1604 68 4 11 4 校验擦除密码 cesc 1604 69 4 11 5 擦除数据 ser 1604 69 4 11 6 写密码 wsc 1604 70 4 11 7 伪个人化 fakefus 1604 71 4 11 8 个人化 psnl 1604 71 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 操作系统 Win 7 Windows Vista Win2003 WinXP Win2000 B 程序编写工具 VC VB PB Delphi等 3 3 函数调用方法 3 3 1 Delphi调用32位动态库的方法 语法 Public Private protected Function FunctionName Var Arg1 DataType1 Arg2 DataType2 ReturnDataType far stdcall external libname Name AliasName 调用语句的语法包含下面部分 l 关键字Public 可选 表示函数可以被程序代码中的任意部分访问 l 关键字Private 可选 表示函数在声明类的单元 源代码 外不能访问 l 关键字Protected 可选 表示保护函数 保护元素只能被当前类和它的子类访问 l 关键字Function 必选 表示调用函数 函数有返回值 l FunctionName 必选 调用外部函数的名称 区分大小写 l 关键字Var 可选 表示通过引用传递参数 函数参数可以用值传递 也可以通过引用传递 通过引用传递参数 它的值没被复制到存放函数例程参数的堆栈中 程序执行速度快 通过引用传值 将允许过程和函数改变参数的值 l ArgN DataTypeN 可选 参数名以及参数类型 传递的参数类型可以是 Shorint Smallint Longint Integer 16 32 Single Double Extended Currency Date Pchar Object Variant等 l ReturnType 可选 函数返回值的类型 l Stdcall 必选 表示传递约定 这样调用模块 应用程序 与被调用模块 DLL 就使用相同的参数约定 l 关键字external 必选 声明访问外部函数 l Libname 必选 访问的DLL名称 16位Delphi中外部声明不带扩展名的库名 l Name AliasName 可选 Name指令可以为外部函数起别名 避免与系统例程和函数名称冲突 外部程序调用的DLL函数 必须遵照下列规则 1 必须列在DLL的exports子句中 2 在Delphi3中 调用函数还需被声明为stdcall 来使用标准的WIN32参数传递技术 代替优化的register参数传递技术 3 在WIN32中 DLL可以使用全局数据 该数据将不会通过调用应用程序来分享 每当应用程序装载DLL时 它在自己的地址空间中存储着DLL的全部数据 注 详细请参考ICCard EXAMPLES目录下的使用范例 3 3 2 VB调用32位动态库的方法 语法 Public Private Declare Function name Lib libname Alias aliasname arglist As type Declare 语句的语法包含下面部分 l Public 可选 用于声明在所有模块中的所有过程都可以使用的函数 l Private 可选 用于声明只能在包含该声明的模块中使用的函数 l Name 必选 任何合法的函数名 动态链接库的入口处 entry points 区分大小写 l Libname 必选 包含所声明的函数动态链接库名或代码资源名 l Alias 可选 表示将被调用的函数在动态链接库 DLL 中还有另外的名称 当外部函数名与某个函数重名时 就可以使用这个参数 当动态链接库的函数与同一范围内的公用变量 常数或任何其它过程的名称相同时 也可以使用 Alias 如果该动态链接库函数中的某个字符不符合动态链接库的命名约定时 也可以使用 Alias l Aliasname 可选 动态链接库 如果首字符不是数字符号 则 aliasname 是动态链接库中该函数入口处的名称 如果首字符是 则随后的字符必须指定该函数入口处的顺序号 l Arglist 可选 代表调用该函数时需要传递参数的变量表 l Type 可选 Function返回值的数据类型 可以是 Byte Boolean Integer Long Currency Single Double Decimal 目前尚不支持 Date String 只支持变长 或 Variant 用户定义类型 或对象类型 arglist 参数的语法如下 Optional ByVal ByRef ParamArray varname As type 部分描述 l Optional 可选 表示参数不是必需的 如果使用该选项 则 arglist 中的后续参数都必需是可选的 而且必须都使用 Optional 关键字声明 如果使用了 ParamArray 则任何参数都不能使用 Optional l ByVal 可选 表示该参数按值传递 l ByRef 可选 表示该参数按地址传递 l ParamArray 可选 只用于 arglist 的最后一个参数 表示最后参数是一个 Variant 元素的Optional 数组 使用 ParamArray 关键字可以提供任意数目的参数 ParamArray 关键字不能与 ByVal ByRef或 Optional 一起使用 l Varname 必选 代表传给该函数参数的变量名 遵循标准的变量命名约定 l 对数组变量是必需的 指明 varname 是一个数组 l type 可选 传递给函数参数的数据类型 可以是除Decimal以外的任何类型 说明 Function的数据类型决定其返回值的数据类型 可以在 arglist 之后使用 As 子句来指定函数返回值的数据类型 在 arglist 中 可以使用 As 子句来指定任何传给该函数参数的数据类型 不单可以指定为任何标准数据类型 还可以在 arglist 中指定 As Any 来禁止类型检查 从而允许将任意数据类型传递给该函数 空圆括号表示该 Function 没有参数 且 Visual Basic 应确保不会传递任何参数 注意 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 h 头文件 2 在工程文件中加入mtx 32 lib文件 3 在C WINDOWS system32或工程文件中加入GetInfo dll文件 4 API介绍 4 1 函数调用流程 4 1 1 非接触式存储卡API调用流程 建立连接成功后软件中基于 Mifare one 卡测试一般的操作过程是 读数 建立连接 寻卡 验证 写数据 中止卡片 值操作 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 GetCardInfo 关闭设备 4 1 6 函数操作结果信息表 说明 实际返回的错误信息为表中数据的负数形式 例如 命令超时 返回 0 x0011 StatusH StatusL 说明 00H 00H 命令执行正确回应 00H 01H 可选的功能接口或参数不支持 包括可选的通讯波特率参数 显示屏功能等 00H 02H 调用sdtapi dll错误 00H 03H 相片解码错误 00H 04H wlt文件后缀错误 00H 05H wlt文件打开错误 00H 06H wlt文件格式错误 00H 07H 软件未授权 00H 08H 设备连接错误 00H 09H 相片解码其他错误 00H 11H 命令超时 00H 12H 无效的通讯句柄 00H 13H 打开通讯端口错误 00H 14H 通讯端口已被占用 00H 15H 获取通讯端口状态错误 00H 16H 设置通讯端口状态错误 00H 17H 从读写器读取数据出错 00H 18H 向读写器写入数据出错 00H 21H STX错误 00H 22H ETX错误 00H 23H 校验位错误 00H 24H 数据长度大于最大长度 00H 25H 数据值错误 00H 31H 获取身份证信息 下标有误 00H 32H 身份证读卡错误 10H 01H 不支持接触用户卡 10H 02H 接触用户卡未插到位 10H 03H 接触用户卡已上电 10H 04H 接触用户卡未上电 10H 05H 接触用户卡上电失败 10H 06H 操作接触用户卡数据无回应 10H 07H 操作接触用户卡数据出现错误 20H 01H 不支持PSAM卡 20H 03H PSAM卡已上电 20H 04H PSAM卡未上电 20H 05H PSAM卡上电失败 20H 06H 操作PSAM卡数据无回应 20H 07H 操作PSAM卡数据出现错误 30H 01H 不支持非接触用户卡 30H 04H 非接触用户卡未激活 30H 05H 非接触用户卡激活失败 30H 06H 操作非接触用户卡无回应 等待超时 30H 07H 操作非接触用户卡数据出现错误 30H 08H 非接触用户卡halt失败 30H 09H 有多张卡在感应区 60H 01H 不支持逻辑操作 60H 20H 卡片类型不对 卡状态6A82 60H 21H 余额不足 卡状态9401 60H 22H 卡片功能不支持 卡状态6A81 60H 23H 扣款失败 卡状态9302 60H 30H 卡片未启用 60H 31H 卡片不在有效期 60H 32H 交易明细无此记录 60H 33H 交易明细记录未处理完成 60H 40H 需要做防拔处理 60H 41H 防拔处理中出错 非原来卡 60H 42H 交易中断 没有资金损失 4 2 设备操作函数组 4 2 1 打开读写器device open 函数功能 与读写器建立连接 函数声明 HANDLE stdcall device open char port name int16 port unsigned long baud 入口参数 port name 连接方式 分为 USB 和 COM port 串口号 0对应COM1 1对应COM2 取值范围0 31 baud 入 通讯波特率 9600bps 缺省设置 19200bps 38400bps 57600bps 115200bps 通讯方式为HID时 port和baud可为任意值 返回值 0 通讯设备标识符 举例 icdev device open USB 0 9600 4 2 2 关闭读写器device close 函数功能 与读写器断开连接 函数声明 int16 device close HANDLE icdev 入口参数 icdev 表示通讯设备标识符 返回值 0 错误 0 正确 举例 st device close icdev 4 2 3 判断设备通讯类型device gettype 函数功能 获取设备与PC机的通讯方式 函数声明 int16 device gettype unsigned char devicetype 出口参数 devicetype 1字节 设备与PC机的通讯方式 1 HID 0 串口 返回值 0 举例 unsigned char cDeviceType 0 st device gettype 4 2 4 设置通讯波特率device setbaud 函数功能 设置串口通讯波特率 函数声明 int16 device setbaud HANDLE icdev unsigned char module unsigned long baud 入口参数 icdev 通讯设备标识符 module 功能模块 1字节 00H 接触式 01H 非接触式 baud 串口波特率 9600bps 缺省设置 19200bps 38400bps 57600bps 115200bps 返回值 0 错误 0 正确 举例 int16 st device setbaud icdev 0 9600 设置接触式模块的通讯波特率为9600bps 4 2 5 获取读写器版本信息device version 函数功能 查看读写器版本信息 函数声明 int16 device version HANDLE icdev unsigned char module unsigned char verlen unsigned char verdata 入口参数 icdev 通讯设备标识符 module 功能模块 1字节 00H 接触式 01H 非接触式 出口参数 verlen 版本信息字节长度 verdata 读写器版本信息 返回值 0 错误 0 正确 举例 int16 st 0 unsigned char verlen 0 unsigned char verdata 100 memset verdata 0 100 st device version icdev 0 获取读写器接触式模块的版本信息 4 2 6 读写器蜂鸣device beep 函数功能 控制读写器蜂鸣器的单声鸣叫延迟时间和鸣叫次数 函数声明 int16 device beep HANDLE icdev unsigned short delaytime unsigned char times 入口参数 icdev 通讯设备标识符 delaytime 蜂鸣器鸣叫时间 单位为100毫秒 其中 第一字节是一次鸣叫持续时间 第 二字节是一次鸣叫停止时间 多次蜂鸣时的蜂鸣间隔时间 times 蜂鸣器鸣叫次数 返回值 0 错误 0 正确 举例 int st 0 unsigned short DelayTime 1285 st device beep icdev DelayTime 2 4 2 7 LED灯控制 device ledctrl 函数功能 控制读写器对应LED灯的开关状态 函数声明 int16 device ledctrl HANDLE icdev unsigned char ledctrl 入口参数 icdev 通讯设备标识符 ledctrl 1字节 位7对应绿灯 0关 1开 其他保留 返回值 0 错误 0 正确 举例 int16 st device ledctrl icdev 128 4 2 8 获取读写器生产序列号 device readsnr 函数功能 获取读写器生产序列号 函数声明 int16 stdcall device readsnr HANDLE icdev unsigned char nSnrLen char sSnrData 入口参数 icdev 通讯设备标识符 nSnrLen 1字节 序列号长度 1 20 出口参数 sSnrData nSnrLen字节 序列号数据 ASCII码字符形式 返回值 0 错误 0 正确 举例 int st 0 unsigned char sSnrData 30 memset sSnrData 0 30 st device readsnr icdev 20 sSnrData 4 2 9 获取设备状态 get device status 函数功能 获取设备状态 判断设备是否正常 函数功能 int16 stdcall get device status HANDLE icdev unsigned char ndev status 入口参数 icdev 通讯设备标识符 出口参数 ndev status 设备状态字节 一字节 取值 0 3 0 正常 1 接触卡通道异常 2 非接卡通道异常 3 接触卡和非接卡通道异常 4 安全模块通道异常 5 接触卡和安全模块通道异常 6 非接卡和安全模块通道异常 7 接触卡 非接卡和安全模块通道异常 返回值 0 错误 0 正确 举例 unsigned char ndev status 0 int st get device status icdev 4 2 10 读取读卡器的EEPROM 函数功能 读取读卡器的EEPROM数据 函数功能 int16 stdcall dev readeeprom HANDLE icdev unsigned short nAddr unsigned short nDLen unsigned char sReadData 入口参数 icdev 通讯设备标识符 nAddr 地址 0 199 nDLen 读取数据长度 1 200 单位 字节 sReadData 返回的数据 返回值 0 错误 0 正确 举例 unsigned char sData 20 int st dev readeeprom icdev 0 20 sData 4 2 11更新读卡器的EEPROM 函数功能 更新读卡器的EEPROM数据 函数功能 int16 stdcall dev writeeeprom HANDLE icdev unsigned short nAddr unsigned short nDLen unsigned char sWriteData 入口参数 icdev 通讯设备标识符 nAddr 地址 0 199 nDLen 写入的数据长度 1 200 单位 字节 sWriteData 写入的数据 返回值 0 错误 0 正确 举例 unsigned char sData 5 Memset sData x11 x22 x33 x44 x55 int st dev writeeeprom icdev 0 5 sData 4 2 12 复位串口配置信息 ReSetupComm 函数功能 复位串口配置信息 函数声明 int16 stdcall ReSetupComm HANDLE idComDev 入口参数 idComDev通讯设备标识符 出口参数 无 返回值 0 错误 0 正确 举例 int st 0 st ReSetupComm icdev 4 2 13 读卡器软复位 device reset 函数功能 读卡器软复位 函数声明 int16 stdcall device reset HANDLE icdev unsigned char module 入口参数 icdev通讯设备标识符 Module复位模式参数 0表示接触式模块 1表示非接触式模块 出口参数 无 返回值 0 错误 0 正确 举例 int st 0 st device reset icdev 0 4 2 14 获取设备状态扩展 get device statusEx 函数功能 获取设备状态 判断设备是否正常 函数功能 int16 stdcall get device statusEx HANDLE icdev unsigned char ndev status 入口参数 icdev 通讯设备标识符 出口参数 ndev status 设备状态字节 一字节 取值 0 3 0 接触无卡 非接无卡 安全模块不存在 1 接触有卡 非接无卡 安全模块不存在 2 接触无卡 非接有卡 安全模块不存在 3 接触有卡 非接有卡 安全模块不存在 4 接触无卡 非接无卡 安全模块存在 5 接触有卡 非接无卡 安全模块存在 6 接触无卡 非接有卡 安全模块存在 7 接触有卡 非接有卡 安全模块存在 返回值 0 错误 0 正确 举例 unsigned char ndev status 0 int st get device statusEx icdev 4 2 15 获取非接触式CPU卡卡片状态 dev cardstate 函数功能 获取非接触式CPU卡片状态 函数功能 int16 stdcall dev cardstate HANDLE icdev unsigned char ndev cardstate 入口参数 icdev 通讯设备标识符 出口参数 ndev cardstate 非接触式CPU卡状态 ndev cardstate 0 0 无卡 ndev cardstate 0 1 一张卡 ndev cardstate 0 2 多张卡 返回值 0 错误 0 正确 举例 unsigned char ndev status 0 int st dev cardstate icdev 4 2 16 获取接触式CPU卡到位状态 ICC GetStatus 函数功能 获取接触式CPU卡到位状态 函数功能 int16 stdcall ICC GetStatus HANDLE icdev unsigned char uCardStatus 入口参数 icdev 通讯设备标识符 出口参数 uCardStatus 接触式CPU卡到位状态 0 无卡 1 有卡 返回值 0 错误 0 正确 举例 unsigned char ndev status 0 int st ICC GetStatus icdev 4 2 17 读EMID号Dev GetEMID 函数功能 读EMID卡号 函数功能 int16 stdcall Dev GetEMID HANDLE icdev unsigned char nIDLen unsigned char sIDData 入口参数 icdev 通讯设备标识符 出口参数 nIDLen EMID号字节长度 sIDData EMID号信息 返回值 0 错误 0 正确 举例 unsigned char nIDLen 0 unsigned char sIDData 100 memset sIDData 0 100 int st Dev GetEMID icdev 4 3 接触式卡片操作函数 4 3 1 判断接触式卡片状态sam slt getstate 函数功能 判断指定卡座号中的卡片状态 包括接触式用户卡和PSAM卡 函数声明 int16 sam slt getstate HANDLE icdev unsigned char cardno unsigned short cardstate 入口参数 icdev 通讯设备标识符 cardno 1字节 卡片类型 接触式用户卡 00H 0FH PSAM卡 10H 1FH 出口参数 cardstate 返回的卡片状态 10H 01H 不支持接触式用户卡 10H 02H 接触式用户卡未插到位 10H 03H 接触式用户卡已上电 10H 04H 接触式用户卡未上电 20H 01H 不支持PSAM卡 20H 03H PSAM卡已上电 20H 04H PSAM卡未上电 返回值 0 错误 0 正确 举例 int16 ret 0 int16 rlen 0 unsigned char cardno 0 unsigned short cardstate 0 ret sam slt getstate icdev cardno 4 3 2 接触式卡片上电复位sam slt reset 函数功能 读写器在指定时间内对指定卡座进行寻卡 寻到卡后便对卡片上电复位 函数声明 int16 sam slt reset HANDLE icdev unsigned short delaytime unsigned char cardno unsigned char rlen unsigned char resetdata 入口参数 icdev 通讯设备标识符 delaytime 2字节 等待插卡时间 单位 毫秒 0 无需等待 无卡直接返回 cardno 1字节 接触式用户卡 00H 0FH PSAM卡 10H 1FH 出口参数 rlen 1字节 复位信息长度 resetdata 复位信息数据 返回值 0 执行成功 0 错误 举例 int16 st unsigned char RLen unsigned char cCardNO 0 unsigned char RDatah 40 memset RDatah 0 40 st sam slt reset icedv 0 cCardNO 4 3 3 接触式卡设置复位波特率sam slt reset baud 函数功能 读写器在指定时间内对指定卡座进行寻卡 寻到卡后便对卡片上电复位 函数声明 int16 stdcall sam slt reset baud HANDLE icdev unsigned char cardno unsigned char resetBaud unsigned char rlen unsigned char resetdata 入口参数 icdev 通讯设备标识符 Cardno 1字节 接触式用户卡 00H 0FH PSAM卡 10H 1FH resetBaud 0 9600 1 38400 2 115200 出口参数 rlen 1字节 复位信息长度 resetdata 复位信息数据 返回值 0 执行成功 0 错误 举例 int16 st unsigned char RLen unsigned char cCardNO 0 unsigned char RDatah 40 memset RDatah 0 40 st sam slt reset baud icedv cCardNO 0 4 3 4 接触式卡片下电sam slt powerdown 函数功能 对接触式卡片进行下电操作 函数声明 int16 sam slt powerdown HANDLE icdev unsigned char cardno 入口参数 icdev 通讯设备标识符 cardno 1字节 接触式用户卡 00H 0FH PSAM卡 10H 1FH 返回值 0 错误 0 正确 举例 int16 st unsigned char cardno 0 st sam slt powerdown icdev cardno 4 4 非接触 CPU 卡函数 4 4 1 激活非接触式卡open card 函数功能 读写器在传递的时间内查寻卡是否进入感应区 并激活进入感应区的卡片 函数声明 int16 open card HANDLE icdev unsigned short delaytime unsigned char cardtype unsigned char snrlen unsigned char snr unsigned char rlen unsigned char recdata 入口参数 icdev 通讯设备标识符 delaytime 2字节 等待卡进入感应区时间 单位 毫秒 高位字节在前 0 无需等待 无卡直接返回 0 xffff 一直等待 出口参数 cardtype 1字节 卡类型 0AH A类卡 0BH B类卡 snrlen 1字节 卡UID长度 snr 4字节 卡UID rlen 1字节 ATR长度 recdata ATR应答数据 返回值 0 错误 0 正确 举例 int16 st unsigned char CardType 0 unsigned char CardSnr 10 0 0 0 0 0 0 0 0 0 0 memset CardSnr 0 40 unsigned char RLen 0 unsigned char RecData 40 memset RecData 0 40 st open card icdev 0 注 由于调用该函数时 不一定有卡在感应区 很有可能需要较长的时间才能等到卡进感应区 故设定较长的时间给读写器 完全由读写器在这段时间等待对卡激活 如果超时了便返回 激活失败 此命令的delaytime参数就是为了传递上述时间参数给读写器 如果delaytime参数为0 在无卡进感应区时读写器不用等待直接返回 激活失败 如果delaytime参数为0 xffff时 一直寻卡 直到卡进入感应区 如果delaytime参数为其它值时 读写器可在delaytime时间内一直寻卡 直到超时了读 写器才返回 激活失败 此时主机端也是采用delaytime作为超时退出时间 如果有卡在感应区但激活失败 那么读写器不用继续寻卡就直接返回 激活失败 4 4 2 设置非接触式卡片为halt状态 rf halt 函数功能 设置非接触式卡片为halt状态 函数声明 int16 rf halt HANDLE icdev unsigned short delaytime 入口参数 icdev 通讯设备标识符 slen datasend 的长度 delaytime 等待卡离开感应区时间 单位 毫秒 高位字节在前 0 无需等待 0 xffff 一直等待 返回值 0 错误 0 正
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理进修培训课件
- 2024年无锡市工会社会工作者招聘考试真题
- 2024年甘肃庆阳职业技术学院引进笔试真题
- 开放式创新模式-第5篇-洞察及研究
- 农作物秸秆能源化途径-洞察及研究
- 高二升高三数学暑假作业12 空间向量与立体几何(含空间距离与空间角)(原卷版)
- 心律失常治疗及护理讲课件
- 记账实操-非营利组织会计处理分录实例
- 八年级语文一卷八年级语文(二卷试题)
- 小学四年级健康教育课讲课件
- 2025至2030中国混凝土外加剂市场供需发展及经营管理风险预警报告
- 青海中考地理试题及答案
- 《中心静脉导管的护理》课件
- 城市轨道交通应急处理自然灾害应急处理课件
- 新疆维吾尔自治区2024年普通高校招生普通类国家及地方专项、南疆单列、对口援疆计划 本科二批次投档情况 (理工)
- 基础会计教学质量分析报告
- 《宏观经济学原理》课件
- 2025新人教版七下英语单词默写表
- 2024年保山市小升初英语考试模拟试题及答案解析
- 《急性胰腺炎诊治》课件
- 变压器知识点培训课件
评论
0/150
提交评论