ic卡读写器怎么写.docx

上传人:小飞机 文档编号:3158562 上传时间:2023-03-11 格式:DOCX 页数:16 大小:41.15KB
返回 下载 相关 举报
ic卡读写器怎么写.docx_第1页
第1页 / 共16页
ic卡读写器怎么写.docx_第2页
第2页 / 共16页
ic卡读写器怎么写.docx_第3页
第3页 / 共16页
ic卡读写器怎么写.docx_第4页
第4页 / 共16页
ic卡读写器怎么写.docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《ic卡读写器怎么写.docx》由会员分享,可在线阅读,更多相关《ic卡读写器怎么写.docx(16页珍藏版)》请在三一办公上搜索。

1、ic卡读写器怎么写 ic卡读写器:非接触式IC卡的读写程序怎么写? 关IC卡没有任何关系,主要是读卡器的问题,看你的是串口,还是USB啊,如果是USB的应该就有相应的动态库,如果说是串口就按相关的协议进行串口读写即可. 有windows32位动态库,不知道是干什么用,在哪里用的。发出来大家帮帮看看怎么用。 ic卡读写器参考: RF 系列非接触式 IC 卡6 2.2 库函数一览表 序号 函数 说明 备注 1 rf_init 初始化串口 2 rf_exit 关闭串口 3 rf_card 寻卡 4 rf_authentication 验证卡中某一扇区密码 5 rf_halt 中止卡操作 6 rf_r

2、ead 读数据 7 rf_read_hex 读数据 8 rf_write 写数据 9 rf_write_hex 写数据 10 rf_intival 初始化块值 11 rf_increment 加值 12 rf_decrement 减值 13 rf_readval 读值 14 rf_restore 将块数据传到卡的内部寄存器 中 15 rf_transfer 将寄存器的数据传到块中 16 rf_load_key 向读写器下载授权密码 17 rf_load_key_hex 向读写器下载授权密码 C 语言库中未提供 此函数 18 rf_beep 蜂鸣器鸣叫 19 rf_disp 数码管显示数据 20

3、 rf_request 寻卡请求 FoxPro For Dos 库 中未提供此函数 21 rf_anticoll 防止卡冲突 FoxPro For Dos 库中未提供此函数 22 Rf_select 选取一个给定序列号的卡 FoxPro For Dos 中未提供此函数 23 Rf_encrypt DES 加密算法 24 Rf_decrypt DES 解密算法 25 Rf_get_status 读取读写器的版本号 26 Rf_reset 射频头复位 27 Rf_initval 高级初始化值 28 Rf_HL_decrement 高级增值操作 29 Rf_HL_inctement 高级减值操作 库

4、 30 Rf_HL_write 高级写 31 Rf_HL_read 高级读 32 Rf_initval_ml ML 卡初始化值 33 Rf_decrement_ml ML 卡减值操作 34 Rf_readval_ml ML 卡读值操作 这个是具体的函数库: 2.3Windows 32 位动态库 HANDLE rf_init(_int16 port,long baud); 功 能:初始化串口 参 数:_int16 port:通讯口号(03) long baud:通讯波特率(9600115200) 返 回:成功则返回设备描述符(0) 例:HANDLE icdev; icdev=rf_init(1,

5、115200); /*初始化 com2 口以波特率 115200*/ _int16 rf_exit(HANDLE icdev); 功 能:关闭串口 参 数:HANDLE icdev:rf_init返回的设备描述符 返 回:成功返回 0 例:rf_exit(icdev); _int16 rf_card(HANDLE icdev,unsigned char _Mode,unsigned long *_Snr); 功 能:寻卡,能返回在工作区域内某张卡的序列号 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Mode:寻卡模式 Mode=0: IDLE

6、 模式,一次操作一张卡 Mode=1: ALL 模式, 一次操作多张卡 unsigned long *_Snr: 返回卡的序列号地址 返 回:成功则返回 0 例:_int16 st; unsigned long snr; st=rf_card(icdev,IDLE,&snr); 注:如果设为 IDLE 模式,则在对卡操作完成后,须执行 rf_halt指令中止对卡的操作。 这样,只有该卡离开并重新进入操作区时,读写器才能对它再次操作。 _int16 rf_authentication(HANDLE icdev ,unsigned char _Mode, unsigned char _SecNr)

7、; 功 能:验证某一扇区密码 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Mode:验证密码的方式 取值如下: 0 用 KEYSET0 和 KEYA 验证 1 用 KEYSET1 和 KEYA 验证 2 用 KEYSET2 和 KEYA 验证 4 用 KEYSET0 和 KEYB 验证 5 用 KEYSET1 和 KEYB 验证 6 用 KEYSET2 和 KEYB 验证 unsigned char _SecNr:要验证密码的扇区号(015) 返 回:成功则返回 0 例:_int16 st; RF 系列非接触式 IC 卡读写器使用手册 8 s

