RD接触式IC卡读写器使用手册Word版_第1页
RD接触式IC卡读写器使用手册Word版_第2页
RD接触式IC卡读写器使用手册Word版_第3页
RD接触式IC卡读写器使用手册Word版_第4页
RD接触式IC卡读写器使用手册Word版_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、传播优秀Word版文档 ,希望对您有帮助,可双击去除! 目 录第一章 RD系列接触式IC卡读写器简介.3 1.1 概述.3 1.2 读写器型号.3 1.3 装箱清单.41.4 读写器连接方式. .41.5 指示灯.41.6 程序安装.41.7 用户软件.4 1.8 技术指标.5 第二章 演示系统使用说明.6第三章 IC卡读写器驱动程序函数说明.93.1 安装程序主要目录和文件.9 3.2 函数使用规则.9 3.3 各种库函数说明.9 3.3.1 C语言接口函数库.9l 通用函数库.10l AT24C01A/24C02/24C04/24C08/24C16/24C64.13l AT45D041.1

2、4l AT88SC102/1604/1604B.15l AT93C46/93C46A.22l SLE4404.23l SLE4406.26l SLE4418/4428.28l SLE4432/4442.30l CPU卡.30 3.3.2 FOXPRO FOR DOS函数库.33 3.3.3 WINDOWS 16位和32位动态库.34 3.3.4 FOXBASE函数库.353.3.5 UNIX函数库.383.3.6 LINUX函数库.38传播优秀Word版文档 ,希望对您有帮助,可双击去除! 3.4 VFP、VB、Delphi和PB调用动态库的方法.38 3.4.1 VFP调用16位动态库的方法

3、.38 3.4.2 VFP调用32位动态库的方法.39 3.4.3 VB调用动态库的方法.40 3.4.4 Delphi调用32位动态库的方法.413.4.5 PB调用32位动态库的方法.423.4.6 VC调用32位动态库的方法.42 3.5 IC卡类型代码.43 3.6 函数错误类型代码.433.7 自动卡型测试函数原理说明.443.8 版本兼容性.45附录一 几种常用IC卡的特性 .45 1999/10/10 RDMIXMANDOC-6.10A传播优秀Word版文档 ,希望对您有帮助,可双击去除!第一章 RD系列接触式IC卡读写器简介1.1 概述深圳市明华澳汉科技有限公司是以生产IC卡及

4、开发IC卡相关设备为主导产品的高新科技企业。继1996年第一台接触式IC卡读写器问世以来,本公司经不断改进、提高,已相继推出数千台不同型号的读写器。XXXX读写器是明华公司最新推出的读写设备,它功能齐全、性能稳定,在原有RD系列读写器的基础上增加了对SAM卡操作的功能。可方便地应用于工商、邮电、税务、银行、保险、医疗及各种收费、储值、查询等管理系统中。可读写的卡型a. 存贮器(Memory)卡l 美国ATMEL公司的AT24C01A/24C02/24C04/24C08/24C16/AT24C64,AT88SC102, AT88SC1604/1604B,AT45D041,AT93C46/93C4

5、6A卡 l 德国SIEMENS公司的SLE4432/4442,SLE4418/4428,SLE4404,SLE4406卡 l 以及其他公司的兼容卡片(ISSI 24C01A/16) b. CPU卡(符合T=0/T=1通讯协议) 特点l 可读写多种Memory卡和支持T=0、T=1通讯协议的CPU卡;l 支持对SAM卡操作的功能;l 与PC机通讯采用RS232串口,波特率为1200 115200BPS;l 对于使用SAM卡的用户,可以选择内置于读写器的小卡座,也可以选择通过卡槽操作的大卡座。l 提供诸多开发平台的接口函数和应用范例。1.2 读写器型号 (S) RD -X X -XC:表示CPU卡

