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

2019-04-10 09:52

3.4 C语言库函数

(1) int rf_init(char *_Comstr, ...); 功 能:初始化串口

参 数:char * _Comstr:指向字符串的指针,取值为“COM1”~“COM4” char *BaudStr:为通讯波特率9600~115200;该参数可省略,缺省为115200

返 回:成功则返回 0 例:int st;

st=rf_init(\(2) void rf_exit(void); 功 能:恢复串口 参 数:无 返 回:无

例:rf_exit();

(3) int rf_card(unsigned char _Mode,unsigned long *_Snr); 功 能:寻卡,能返回在工作区域内某张卡的序列号 参 数:unsigned char _Mode:寻卡模式 取值如下:

0 — 选择IDLE模式

1 — 选择ALL模式,一次可选择多张卡 unsigned long *_Snr:返回卡的序列号地址 返 回:成功则返回 0 例:int st;

unsigned long snr; st=rf_card(0,&snr);

注:选择IDLE模式,在对卡进行读写操作后,必须执行rf_halt()指令中止卡操作。只有当该卡离开并再次进入操作区时,读写器才能够再次对它进行操作。 (4) int rf_authentication(unsigned char _Mode,unsigned char _SecNr); 功 能:验证某一扇区密码

参 数:unsigned char _Mode:验证密码的方式 取值如下:

0 — 用KEYSET0和KEYA验证 1 — 用KEYSET1和KEYA验证 2 — 用KEYSET2和KEYA验证 4 — 用KEYSET0和KEYB验证 5 — 用KEYSET1和KEYB验证 6 — 用KEYSET2和KEYB验证

unsigned char _SecNr:要验证密码的扇区号(0~15) 返 回:成功则返回 0 例:int st;

st=rf_authentication(0,0);

注:每张卡上有A密码和B密码,可根据实际需要确定是否使用B密码,这

由卡的存取

控制位来决定。此外,读写器中可以存放三套密码,可用rf_load_key()来分别装入,

只有装入后才能使用验证密码函数验证。

(5)int rf_halt(void); 功 能:中止卡操作 参 数:无

返 回:成功则返回0 例:int st;

st=rf_halt(); 注:使用rf_card()函数时,如果模式选择为 0, 则在对卡进行读写操作后,必须

执行rf_halt()。

(6) int rf_read(usigned char _Adr,unsigned char *_Data); 功 能:读数据,一次必须读一个块

参 数:unsigned char _Adr:块地址(0~63) unsigned char *_Data:读出数据 返 回:成功则返回 0 例:int st;

unsigned char data[16]; st=rf_read(0,data);

(7) int rf_read_hex(usigned char _Adr,unsigned char *_Data); 功 能:以十六进制读数据,一次必须读一个块 参 数:unsigned char _Adr:块地址(0~63)

unsigned char *_Data:读出数据,数据以16进制形式存放 返 回:成功则返回0; 例:int st;

unsigned char data[32]; st=rf_read_hex(0,data);

(8) int rf_write(unsingned char _Adr,unsigned char *_Data); 功 能:写数据,一次必须写一个块;

参 数:unsigned char _Adr:块地址(1~63) unsigned char *_Data:写入数据 返 回:成功则返回0; 例:int st;

unsigned char data[16]; st=rf_write(0,data);

(9) int rf_write_hex(unsigned char _Adr,unsigned char *_Data) 功 能:以十六进制写数据,一次必须写一个块; 参 数:unsigned char _Adr:块地址(1~63)

char *_Data:写入数据 返 回:成功则返回 0 例:int st;

char write_buf[17]=\ st=rf_write_hex(1,write_buf);

(10) int rf_initval(unsigned char _Adr,unsigned long _Value); 功 能:初始化块值

参 数:unsigned char _Adr:块地址(1~63) unsigned long _Value:初始值 返 回:成功则返回 0 例:int st;

unsigned long value;

value=1000; /* 给value赋值*/

st=rf_initval(1,value); /*将块1的值初始化为1000*/ 注:对块做数值操作时,必须先执行初始化值函数, 然后才可以读、减、加的操作。

(11) int rf_increment(unsigned char _Adr,unsigned long _Value); 功 能:块增值

参 数:unsigned char _Adr:块地址(1~63) unsigned long _Value:要增加的值 返 回:成功则返回 0; 例:int st;

unsigned long value; value=10;

st=rf_increment(1,value); /*将块1的值增加value*/ (12)int rf_decrment(unsigned char _Adr,unsigned long _Value); 功 能:块减值

参 数: unsigned char _Adr:块地址(1~63) unsigned long _Value:要减的值 返 回:成功则返回 0 例:int st;

unsigned long value;

value=10;

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

参 数:unsigned char _Adr:块地址(0~63) unsigned long *_Value:读出值的地址 返 回:成功则返回 0 例:int st;

unsigned long value;

st=rf_readval(1,&value); /*读出块1的值,放入value*/ (14) int rf_restore(unsigned char _Adr); 功 能:回传函数,将某块内容传入卡的内部寄存器 参 数:unsigned char _Adr:要进行回传的块地址 返 回:成功返回0 例:int st;

st=rf_restore(1);

注:用此函数将某一块中的数值传入内部寄存器,然后用rf_transfer()函数将

寄存器中数据再传送到另一块中去,实现块与块之间数值传送。该函数仅在

increment、decrement和restore命令之后调用。

(15) int rf_transfer(unsigned char _Adr); 功 能:传送,将寄存器的内容传送到块中

参 数:unsigned char _Adr:要传送的地址(0~63) 返 回:成功返回0 例:int st;

st=rf_transfer(1);

注:见rf_restore()的说明。

(16) int rf_load_key(unsigned char _Mode,unsigned char SecNr,KEY _Nkey); 功 能:将密码装入读写模块RAM中

参 数:unsigned char _Mode:同 rf_authentication() unsigned char _SecNr:同 rf_authentication() KEY *_Nkey:写入RAM中的卡密码 返 回:成功则返回 0

例://key A and key B

KEY tk[2]= { {{0xa0,0xa1,0xa2,0xa3,0xa4,0xa5}}, {{0xb0,0xb1,0xb2,0xb3,0xb4,0xb5}} }; /* 装入1扇区的0套A密码 */

if((rf_load_key(0, 1,&tk[1]))!=0) { ; printf(\ rf_exit() exit(1); }

注:KEY的定义在头文件中可以找到;*_Nkey应与卡中的密码相对应。如果卡中密码非

缺省密码,验证密码之前必须用load_key指令重新装入卡的密码。 (17) int rf_get_status(unsigned char *_Status); 功 能:取得读写器的版本号,如“mwrf025_v2.0” 参 数:unsigned char *_Status:返回版本信息

返 回:成功则返回 0 例:int st;

unsigned char *version; st=rf_get_status(version);

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

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

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

(19) int rf_disp(unsigned char pt_mode,unsigned int digit); 功 能:在读写器的显示屏上显示数字

参 数:unsigned char pt_mode: 小数点显示模式 取值如下:

0 — 小数点熄灭

1 — 个位后的小数点位亮 2 — 十位后的小数点位亮 3 — 百位后的小数点位亮 4 — 千位后的小数点位亮 unsigned int digit:要显示的数 返 回:成功则返回 0 例:int st;

st=rf_disp(0,1234) /*显示整数1234*/

(20) int rf_request(unsigned char _Mode,unsigned int *TagType); 功 能:寻卡请求

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

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

unsigned int *tagtype;

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

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

unsigned long *snr;


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

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

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

马上注册会员

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