8、t=rf_authentication(icdev,0,0); 注:每张卡上有 A 密码和 B 密码,可根据实际需要确定是否使用 B 密码,这由卡的存取 控制位来决定。此外,读写器中可以存放三套密码,可用 rf_load_key分别装 入,只有装入后才能使用验证密码函数验证。 _int16 rf_halt(HANDLE icdev); 功 能:中止卡操作 参 数:HANDLE icdev:rf_init返回的设备描述符 返 回:成功则返回 0 例:_int16 st; st=rf_halt(icdev); 注:使用 rf_card函数时,如果模式选择为 0 则在对卡进行读写操作完毕后, 必须执

9、行 rf_halt,且只能当该卡离开并再次进入操作区域时,读写器 才能够再次操作它。 _int16 rf_read(HANDLE icdev,usigned char _Adr,unsigned char *_Data); 功 能:读数据,一次必须读一个块 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:块地址(063) unsigned char *_Data:读出数据 返 回:成功则返回 0 例:_int16 st; static unsigned char data16 st=rf_read(icdev,0,data); _int1

10、6 rf_read_hex(HANDLE icdev,usigned char _Adr,unsigned char *_Data); 功 能:以十六进制读数据,一次必须读一个块 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:块地址(063) unsigned char *_Data:读出数据 返 回:成功则返回 0 例:_int16 st; static unsigned char data32 st=rf_read_hex(icdev,0,data); /*读出数据格式如 rf_write_hex*/ _int16 rf_write

11、(HANDLE icdev,unsigned char _Adr,unsigned char *_Data); 功 能:写数据, 一次必须写一个块 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:块地址(163) unsigned char *_Data:写入数据,块长度为 16 B 返 回:成功则返回 0 例:_int16 st; static unsigned char data16 /* 给 data 赋值*/ st=rf_write(icdev,1,data); /*写入块 1*/ RF 系列非接触式 IC 卡读写器使用手册 9

12、_int16 rf_write_hex(HANDLE icdev,unsigned char _Adr,unsigned char *_Data); 功 能:以十六进制写数据, 一次必须写一个块 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:块地址(163) unsigned char *_Data:写入数据,块长度为 32Byte 返 回:成功则返回 0 例:_int16 st; unsigned char data32= aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ; /* data 赋值为 16 个 0xa

13、a*/ st=rf_write_hex(icdev,1,data); /*写入块 1*/ _int16 rf_initval(HANDLE icdev,unsigned char _Adr,unsigned long _Value); 功 能:初始化块值 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:块地址(163) unsigned long _Value:初始值 返 回:成功则返回 0 例:_int16 st; unsigned long value; value=1000; st=rf_initval(icdev,1,value)

14、; /*将块 1 的值初始化为 value*/ 注:作为数值处理的块,是以特殊格式存贮的,所以必须用初始化值函数初始化, 初始化之后方可进行读、减、加的处理。 _int16 rf_increment(HANDLE icdev,unsigned char _Adr,unsigned long _Value); 功 能:块增值操作 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:块地址(163) unsigned long _Value:要增加的值 返 回:成功则返回 0; 例:_int16 st; unsigned long value;

15、value=1; st=rf_increment(icdev,1,value); /*将块 1 的值增加 value*/ _int16 rf_decrment(HANDLE icdev,unsigned char _Adr,unsigned long _Value); 功 能:块减值操作 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:块地址(163) unsigned long _Value:要减少的值 返 回:成功则返回 0 例:_int16 st; unsigned long value; value=1; st=rf_decrem

16、ent(icdev,1,value); /*将块 1 的值减少 value*/ RF 系列非接触式 IC 卡读写器使用手册 10 _int16 rf_readval(HANDLE icdev,unsigned char _Adr,unsigned long *_Value); 功 能:读值 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:块地址(063) unsigned long *_Value:返回读出值的地址 返 回:成功返回 0 例:_int16 st; unsigned long value; st=rf_readval(icd

17、ev,1,&value); /*读出块 1 的值,放入 value*/ _int16 rf_restore(HANDLE icdev,unsigned char _Adr); 功 能:将某块的数据传入卡的内部寄存器中 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:要进行回传的地址 返 回:成功返回 0 例:_int16 st; st=rf_restore(icdev,1); 注:用此函数将某一块内的数值传入卡的内部寄存器,然后用 rf_transfer函数将寄存器的数据再传送到另一块中去,即实现了块与块之间的数值传送。 _int16 r