6、读写器;MX:表示混合型读写器,可读写Memory卡和CPU卡; 卡座类型:T-推推式,B-推拔式,Z-自弹式 放置方式:I-内置,E-外置RD系列读写器。前面加S表示某种卡型专用读写器 例如:RD-EB-MX 为外置推拨式可读写Memory卡和CPU卡的混合型读写器 1.3 装箱清单传播优秀Word版文档 ,希望对您有帮助,可双击去除! 读写器 一台 串口线 一条 安装盘 一张 用户手册 一本(根据需要提供) 产品保修卡 一张1.4 读写器连接方式XXXX读写器有两个PS/2接口和一个串口,PS/2接口中的一个与计算机的键盘口连接,另一个与键盘相连,串口直接接至计算机的串口上。1.5 指示灯

7、三色指示灯:绿色 用户卡已插入,闪烁时表示正在对用户卡操作 红色 未插用户卡或SAM卡 橙色 用户卡未插入,SAM卡已插入,闪烁时表示正在对SAM卡操作1.6 程序安装 步骤:l 将内置读写器安装在计算机内;或将外置读写器连接在计算机通讯口上;l 接通读写器电源;l 将随机软盘插入驱动器A:或B:中l 在WINDOWS95/98环境下双击MWRD.EXE;l 按照安装程序的提示和要求进行安装;注意:安装程序在根目录下建立MWRD的目录(缺省),所有驱动软件均在此目录下。安装完毕后请仔细阅读README.TXT文件。1.7 用户软件(V6.5) 用户软件包括三部分:演示系统、驱动程序、应用范例和

8、兼容库a. 演示系统 提供WINDOWS版演示程序DEMO.EXE。b. 驱动程序l C语言接口函数库(Borland C3.1)l FOXPRO FOR DOS(2.5/2.6) 接口函数库l WINDOWS 16位动态库l WINDOWS 32位动态库l FOXBASE(2.0/2.1)接口函数库l UNIX函数库(SCO UNIX5.0)l LINUX函数库(Red hat 6.0)c. 应用范例 随盘应提供VB5、VB3、PB5、DELPHI3、VFP3、FORPRO FOR DOS(2.5/2.6)、BC3.1、FOXBASE(2.0/2.1)、UNIX(SCO5.0)、LINUX(

9、Red hat6.0)等的应用范例。传播优秀Word版文档 ,希望对您有帮助,可双击去除!d. 兼容库V5.4 为了兼容NRD系列及RDZ、RDB、RDT型读写器及其驱动程序Ver5.X,在RD系列读写器Ver6.4以上的驱动程序中增加了兼容库。使用旧读写器的客户,只要购置RD系列读写器及其兼容库,可不必更改源程序即可完成平稳过渡。1.8 技术指标l 通讯接口:RS232串口l 串口的波特率:1200 115200BPSl 电源:由键盘取电,不外带电源l 最大功耗:100 mW l 环境温度:商业级 0 70 C 工业级 -25 85 Cl 相对湿度:30% 95%l 抗静电干扰:15KVl

10、抗磁场干扰:19奥斯特l 抗振动能力:振幅0.35mm,频率10-55Hz,三个轴方向扫频振动l 绝缘电阻:湿热情况下(40,95%)绝缘电阻应不小于5M。l 外型尺寸:内置式长宽高138mm120mm25mm 外置式长宽高150mm118mm100mml 重量: 内置式约200克;外置式约500克 第二章 演示系统使用说明传播优秀Word版文档 ,希望对您有帮助,可双击去除!该演示系统可对ATMEL、SIEMENS等Memory卡和符合T=0/T=1通讯协议的CPU卡读写操作。图1 演示系统主界面1 演示系统主界面分五个功能区,分别说明如下:l 设备信息提示 可显示用户软件版本号、硬件版本号

11、、产品序列号l 设备操作- 密码操作 可设置密码、更改密码、读出密码和比较密码- 设备计数 读写器发卡时可做计数之用。- 设备蜂鸣 可按设置时间要求执行鸣叫。- EEPROM读写 可向EEPROM中写入有关设备的一些备注信息- 自动弹卡 自弹式读写器可执行弹卡操作。l 卡片选择 卡片选择分手动选择卡型和自动检测卡型两种,卡片选择完成以后,按下卡片操作按钮,进入相应的Memory卡或CPU卡操作界面,实现各自的功能操作。l 建立连接 初次运行系统时,系统按自动测试方式建立连接,并将成功连接的参数保存在系统文件中。下次运行时系统将自动按保存的参数建立连接。 也可以指定通讯口和波特率(或并口方式)建

