MF-50N非接触式IC卡读写函数(6)

2019-04-10 09:52

unsigned char *_Data:写入数据,块长度为32Byte 返 回:成功则返回 0 例:__int16 st;

unsigned char data[32]=\ /* data赋值为16个0xaa*/

st=rf_write_hex(icdev,1,data); /*写入块1*/

(10)__int16 rf_initval(HANDLE icdev,unsigned char _Adr,unsigned long _Value);

功 能:初始化块值

参 数:HANDLE icdev:rf_init()返回的设备描述符 unsigned char _Adr:块地址(1~63) unsigned long _Value:初始值 返 回:成功则返回 0 例:__int16 st;

unsigned long value;

value=1000;

st=rf_initval(icdev,1,value); /*将块1的值初始化为value*/

注:作为数值处理的块,是以特殊格式存贮的,所以必须用初始化值函数初始化,

初始化之后方可进行读、减、加的处理。

(11)__int16 rf_increment(HANDLE icdev,unsigned char _Adr,unsigned long _Value);

功 能:块增值操作

参 数:HANDLE icdev:rf_init()返回的设备描述符 unsigned char _Adr:块地址(1~63) unsigned long _Value:要增加的值 返 回:成功则返回 0; 例:__int16 st;

unsigned long value;

value=1;

st=rf_increment(icdev,1,value); /*将块1的值增加value*/ (12)__int16 rf_decrment(HANDLE icdev,unsigned char _Adr,unsigned long _Value);

功 能:块减值操作

参 数:HANDLE icdev:rf_init()返回的设备描述符 unsigned char _Adr:块地址(1~63) unsigned long _Value:要减少的值 返 回:成功则返回 0 例:__int16 st;

unsigned long value;

value=1;

st=rf_decrement(icdev,1,value); /*将块1的值减少value*/ (13)__int16 rf_readval(HANDLE icdev,unsigned char _Adr,unsigned long *_Value); 功 能:读值

参 数:HANDLE icdev:rf_init()返回的设备描述符 unsigned char _Adr:块地址(0~63)

unsigned long *_Value:返回读出值的地址 返 回:成功返回0 例:__int16 st;

unsigned long value;

st=rf_readval(icdev,1,&value); /*读出块1的值,放入value*/

(14)__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()函数

将寄存器的数据再传送到另一块中去,即实现了块与块之间的数值传送。 (15)__int16 rf_transfer(HANDLE icdev,unsigned char _Adr); 功 能:将寄存器的数据传送到某一块中

参 数:HANDLE icdev:rf_init()返回的设备描述符 unsigned char _Adr:要传送的地址(0~63) 返 回:成功返回0 例:__int16 st;

st=rf_transfer(icdev,1); 注:见rf_restore()的说明。

(16)__int16 rf_load_key(HANDLE icdev,unsigned char _Mode,unsigned char SecNr,

unsigned char * _Nkey); 功 能:向读写器的RAM装入密码

参 数: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 tk[2][7]= { {0xa0,0xa1,0xa2,0xa3,0xa4,0xa5}, {0xb0,0xb1,0xb2,0xb3,0xb4,0xb5} }; /*装入1扇区的A密码 0套,*/