18、f_transfer(HANDLE icdev,unsigned char _Adr); 功 能:将寄存器的数据传送到某一块中 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Adr:要传送的地址 返 回:成功返回 0 例:_int16 st; st=rf_transfer(icdev,1); 注:见 rf_restore的说明。 _int16 rf_load_key(HANDLE icdev,unsigned char _Mode,unsigned char SecNr, unsigned char * _Nkey); 功 能:向读写器的 RA

19、M 装入密码 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Mode :同 rf_authentication unsigned char _SecNr:同 rf_authentication unsigned char *_Nkey:包含了要写入硬件系统 RAM 中的卡密码 返 回:成功则返回 0 例:/key A and key B unsigned char tk27= 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5, 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5 ; /*装入 1 扇区的 A 密码 0 套,*/

20、 if(rf_load_key(icdev,0, 1,tk1)!=0) printf( Load key error! ); rf_exit; exit(1); RF 系列非接触式 IC 卡读写器使用手册 11 注:*_Nkey 是与卡中的密码相对应的密码。 _int16 rf_load_key_hex(HANDLE icdev,unsigned char _Mode, unsigned char SecNr,char * _Nkey); 功 能:向读写器的 RAM 装入 16 进制密码 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Mode

21、:同 rf_authentication unsigned char _SecNr:同 rf_authentication unsigned char *_Nkey:要写入读写器 RAM 中的卡密码 返 回:成功则返回 0 例:/key A unsigned char tk= a0a1a2a3a4a5 /*等同于0xa0_.0xa5*/ /*装入 1 扇区的 A 密码|0 套,*/ if(rf_load_key_Hex(icdev,0, 1,tk)!=0) printf( Load key error! ); rf_exit; exit(1); 注:*_Nkey 是与卡中的密码相对应的密码。

22、_int16 rf_get_status(unsigned char *_Status); 功 能:取得读写器的版本号 参 数:unsigned char *_Status:返回读写器版本信息 返 回:成功则返回 0 例:int st; unsigned char status32; st=rf_get_status(status); _int16 rf_request(int icdev,unsigned char _Mode, unsigned int *TagType); 功 能:寻卡请求 参 数: HANDLE icdev:设备描述符 unsigned char _Mode:寻卡模式,

23、为 0 或 1 Mode=0:IDLE 模式,一次只选一张卡 Mode=1:ALL 模式, 一次可选多张卡 unsigned int *Tagtype:指向返回的卡类型值 返 回:成功则返回 0 例:int st; st=rf_request(icdev,IDLE,tagtype); 注:对卡操作前先执行寻卡指令 _int16 rf_anticoll(int icdev,unsigned char _Bcnt,unsigned long *_Snr); 功 能:防止卡冲突;返回卡的序列号 参 数:HANDLE icdev: 设备描述符 unsigned char _Bcnt: 预选卡所用的位数

24、,标准值为 0 RF 系列非接触式 IC 卡读写器使用手册 12 unsigned long *_Snr: 返回的卡序列号地址 返 回:成功则返回 0 例:int st; st=rf_anticoll(0,snr); 注:request 指令之后应立即调用 anticoll,除非卡的序列号已知。 _int16 rf_select(int icdev,unsigned long _Snr,unsigned char *_Size); 功 能:从多个卡中选取一个给定序列号的卡 参 数:HANDLE icdev:设备描述符 unsigned long _Snr:卡序列号 unsigned char

25、*_Size:指向返回的卡容量的数据 返 回:成功则返回 0 例: int st; snr=239474; st=rf_select(snr,size); /* 返回 239474 卡的容量 */ 注:上述 rf_card寻卡函数包含了 1921 三个低级函数。每次对卡重新操作时首先要调用 rf_card函数。 _int16 rf_encrypt(char *key,char *ptrsource,unsigned _int16 msglen, char *ptrdest); 功 能:DES 算法加密 参 数:char *key:加密的密码,长度为 8 char *ptrsource:原文 u

26、nsigned _int16 msglen:原文长度 char *ptrdest:密文 返 回:成功则返回 0 例:/* 将长度为 16 的”abcdefghabcdefgh”用密码“12345678”加密 */ rf_encrypt(“12345678”,”abcdefghabcdefgh”,16,ptrdest) _int16 rf_decrypt(char *key,char *ptrsource,unsigned _int16 msglen, char *ptrdest); 功 能:DES 算法解密函数 参 数:char *key:加密的密码,长度为 8 char *ptrsource