12、立连接。传播优秀Word版文档 ,希望对您有帮助,可双击去除! 连接成功后,用户可以更换读写器端口和波特率值(或并口方式),指定连接方式后,执行更改连接。自动测试将按照并口0x378、并口0x278、串口1串口4的顺序自动测试并连接。l 提示信息提示信息显示各项操作的结果或出错信息。鼠标双点框内文字可清空该区域。l 帮助文件按F1键或在卡片操作界面单击?图标,则弹出RD读写器帮助系统。该帮助系统功能十分详尽,包括如何使用演示软件、明华读写设备介绍、支持卡型介绍、库函数介绍和读写器常见问题解答五大部分。第三章 IC卡读写器驱动函数说明3.1 安装程序主要目录和文件 README.TXT 版本说明

13、 MWRD6.5DRVER: RD系列读写器驱动程序 C.LIB*.* C.DOS静态函数库 FOXPRO.DOS*.* FOXPRO FOR DOS 接口函数库 WINDOWS.DLL*.* WINDOWS32位和16位动态库 UNIX*.* UNIX动态库 FOXBASE*.* FOXBASE函数库 DEMO.WINDEMO.EXE WINDOWS下操作演示软件 EXAMPLES*.* 各种平台的应用范例 MWRD5.4: RD读写器兼容库 C.LIB C.DOS静态函数库 FOXPRO.DOS FOXPRO FOR DOS接口函数库 WINDOWS.DLL WINDOWS32位和16位动

14、态库 Ref5X.TXT 使用说明 SRDUSER.DOC SRD-E*P-45D041读写器用户使用手册UNWISEEXE 卸载安装程序 3.2 函数使用规则 (1) 首先调用通讯口初始化函数ic_init()或auto_init(); (2) 如果设备密码已设置有效,则通讯口初始化后必须先核对设备密码,然后再按照对卡操作的顺序调用相应的函数。 出厂时缺省的设备密码为0xffffff,在密码设置有效之前或在密码正确核对的有效期间,均可以读出设备密码。密码核对的有效期指的是在正确核对设备密码以后,到读写器关闭电源为止的时间。在此期间即使您的程序已经退出,原先核对的密码仍然有效。 (3) 在串口

15、通讯方式下,调用WINDOWS 16位/32位动态库或UNIX 函数库时,程序退出之前要执行ic_exit() 函数,关闭串口,释放句柄icdev;否则再次初始化串口将出错。 (4) 函数调用错误类型,请参照函数错误类型代码。所有函数的错误代码均以负数形式返回;Foxpr For Dos和Foxbase例外。注意:函数详细的使用方法,请参考EXAMPLES目录下提供的范例。传播优秀Word版文档 ,希望对您有帮助,可双击去除!3.3 各种库函数说明3.3.1 C语言接口函数库包括:a通用函数库 b. AT24C01A/24C02/24C04/24C08/24C16/24C64函数库 c. AT

16、45D041函数库 d. AT88SC102/1604/1604B函数库 e. AT93C46/93C46A函数库 f. SLE4404函数库 g. SLE4406函数库 h. SLE4418/4428函数库i. SLE4432/4442函数库j. CPU卡函数a. 通用函数库(1) int ic_init(int port, long baud)说明:初始化通讯接口调用:Port: 通讯口号0、1、2、3分别代表串口1、2、3、4; 并口为其I/O地址(如0x378) baud: 通讯口为串口时代表波特率,其值可为1200-115200 通讯口为并口时代表半字节或全字节通讯方式,其值为0或1