if((rf_load_key(icdev,0, 1,tk[1]))!=0) {

printf(\ rf_exit(); exit(1); }

注:*_Nkey是与卡中的密码相对应的密码。

(17)__int16 rf_load_key_hex(HANDLE icdev,unsigned char _Mode, unsigned char SecNr,char * _Nkey); 功 能:向读写器的RAM装入16进制密码

参 数:HANDLE icdev:rf_init()返回的设备描述符

unsigned char _Mode :同 rf_authentication() unsigned char _SecNr:同 rf_authentication() unsigned char *_Nkey:要写入读写器RAM中的卡密码 返 回:成功则返回 0 例://key A

unsigned char tk[]= \等同于{0xa0_.0xa5}*/ /*装入1扇区的A密码|0套,*/

if((rf_load_key_Hex(icdev,0, 1,tk))!=0) {

printf(\ rf_exit(); exit(1); }

注:*_Nkey是与卡中的密码相对应的密码。

(18)_int16 rf_get_status(unsigned char *_Status); 功 能:取得读写器的版本号,如“mwrf025_v2.0”

参 数:unsigned char *_Status:返回读写器版本信息 返 回:成功则返回 0 例:int st;

unsigned char status[32]; st=rf_get_status(status);

(19) __int16 rf_request(int icdev,unsigned char _Mode, unsigned int *TagType);

功 能:寻卡请求

参 数: HANDLE icdev:设备描述符

unsigned char _Mode:寻卡模式,为0或1 Mode=0:IDLE模式,一次只选一张卡 Mode=1:ALL模式, 一次可选多张卡

unsigned int *Tagtype:指向返回的卡类型值 返 回:成功则返回 0 例:int st;

st=rf_request(icdev,IDLE,tagtype); 注:对卡操作前先执行寻卡指令

(20)__int16 rf_anticoll(int icdev,unsigned char _Bcnt,unsigned long *_Snr);

功 能:防止卡冲突;返回卡的序列号 参 数:HANDLE icdev: 设备描述符 unsigned char _Bcnt: 预选卡所用的位数,标准值为0(不考虑系列号) unsigned long *_Snr: 返回的卡序列号地址 返 回:成功则返回 0 例:int st;

st=rf_anticoll(0,snr);

注:request指令之后应立即调用anticoll,除非卡的序列号已知。

(21)__int16 rf_select(int icdev,unsigned long _Snr,unsigned char *_Size);

功 能:从多个卡中选取一个给定序列号的卡 参 数:HANDLE icdev:设备描述符 unsigned long _Snr:卡序列号

unsigned char *_Size:指向返回的卡容量的数据 返 回:成功则返回 0 例: int st; snr=239474;

st=rf_select(snr,size); /* 返回239474卡的容量 */

注:上述rf_card()寻卡函数包含了19~21三个低级函数。每次对卡重新操作时首先要调用rf_card()函数(或连续调用19~21三个函数)。

(22)__int16 rf_encrypt(char *key,char *ptrsource,unsigned __int16 msglen,

char *ptrdest); 功 能:DES算法加密

参 数:char *key:加密的密码,长度为8 char *ptrsource:原文

unsigned __int16 msglen:原文长度 char *ptrdest:密文 返 回:成功则返回0

例:/* 将长度为16的”abcdefghabcdefgh”用密码“12345678”加密 */ rf_encrypt(“12345678”,”abcdefghabcdefgh”,16,ptrdest)

(23)__int16 rf_decrypt(char *key,char *ptrsource,unsigned __int16 msglen,

char *ptrdest);

功 能:DES算法解密函数

参 数:char *key:加密的密码,长度为8 char *ptrsource:加密后密文

unsigned __int16 msglen:原文长度 char *ptrdest:原文 返 回:成功则返回0

例:略,使用过程与rf_encrypt相反。

(24)__int rf_beep(unsigned int _Msec); 功 能:蜂鸣

参 数:unsigned int _Msec:蜂鸣时间的长短,单位是10毫秒; 返 回:成功则返回 0 例:int st;

st=rf_beep(10); /*鸣叫100毫秒*/

(25)__int rf_disp(HANDLE icdev,unsigned char pt_mode,unsigned 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*/ (26)__int16 rf_reset(HANDLE icdev,unsigned __int16 _Msec); 功 能:射频头复位

参 数:HANDLE icdev:rf_init()返回的设备描述符

unsigned __int16 _Msec:复位时间,0~500毫秒有效 返 回:成功则返回 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 _Mode:寻卡模式,为0、1或2

Mode=0: IDLE模式,一次只操作一张卡


MF-50N非接触式IC卡读写函数(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:业余篮球队训练计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: