WMRFIC0601读写器简介_第1页
WMRFIC0601读写器简介_第2页
WMRFIC0601读写器简介_第3页
WMRFIC0601读写器简介_第4页
WMRFIC0601读写器简介_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、WMRFIC06-01读写器简介非接触式IC卡基础知识一、概述非接触式IC卡又称射频卡,是世界上最近几年发展起来的一项新技术,它成功地将射频识别技术和IC卡技术结合起来,解决了无源(卡中无电源)和免接触这一难题,是电子器件领域的一大突破。与接触式IC卡相比较,非接触式卡具有以下优点:1、可靠性高非接触式IC卡与读写器之间无机械接触,避免了由于接触读写而产生的各种故障。例如:由于粗暴插卡、非卡外物插入、灰尘或油污导致接触不良等原因造成的故障。此外,非接触式卡表面无裸露的芯片,无须担心芯片脱落、静电击穿、弯曲损坏等问题,既便于卡片的印刷,又提高了卡片的使用可靠性。2、操作方便,快捷由于非接触通讯,

2、读写器在10cm范围内就可以对卡片操作,所以不必插拨卡,非常方便用户使用。非接触式卡使用时没有方向性,卡片可以任意方向掠过读写器表面,即可完成操作,这大大提高了每次使用的速度。3、防冲突非接触式卡中有快速防冲突机制,能防止卡片之间出现数据干扰,因此,读写器可以“同时”处理多张非接触式IC卡。这提高了应用的并行性,无形中提高了系统工作速度。4、可以适合于多种应用非接触式卡的存储结构特点使它一卡多用,能应用于不同的系统,用户可根据不同的应用设定不同的密码和访问条件。5、加密性能好非接触式卡的序列号是唯一的,制造厂家在产品出厂前已将此序列号固化,不可再更改。非接触式卡与读写器之间采用双向验证机制,即

3、读写器验证IC卡的合法性,同时IC卡也验证读写器的合法性。非接触式卡在处理前要与读写器进行三次相互认证,而且在通讯过程中所有的数据都加密。此外,卡中各个扇区都有自己的操作密码和访问条件。由于非接触式IC卡具有以上无可比拟的优点,所以它很适宜应用于电子钱包,公路自动收费系统和公共汽车自动售票系统等。二、系统参数*工作频率:*通信速率:106KB波特率*防冲突:同一时间可处理多张卡*读写距离:在100MM内(与天线形状有关)能方便、快速地传递数据*半双工通讯方式*在无线通讯过程中通过以下机制来保证数据完整· 防冲突机制· 每块有16位CRC纠错· 每字节有奇偶校验位&

4、#183; 检查位数· 用编码方式来区分“1”、“0”或无信息· 信道监测(通过协议顺序和位流分析)*支持多卡操作· 防冲突机制同一时间内可处理多张卡,并且在处理卡片时可防突发的读或写或读写中断现象· 动态读写当对某张卡片进行处理时,其它卡可进入或离开射频区域· 快速防冲突协议每增加一张卡对整个处理过程来说仅增加1ms*材料:PVC*尺寸:符合ISO10536标准 工作温度:20至50(湿度为90)*无电池:无线方式传递数据和能量*芯片加工技术:采用高速的CMOS EEPROM工艺*组成部分:一个芯片和一个简单的线圈*安全性:· 三次

5、相互认证(ISO/IEC DIS97982)· 通讯过程中所有数据均加密以防止信号截取· 每一扇区有相互独立的密码· 每张卡的序列号是全球唯一的,有32位· 传输密码保护*支持一卡多用的存储结构· 8K位EEPROM,无电池· 分为16个扇区支持多种应用· 每个扇区包括4块· 块是最小的读写单位,每块包含16个字节· 每个扇区有自己的一组密码· 用户可灵活地定义每一扇区的访问条件· 运算能力:加和减· 数据保持10年*典型处理时间· 识别一张卡8ms (包括复位应答

6、和防冲突)· 读一个块 2.5ms (不包括认证过程)4.5ms (包括认证过程)· 写一个块读控制 12ms (不包括认证过程) 14ms (包括认证过程)· 典型交易过程 <50ms接口定义:该读写器的引出线分两部分,键盘接口可以串在键盘与主机的键盘口中间,用于给读写器供电;另一个接头为RS232接口,可接计算机的串口。通用读写函数Mifare卡片读写流程注:CardReady函数检测天线范围内有效卡片,并将其卡片序列号码返回到snr变量中ReadCard,WriteCard,FormatPurse,Increase,Decrease,ReadPurse