17、返回: 0 通讯设备标识符举例: icdev=ic_init(0,9600); 初始化串口1,波特率为9600 icdev=ic_init(0x378,0); 初始化并口,半字节通讯方式(2) int auto_init(int port, long baud)说明:自动初始化通讯接口调用:同ic_init()返回:同ic_init()注:无论使用串口通讯还是并口通讯,读写器都可保持最近一次设置的波特率值和并口的传输模式。上面的Ic_init()函数是用给定的串行波特率或并行传输模式与读写器通讯,如果读写器保存的串行波特率或并行传输模式与上位机的进行初始化的串行波特率或并行传输模式不同,将会出

18、现初始化失败;而auto_init()函数在出现不同的情况下,它可自动测试读写器当前的串行波特率值或并行传输模式,然后重新设置成上位机要求的串行波特率或并行传输模式并建立好连接。(3) int ic_exit(int icdev)说明: 关闭通讯口调用: icdev: 通讯设备标识符 返回: 0 错误 =0 正确 举例: st=ic_exit(icdev);注:C库中本无此函数,在此仅作为其它函数库的参考(4) int get_status(int icdev,int *state)说明: 返回设备当前状态调用: icdev: 通讯设备标识符 state: 插卡状态 state=1读写器插有卡

19、;state=0读写器无卡 传播优秀Word版文档 ,希望对您有帮助,可双击去除!返回: 0 错误 =0 正确, 举例: int status; st=get_status(icdev,&status); (5) int dv_beep(int icdev,int time)说明: 读写器蜂鸣调用: icdev: 通讯设备标识符 time: 蜂鸣时间,值范围0-255(单位10ms)返回: 0 错误 =0 .正确 举例: st=ic_beep(icdev,100);(6) int auto_pull(int icdev)说明: 自动弹卡调用: icdev: 通讯设备标识符 返回: 0 错误 =

20、0 正确 举例: st=auto_pull(icdev);(7) int turn_on(int icdev)说明: 对卡上电调用: icdev: 通讯设备标识符 返回: 0 错误 =0 正确举例: st=turn_on(icdev);(8) int turn_off(int icdev)说明: 对卡下电调用: icdev: 通讯设备标识符 返回: 0 错误 =0 正确举例: st=turn_off(icdev); (9) int srd_ver(int icdev,int len,unsigned char *databuff)说明: 读取设备版本号调用: icdev: 通讯设备标识符 le

21、n: 版本号字符串长度,其值为18 databuff: 存放读取的版本号字符串返回: 0 错误 =0 正确举例: unsigned char databuff18; st=srd_ver(icdev,18,databuff);(10) int set_baud(int icdev,long baud)说明: 设置串口方式下的波特率或并口的通讯方式,设置完 毕后,必须重新初始化通讯口。调用: icdev: 通讯设备标识符。 baud: 串口时代表波特率,其值可为1200-115200 并口时代表半字节或全字节方式,其值分别为0或1 返回: 0 错误 =0 正确举例: st=set_baud(ic

22、dev,57600);传播优秀Word版文档 ,希望对您有帮助,可双击去除! 设置读写器串口波特率为57600。(11) long chk_baud(int port)说明: 自动检测通讯方式。该函数要在初始化通讯口前使用调用: Port: 通讯口号0、1、2、3代表串口1、2、3、4; 并口则使用其I/O地址(如0x378)。返回: =0 正确。返回串口的波特率或并口的通讯方式(0或1)举例: st=chk_baud(0x378); (12) int srd_dvsc(int icdev,int len,unsigned char *databuff)说明: 读出设备密码调用: icdev:

23、 通讯设备标识符 len: 密码字符串长度,其值为3 databuff: 存放读取的密码字符串返回: 0 错误 =0 正确举例: unsigned char databuff3; st=srd_dvsc(icdev,3,databuff);(13) int swr_dvsc(int icdev,int len,unsigned char *databuff)说明: 改写设备密码调用: icdev: 通讯设备标识符 len: 密码字符串长度,其值为3 databuff: 存放要写入的密码字符串返回: 0 错误 =0 正确举例: unsigned char databuff3=a,b,c; st=