27、:加密后密文 unsigned _int16 msglen:原文长度 char *ptrdest:原文 返 回:成功则返回 0 例:略,使用过程与 rf_encrypt 相反。 _int rf_beep(unsigned int _Msec); 功 能:蜂鸣 参 数:unsigned int _Msec:蜂鸣时间的长短,单位是 10 毫秒; 返 回:成功则返回 0 例:int st; st=rf_beep(10); /*鸣叫 100 毫秒*/ RF 系列非接触式 IC 卡读写器使用手册 13 _int rf_disp(HANDLE icdev,unsigned char pt_mode,uns

28、igned int digit); 功 能:使读写器的数码管显示数字 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char pt_mode: 小数点显示模式 取值如下: 0 小数点熄灭 1 个位后的小数点位亮 2 十位后的小数点位亮 3 百位后的小数点位亮 4 千位后的小数点位亮 unsigned int digit:要显示的数 返 回:成功则返回 0 例:int st; st=rf_disp(icdev,0,1234); /*显示整数 1234*/ _int16 rf_reset(HANDLE icdev,unsigned _int16 _Msec);

29、 功 能:射频头复位 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned _int16 _Msec:复位时间,0500 毫秒有效 返 回:成功则返回 0 例:st=rf_reset(icdev,60); (27)_int16 rf_HL_initval(HANDLE icdev,unsigned char _Mode,unsigned char _SecNr, unsigned long _Value,unsigned char *_Snr); 功 能:高级初始化值 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _

30、Mode:寻卡模式,为 0、1 或 2 Mode=0: IDLE 模式,一次只操作一张卡 1:ALL 模式,一次可操作多张卡 2:只对给定序列号的卡操作 unsigned char _SecNr:扇区号 unsigned long _Value:初始值 unsigned char *_Snr:卡的序列号地址 返 回:成功则返回 0 例:st=rf_HL_initval(icdev,0,3,100L,&Snr); 注:高级函数为几个低级函数的组合,对卡操作之前不必使用 rf_card和 rf_authentication函数。 (28)_int16 rf_HL_decrement(HANDLE

31、icdev,unsigned char _Mode, unsigned char _SecNr,unsigned long _Value, unsigned long _Snr,unsigned long *_NValue, unsigned long *_NSnr); 功 能:高级减值函数 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Mode:寻卡模式,同 HR_initval; unsigned char _SecNr:扇区号 RF 系列非接触式 IC 卡读写器使用手册 14 unsigned long _Value:要减的值 unsig

32、ned long _Snr:卡的序列号 unsigned long *_NValue:减后的值的地址 unsigned long *_NSnr:返回卡的序列号地址 返 回:成功则返回 0 例:st=rf_HL_decrement(icdev,0,2,1,Snr,&Nvalue,&NSnr); (29)_int16 rf_HL_increment(HANDLE icdev,unsigned char _Mode, unsigned char _SecNr,unsigned long _Value, unsigned long _Snr,unsigned long *_NValue, unsign

33、ed long *_NSnr); 功 能:高级增值函数 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Mode:寻卡模式,同 HL_initval; unsigned char _SecNr:扇区号 unsigned long _Value:要加的值 unsigned long _Snr:卡的序列号 unsigned long *_NValue:加后的值的地址 unsigned long *_NSnr:返回卡的序列号地址 返 回:成功则返回 0 例:st=rf_HL_increment(icdev,0,2,1,Snr,&Nvalue,&NSnr

34、); (30)_int16 rf_HL_write(HANDLE icdev,unsigned char _Mode,unsigned char _Adr, unsigned long *_Snr,unsigned char *_Data); 功 能:高级写数据 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Mode:寻卡模式,为 0、1 或 2 Mode=0: IDLE 模式,一次只操作一张卡 1:ALL 模式,一次可操作多张卡 2:只对给定序列号的卡操作 unsigned char _Adr:块地址 unsigned long *_Snr:

35、卡的序列号地址 unsigned char *_Data:写入的数据 返 回:成功则返回 0 例:st=rf_HL_write(icdev,0,3,&Snr,data); (31)_int16 rf_HL_read(HANDLE icdev,unsigned char _Mode,unsigned char _Adr, unsigned long _Snr,unsigned char *_Data, unsigned long *_NSnr); 功 能:高级读数据 参 数:HANDLE icdev:rf_init返回的设备描述符 unsigned char _Mode:同 HL_write; unsigned char _Adr:块地址 unsigned long _Snr:卡的序列号 unsigned char *_Data:读出的数据 unsigned long *_NSnr:返回卡的序列号地址 成功则返回0 列如st=rf_HL_read(icdev,0,3,Snr,data,&NSnr);

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号