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

2019-04-10 09:52

(14) rf_tran(icdev,_Adr);

功 能:将寄存器的内容传送到块中

参 数:icdev: rf_init()返回的设备描述符 _Adr:整数,为要传送的地址(0~63) 返 回:成功返回0

例:st=rf_tran(icdev,1); 注:见rf_rest()的说明。

(15) rf_rest(icdev,_Adr);

功 能:将块中数据回传到卡的寄存器中 参 数:icdev: rf_init() 返回的设备描述符 _Adr:整数,为要进行回传的地址(0~63) 返 回:成功返回0

例:st=rf_rest(icdev,1);

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

的数据再传送到另一块中,即实现了块与块之间的数值传送。 (16)rf_ld_k(icdev,_Mode,_SecNr,Key); 功 能:向读写器的RAM中装入密码

参 数:icdev: rf_init()返回的设备描述符 _Mode:同 rf_auth() _SecNr: 同 rf_anth()

Key:字符串,为写入读写器RAM中的卡密码 返 回:成功则返回 0

例:Key=Chr(160)+Chr(161)+Chr(162)+Chr(163)+Chr(164)+Chr(165) st=rf_ld_k(icdev,0,1,Key);

(17) rf_ld_kh(icdev,_Mode,_SecNr,Key); 功 能:向读写器的RAM中装入十六进制密码 参 数:icdev: 返回的设备描述符 _Mode:同 rf_auth() _SecNr:同 rf_auth()

Key:字符串,为写入读写器RAM中的卡密码 返 回:成功则返回 0

例:Key=\

st=rf_ld_kh(icdev,0,1,Key);

(18)rf_beep(icdev,_Msec); 功 能:蜂鸣

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

_Msec: 蜂鸣时间的长短,单位是10毫秒; 返 回:成则返回 0

例: st=rf_beep(icdev,10); /*鸣叫100毫秒*/

(19)rf_disp(icdev,pt_mode,digit); 功 能:使读写器的数码管显示数字

参 数:icdev: rf_init()返回的设备描述符 pt_mode: 小数点显示模式 取值如下:

0 — 小数点熄灭

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

例:st=rf_disp(icdev,0,1234); /*显示整数1234*/ (20)rf_get_sta(icdev)

功 能:读取版本号,如“mwrf025_v2.0” 参 数:icdev: rf_init()返回的设备描述符 返 回:成功则返回读写器版本信息 例:VERBUFF=rf_get_sta(icdev); (21)rf_reset(icdev,_Msec) 功 能:射频头复位

参 数:icdev: rf_init()返回的设备描述符 _Msec:复位时间,0~500毫秒有效 返 回:成功则返回 0

例:st=rf_reset(icdev,60);

(22) rf_HL_ini(icdev,Mode,_SecNr,Value,_Snr) 功 能:高级初始化值

参 数:icdev: rf_init()返回的设备描述符 Mode=0:IDLE模式,一次只操作一张卡 1:ALL模式,一次操作多张卡 2:只对给定序列号的卡操作 _SecNr:扇区号(0~15) Value:初始值 _Snr:卡的序列号 返 回:成功则返回卡的序列号 例:?\

SNR=rf_HL_ival(ICDEV,1,10,5854019,SNR) (23)rf_HL_dec(icdev,Mode,_SecNr,Value,_Snr) 功 能:高级减值操作

参 数:icdev: rf_init()返回的设备描述符 Mode:寻卡模式 ,同HL_ini(); _SecNr:扇区号

Value:要减的值 _Snr:卡的序列号 返 回:成功则返回卡的序列号

例:NSnr=rf_HL_dec(icdev,0,3,Snr); (24)rf_HL_inc(icdev,Mode,_SecNr,Value,_Snr) 功 能:高级增值操作

参 数:icdev: rf_init()返回的设备描述符 Mode:同HL_ini(); _SecNr:扇区号 Value:要加的值 _Snr:卡的序列号 返 回:成功则返回卡的序列号 例:?\

SNR=rf_HL_inc(ICDEV,1,10,100,SNR)

(25) rf_HL_wr(icdev,Mode,_Adr,_Snr,_Data) 功 能:高级写数据

参 数:icdev: rf_init()返回的设备描述符 Mode:同HL?_ini(); _Adr:块地址(1~63) _Snr:卡的序列号 _Data:要写的数据 返 回:成功则返回卡的序列号 例:?\