7、的操作均对CardReady返回的卡片进行操作Halt将卡片设为停止 模式,此模式卡片不能由CardReady检测到,除非卡片Reset,即将卡片移出天线范围然后又进入。2.1. int CardReady(long *Snr)功能:检测卡片天线范围内是否有卡,若有,则将卡号返回到Snr变量中,然后锁定此卡(Select Card)。例子:integer Ret;longInt snr;Ret:=CardReady(snr);If Ret=0 Then ShowMessage(IntToStr(snr)显示结果为 12345678(返回检测到的卡片的卡号)Else ShowMsg(Ret) 根

8、据函数返回值显示不同的错误信息注:int NEWCardReady(long *snr) 函数可以得到正数的卡号;2.2. int ReadCard(int key_type,char *key,int block_no,char *data)功能:先用key_type类型(KeyA,KeyB)的密钥认证第block_no对应的Sector的密钥,密钥值为key,密钥认证通过后,将第block_no块的数据读出,返回到data变量中。key_type:Bit7654321Bit0ABKS1KS0AB = 0用KeyA认证AB = 1用KeyB认证KS1KS0功能00用Key Set 0认证01

9、用Key Set 1认证10用Key Set 2认证block_no:00第 1 块:63第 64 块key:密钥值,6字节例子:integer Ret;longint snr;integer key_type,block_no;string key,block_data;Ret:=CardReady(snr);If Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;Key_type=0;Block_no=1;Key=扚FFFFFFFFFFF? 两个十六进制数为一字节SetLength(block_data,32); Ret

10、:=ReadCard(key_type,key,block_no,block_data);If Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;ShowMessage(block_data);显示返回的卡片block_no的内容,为16字节, 两个十六进制数为一字节,例如2.3. int WriteCard(int key_type,char *key,int block_no,char *data)功能:先用key_type类型(KeyA,KeyB)的密钥认证第block_no对应的Sector的密钥,密钥值为key,密

11、钥认证通过后,将block_data中的数据写入第block_no块中。key_type:Bit7654321Bit0ABKS1KS0AB = 0用KeyA认证AB = 1用KeyB认证KS1KS0功能00用Key Set 0认证01用Key Set 1认证10用Key Set 2认证block_no:00第 1 块:63第 64 块key:密钥值,6字节data:写入块中的数据,16字节例子:integer Ret;longint snr;integer key_type,block_no;string key,block_data;Ret:=CardReady(snr);If Ret<

12、;>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;Key_type=0;Block_no=1;Key=FFFFFFFFFFF 两个十六进制数为一字节Ret:=WriteCard(key_type,key,block_no,block_data);If Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;ShowMessage( 写卡成功);2.4. int FormatPurse(int key_type,char *key,int block_no,long valu

13、e)功能:先用key_type类型(KeyA,KeyB)的密钥认证第block_no对应的Sector的密钥,密钥值为key,密钥认证通过后,将第block_no的数据块格式化成电子钱包格式,电子钱包中初始值为value。key_type:Bit7654321Bit0ABKS1KS0AB = 0用KeyA认证AB = 1用KeyB认证KS1KS0功能00用Key Set 0认证01用Key Set 1认证10用Key Set 2认证klock_no:00第 1 块:63第 64 块value:钱数value0: 底位字节value3: 高位字节例如:0x0A123456 è valu

14、e0=0x56value3=0x0A例子:integer Ret;longint snr;integer key_type,block_no;string key,block_data;long value,Balance;Ret:=CardReady(snr);If Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;Key_type=0;Block_no=1;Key=FFFFFFFFFFF 两个十六进制数为一字节Value=1;Ret:=FormatPurse(key_type,key,block_no,value);If

15、 Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;ShowMessage(格式化电子钱包成功); 2.5.int increase(int key_type,char *key,int block_no,long value,long *balance)功能:先用key_type类型(KeyA,KeyB)的密钥认证第block_no对应的Sector的密钥,密钥值为key,密钥认证通过后,将第block_no的数据块电子钱包增加value。然后将加钱后的钱包值返回到变量balance中。key_type:Bit765432

16、1Bit0ABKS1KS0AB = 0用KeyA认证AB = 1用KeyB认证KS1KS0功能00用Key Set 0认证01用Key Set 1认证10用Key Set 2认证block_no:00第 1 块:63第 64 块key:密钥值,6字节value:钱数value0: 底位字节value3: 高位字节例如:0x0A123456 è value0=0x56value3=0x0A例子:integer Ret;longint snr;integer key_type,block_no;string key,block_data;long value,Balance;Ret:=C

17、ardReady(snr);If Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;Key_type=0;Block_no=1;Key=FFFFFFFFFFF 两个十六进制数为一字节Value=1;Ret:=increase(key_type,key,block_no,value,balance);If Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;ShowMessage(IntToStr(balance); /显示钱包中的剩余钱2.6. int de

18、crease(int key_type,char *key,int block_no,long value,long *balance)功能:先用key_type类型(KeyA,KeyB)的密钥认证第block_no对应的Sector的密钥,密钥值为key,密钥认证通过后,将第block_no的数据块电子钱包减少value。然后将减钱后的钱包值返回到变量balance中。key_type:Bit7654321Bit0ABKS1KS0AB = 0用KeyA认证AB = 1用KeyB认证KS1KS0功能00用Key Set 0认证01用Key Set 1认证10用Key Set 2认证block_

19、no:00第 1 块:63第 64 块key:密钥值,6字节value:钱数value0: 底位字节value3: 高位字节例如:0x0A123456 è value0=0x56value3=0x0A例子:integer Ret;longint snr;integer key_type,block_no;string key,block_data;long value,Balance;Ret:=CardReady(snr);If Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;Key_type=0;Block_n

20、o=1;Key=FFFFFFFFFFF 两个十六进制数为一字节Value=1;Ret:=decrease(key_type,key,block_no,value,balance);If Ret<>0 ThenBeginShowMsg(Ret) 根据函数返回值显示不同的错误信息Exit;End;ShowMessage(IntToStr(balance); /显示钱包中的剩余钱包2.7. int ReadPurse(int key_type,char *key,int block_no,long *balance)功能:先用key_type类型(KeyA,KeyB)的密钥认证第block_no对应的Sector的密钥,密钥值为key,密钥认证通过后,将第block_no的数据块电子钱包值返回到balance变量中key_type:Bit7654321Bit0ABKS1KS0AB = 0用KeyA认证AB = 1用KeyB认证KS1KS0功能00用Key Set 0认证01用Key Set 1认证10用Key Set 2认证block_no:00第 1 块:63第 64 块key:密钥值,6字节例子:integer Ret;longint snr;integer key_type,block_no;string key,block_data;lon

温馨提示

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

评论

0/150

提交评论