24、swr_dvsc(icdev,3,databuff);(14) int cmp_dvsc(int icdev,int len,unsigned char *databuff)说明: 比较设备密码调用: icdev: 通讯设备标识符 len: 密码字符串长度,其值为3 databuff: 存放要比较的密码字符串返回: 0 错误 =0 正确举例: unsigned char databuff3=a,b,c; st= cmp_dvsc(icdev,3,databuff);(15) int setsc_md(int icdev,int mode)说明: 设置设备密码模式 mode=0时设置设备密码有效

25、,在设备加电时必须先核对 设备密码才能对设备操作;mode=1时设置设备密码无效。调用: icdev: 通讯设备标识符 mode: 密码模式返回: 0 错误 =0 正确举例: st=setsc_md(icdev,0); 设置设备密码有效 (16) int srd_snr(int icdev,int len, unsigned char *databuff)说明: 读出设备标识号传播优秀Word版文档 ,希望对您有帮助,可双击去除!调用: icdev: 通讯设备标识符 len: 字符串长度,其值为16 databuff: 存放要读出的标识号字符串返回: 0 错误 =0 正确举例: unsigne

26、d char databuff16; st=srd_snr(icdev,16,databuff);(17) int chk_card(int icdev)说明: 测卡类型,仅适用明华公司生产的部分IC卡调用: icdev: 通讯设备标识符返回: =0 正确;卡类型参照IC卡类型代码举例: st=chk_card(icdev);(18) int ic_encrypt(char *key,char *ptrsource,unsigned int msglen , char * ptrdest)说明: DES算法加密函数调用: key: 加密的密码,长度为8 ptrsource: 原文 msglen

27、: 原文长度必需为8的倍数 ptrdest: 密文返回: 0 错误。其绝对值为错误代码 =0 成功举例: char patrdest16; st=ic_encrypt(“12345678”,”abcdefghabcdefgh”,16,ptrdest) 将长度为16的”abcdefghabcdefgh”用密码“12345678” 加密 (19) int ic_decrypt(char *key,char *ptrdest,unsigned int msglen, char *ptrsource) 说明: DES算法解密函数,使用过程与ic_encrypt相反调用: key: 加密的密码;长度为8

28、 ptrsource: 密文 msglen: 密文长度必需为8的倍数 ptrdest: 原文返回: 0 错误。 其绝对值为错误代码 =0 成功举例: char ptrdest16; st=ic_decrypt(“12345678”,”abcdefghabcdefgh”,16,ptrdest) 将长度为16的”abcdefghabcdefgh”用密码“12345678” 解密(20) unsigned long DES_Encrypt( unsigned char *Key,int KeyLen,unsigned char *Source, unsigned long SrcLen,unsign

29、ed char *Result)说明: DES算法加密函数调用: key: 加密的密码 keyLen: 加密的密码长度 Source: 原文 Srclen: 原文长度 Result: 密文返回: 加密后密文长度。 =0 成功举例: char patrdest16; st=ic_encrypt(“1234”,4,”abcdefghabcdef”,14,ptrdest)传播优秀Word版文档 ,希望对您有帮助,可双击去除! 将长度为14的”abcdefghabcdef”用密码“1234” 加密注意: 与ic_encrypt()函数相比,它取消了对密码和加密数据长度必须为8的限制, 它对于非8倍数的

30、处理方式为在数据后自动补0,凑足8的倍数。 (21) unsigned long DES_Decrypt( unsigned char *Key,int KeyLen,unsigned char *Source, unsigned long SrcLen,unsigned char *result)说明: DES算法解密函数,使用过程与des_encrypt相反调用: Key: 解密的密码 Keylen: 解密的密码长度 Source: 密文 SrcLen: 密文的长度。 Result: 原文返回: 解密后原文的长度。举例: char ptrdest14; st=ic_decrypt(“123

31、4”,4,”abcdefghabcdef”,14,ptrdest) 将长度为14的”abcdefghabcdef”用密码“1234” 解密注意: 与ic_decrypt()函数相比,它取消了对密码和加密数据长度必须为8的限制, 它对于非8倍数的处理方式为在数据后自动补0,凑足8的倍数。 (22) int swr_eeprom(int icdev, int offset, int length, unsigned char *databuff);说明: 向EEPROM中写入数据信息调用: icdev: 设备标识符 offset: 偏移地址 0-383 length: 数据长度 1-384 dat