SNR=rf_HL_wr(ICDEV,1,41,SNR,\

(26) rf_HL_rd(icdev,Mode,_Adr,_Snr) 功 能:高级读数据

参 数:icdev: rf_init()返回的设备描述符 Mode:同HL?_ini(); _Adr:块地址(0~63) _Snr:卡的序列号

返 回:成功则返回长度为17 B的字符串,第一个字符为'0',从第二个字符开始的16个字

节为该块的数据;否则请参考错误值; 例:?\

READBUFFER=RFX_REA_H(ICDEV,1,41,SNR)

(27)ic_encrypt(key, ptrsource, msglen ) 说明: DES算法加密函数

参数: key:加密的密钥,长度为8 ptrsource: 原文

msglen:原文长度必需为8的倍数

返回: 返回的第一个字符值为0,表示操作成功;从第二个字符开始为密文

举例: st=ic_encrypt(“12345678”,”abcdefghabcdefgh”,16) 将长度为16的”abcdefghabcdefgh”用密码“12345678” 加密,加密后的密文

放在 st中从第2个字符开始字节处。

(28)ic_decrypt(key, ptrsource, msglen)

说明:DES算法解密函数,使用过程与ic_encrypt相反 调用:key: 加密的密钥;长度为8 ptrsource: 加密后的密文

msglen: 原文长度必需为8的倍数

返回:返回的第一个字符值为0,表示操作成功;从第二个字符开始为解密后的原文

举例:st=ic_decrypt(“12345678”,”abcdefghabcdefgh”,16) 将长度为16的”abcdefghabcdefgh”用密码“12345678” 解密 (29)rf_ini_ml(icdev, _Value); 功 能:初始化值,仅适用ML卡

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

_Value:整数,为初始值(长度为4字节) 返 回:成功则返回 0

例:/* 将电子钱包赋初值1000 */ st=rf_ini_val(icdev, 1000);

(30)rf_dec_ ml(icdev, _Value); 功 能:减值操作,仅适用于ML卡

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

_Value:整数,为要减少的值(长度为4字节) 返 回:成功则返回 0

例:/* 将电子钱包的数值减少10 */ st=rf_dec_val(icdev,10);

(31)rf_rd_ ml(icdev);

功 能:读值操作,仅适用于ML卡

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

返 回:成功返回要读出的值(整数);错误参考错误代码 例:/* 读出钱包的数值并存在st中*/ st=rf_rd_ml(icdev);

3.8 库函数使用范例

参见随盘MWRD\\EXAMPLES目录下各种开发平台的应用范例 3.9 函数错误类型代码

十六进制 错误类型 -0x80 读错误

-0x81 写错误 -0x82 通讯错误 -0x84 超时错误 -0x87 格式错误

3.10 版本兼容性

读写器的上层函数库Version 2.1与Version 2.0完全兼容,初始化函数rf_init()例外。 新版本改动如下: (1) C函数库中,初始化函数rf_init(COM,Baud)没有更改,波特率参数可省略;Windows

动态库和FoxPro函数库中,增加了Baud参数,此参数不能省略,其值为9600~115200。

(2) ML卡增加了三个专用函数,分别是初始化值、减值和读值。 (3) 提供了五个高级函数,功能进一步完善。 (4) 提供了DES加密和解密算法。 附录1 二种Mifare射频卡的特性

1.Mifare 1射频卡 Mifare 1射频卡容量为8192bit,整卡结构分为16个扇区,每个扇区有4个块,每块有16字节;每个扇区的块3 (即第4块) 由该扇区的密码A(6 字节)、存取控制(4字节)、和密码B(6 字节)组成,是一个特殊的块,其余三个块是一般的数据块。扇区0的块0是厂商代码,已固化,不可改写。

数据块有两种应用,一种是作一般的数据保存,可直接读写。另一种是作数值块,可进行初始化值、加值、减值、读值的运算。系统配有相应的函数完成其功能。

2. Mifare light射频卡

Mifate light射频卡容量为384bit,整卡由12页组成,每页有4个字节。0~1页存有卡序列号和代码信息;2~3页和10~11页作为一般数据块使用;4~5页作为电子钱包使用,其计数值为无符号的16位整型。6~9页由2套密码和存取控制位组成,利用A密码和B密码能够设置不同的访问权限。

Mifare light射频卡容量小、应用简单。数据块有两种应用,一种是作一般的数据保存。另一种是作数值块,可以进行初始化值、减值、读值的运算(无加值)。

ML卡不支持Mifare 1 的TRANSFER、RESTORE、INCREMENT和五个高级函数;其初始化值、减值和读值三个函数与M1卡也不兼容。利用DEMO演示系统可以对该卡读写操作,只是其页数要与M1卡的绝对块数相对应。


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

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

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

马上注册会员

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