32、abuff:存要写的数据信息返回: = 0 正确 0 错误 举例: unsigned char databuff3=a,b,c; st=swr_eeprom(icdev,1,3,databuff);(23) int srd_eeprom(int icdev, int offset, int length, unsigned char *databuff);说明: 从EEPROM中读取数据信息调用: icdev: 设备标识符 offset: 偏移地址 0-383 length: 数据长度 1-384 databuff:存要写的数据信息返回: = 0 正确 0 错误 举例: unsigned ch

33、ar databuff3; st=srd_eeprom(icdev,1,3,databuff);(24) int asc_hex(unsiged char *asc, unsigned char *hex , unsigned long length);说明: 将ASCII码转换为十六进制数据 参数: asc: 输入要转换的字符串 hex: 存放转换后的字符串 length: 为转换后的字符串长度返回: = 0 正确 0 错误 传播优秀Word版文档 ,希望对您有帮助,可双击去除!举例: unsigned char databuff6; st=asc_hex(“a1a2a3a4a5”,data

34、buff,5);(25) int hex_asc(unsigned char *hex, unsigned char *asc, unsigned long length);说明: 将十六进制数据转换为ASCII码参数: hex: 输入要转换的字符串 asc: 存放转换后的字符串 length: 为要转换的字符串长度返回: = 0 正确 0 错误 举例: unsigned char databuff15=0xa1,0xa2,0xa3,0xa4,0xa5 ; unsigned char databuff210; st=hex_asc(databuff1,databuff2,5);注意:转换后的字

35、符串长度为2*length(26) int asc_asc(unsigned char *source, unsigned char *dest, unsigned long length);说明: 字符串转换成字符串。专为VB5 ByRef传址方式提供的赋值函数。参数: source: 要转换的ASCII码字符串(声明:Byval source as string) dest : 转换后的ASCII码字符串(声明:ByRef dest as byte) length: 字符串的长度返回: = 0 正确 0 错误 举例: dim databuff(6) as byte; st=asc_asc(

36、“123abc”,databuff(0),6); VB5环境下,对于ASCII值码大于128的情况,可利用上述三个函数实现正常转换。其中,asc_asc()是专为VB5 ByRef传址方式提供的赋值函数。 DELPHI3、VFP、PB5等开发环境,利用asc_hex()和hex_asc()两个函数可方便地实现ASCII码和十六进制数据的转换。详细请参考Examples目录下的范例。注意:C静态库、Unix、Linux库中没有提供上述三个函数。b. AT24C01A/24C02/24C04/24C08/24C16/24C64函数库 以24C01A为例,其它卡的函数与此类似 int swr_24c

37、01a(int icdev,int offset,int len, unsigned char *databuff)说明: 向指定地址写数据 调用: icdev: 通讯设备标识符 offset: 偏移地址,范围0-127 len: 字符串长度,范围1-128 databuff: 存放要写的数据 返回: 0 错误 =0 正确举例: unsigned char databuff5=s,a,n,n,y; st=swr_24c01a(icdev,0,5,databuff); 将databaff中前5个字节写入从偏移地址0开始的5个字节中 int srd_24c01a(int icdev,int offset,int len, unsigned char *databuff)说明: 从指定地址读数据 调用: icdev: 通讯设备标识符 offset: 偏移地址,范围0-127传播优秀Word版文档 ,希望对您有帮助,可双击去除! len: 字符串长度,范围1-128 databuff: 存放要读出的数据 返回: 0 错误 =0 正确举例: unsigned char databuff5; st=srd_24c01a(icdev,0,5,databuff); 从偏移地址0开始读出5个字节数据放入databuff中 int chk_24c01a(int icdev)说明:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论