RFID非接触式IC卡读写器用户手册.docx

上传人:b****2 文档编号:1600886 上传时间:2022-10-23 格式:DOCX 页数:12 大小:36.16KB
下载 相关 举报
RFID非接触式IC卡读写器用户手册.docx_第1页
第1页 / 共12页
RFID非接触式IC卡读写器用户手册.docx_第2页
第2页 / 共12页
RFID非接触式IC卡读写器用户手册.docx_第3页
第3页 / 共12页
RFID非接触式IC卡读写器用户手册.docx_第4页
第4页 / 共12页
RFID非接触式IC卡读写器用户手册.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

RFID非接触式IC卡读写器用户手册.docx

《RFID非接触式IC卡读写器用户手册.docx》由会员分享,可在线阅读,更多相关《RFID非接触式IC卡读写器用户手册.docx(12页珍藏版)》请在冰豆网上搜索。

RFID非接触式IC卡读写器用户手册.docx

RFID非接触式IC卡读写器用户手册

RFID非接触式IC卡读写器用户手册

V1.02

1、通信协议描述

1.1协议概述

该协议是上位机与读写器之间的通讯协议。

通讯的格式是:

1位起始位,1位长度标志位,若干数据位,1位异或校验位,1位结束位。

通讯的最大长度为64字节。

1.2字符定义

字符

数值

定义

STX

0x02

通讯开始

LEN

-

数据长度

DATA

-

数据

BCC

-

异或校验

ETX

0x03

通讯结束

1.3通讯过程示意图

1.4数据格式

Command(2bytes)

Data[0]……Data[m]

2、指令集

2.1指令一览表

指令码

功能

0xC001

寻卡(ISO/IEC15693)

0xC005

读取某一块的信息(ISO/IEC15693)

0xC006

将信息写入某一块(ISO/IEC15693)

0xC007

将某一块锁定(ISO/IEC15693)

0xC008

写入AFI(ISO/IEC15693)

0xC009

锁定AFI(ISO/IEC15693)

0xC00A

写入DSFID(ISO/IEC15693)

0xC00B

锁定DSFID(ISO/IEC15693)

0xC00C

获取系统信息(ISO/IEC15693)

0x3224

寻卡(ISO/IEC14443A存储卡)

0x3225

休眠卡片(ISO/IEC14443A存储卡)

0x3241

激活卡片(ISO/IEC14443A存储卡)

0x3243

读取某一块的信息(ISO/IEC14443A存储卡)

0x3244

将信息写入某一块(ISO/IEC14443A存储卡)

0x3245

读余额(ISO/IEC14443A存储卡)

0x3246

写入余额(ISO/IEC14443A存储卡)

0x3247

余额加值(ISO/IEC14443A存储卡)

0x3248

余额减值(ISO/IEC14443A存储卡)

0x324B

卡片复位(ISO/IEC14443A智能卡)

0x324C

发送应用命令(ISO/IEC14443A智能卡)

2.2状态返回值

返回值

意义

0x0000

操作成功

0xFFFF

操作失败

3、二次开发接口函数说明

3.1适用于符合ISO/IEC14443A标准的存储卡的接口函数

3.1.1MifareS50/S70卡片特性

ØS50具有1K字节的EEPROM,S70具有4K字节的EEPROM

ØS50分为16个扇区,每个扇区包括4块,每块16个字节,以块为存取单位

ØS70分为40个扇区,共256个块,每块16个字节,以块为存取单位

Ø用户可自定义每个存储块的访问条件

Ø每张卡有唯一序列号,为32位

Ø具有防冲突机制,支持多卡操作

Ø非接触传送数据和无源

Ø至少10年数据保存期

Ø至少10万次擦写

Ø读写距离在100mm内

Ø工作频率为13.56MHz

3.1.2函数使用注意事项

该二次开发接口函数库提供用于下发命令至读写器的函数,这些函数能够控制读写器对卡片进行寻卡及读写操作。

在对卡片进行操作前必须先寻卡,寻卡成功后才能对卡片进行后续操作。

卡片的读写操作是以块为单位,每块为16个字节。

不同扇区可以用不同的密钥进行认证,每个扇区又可以使用A密钥或B密钥进行认证。

3.1.3函数说明

(1)寻卡

intfind_14443(BYTE*type,BYTE*card_uid);

////////////////////////////////////////////////////////////////////////////////////////////////////////

//功能:

寻卡

//

//入口参数:

//

//出口参数:

type,指示寻卡成功的卡片为A类卡或是B类卡

//card_uid,指示用于存放UID的起始地址

//

//返回值:

返回0,通信失败

//返回1,操作成功

//返回0xff,操作失败

//

//说明:

获取卡片UID

//////////////////////////////////////////////////////////////////////////////////////////////////////

(2)HALT卡

intset_halt();

////////////////////////////////////////////////////////////////////////////////////////////////////////

//功能:

使卡片休眠

//

//入口参数:

//

//出口参数:

//

//返回值:

返回-2,尚未寻卡

//返回0,通信失败

//返回1,操作成功

//返回0xff,操作失败

//

//说明:

在HALT卡前必须已经寻卡成功

//////////////////////////////////////////////////////////////////////////////////////////////////////

(3)激活卡片

intset_active();

////////////////////////////////////////////////////////////////////////////////////////////////////////

//功能:

激活卡片

//

//入口参数:

//

//出口参数:

//

//返回值:

返回-2,尚未寻卡

//返回0,通信失败

//返回1,操作成功

//返回0xff,操作失败

//

//说明:

可以令处于休眠状态的卡片处于激活状态

//////////////////////////////////////////////////////////////////////////////////////////////////////

(4)读块

intread_block(intpage,intblock,unsignedcharpswtype,unsignedchar*psw,unsignedchar*des_data,int*des_len);

////////////////////////////////////////////////////////////////////////////////////////////////////////

//功能:

读取一个块的值

//

//入口参数:

page,指定要读取的块所在的扇区

//block,指定要读取的块的块号

//pswtype,指定用于认证的密钥的类型,其值可为0x0a或者0x0b

//psw,指示用于认证的密钥的值的起始地址

//

//出口参数:

des_data,指示用于存放读取的数据的起始地址

//des_len,指示用于存放返回读取数据长度的起始地址

//

//返回值:

返回-2,尚未寻卡

//返回-1,传入参数错误

//返回0,通信失败

//返回1,操作成功

//返回0xff,操作失败

//

//说明:

pswtype用于指于认证密钥为A密钥或为B密钥,对应A密钥pswtype必

//须为0x0a,对应B密钥pswtype必须为0x0b。

//////////////////////////////////////////////////////////////////////////////////////////////////////

(5)写块

intwrite_block(intblock,intpage,unsignedcharpswtype,unsignedchar*psw,unsignedchar*src_data,intsrc_len)

//////////////////////////////////////////////////////////////////////////////////////////////////////

//功能:

往一个块写入指定的值

//

//入口参数:

page,指定要写入的块所在的扇区

//block,指定要写入的块的块号

//pswtype,指定用于认证的密钥的类型,其值可为0x0a或者0x0b

//psw,指示用于认证的密钥的值的起始地址

//src_data,指示用于存放要写入的数据的起始地址

//src_len,指示用于存放返回写入数据的长度

//

//出口参数:

//

//返回值:

返回-2,尚未寻卡

//返回-1,传入参数错误

//返回0,通信失败

//返回1,操作成功

//返回0xff,操作失败

//

//说明:

pswtype用于指于认证密钥为A密钥或为B密钥,对应A密钥pswtype必

//须为0x0a,对应B密钥pswtype必须为0x0b。

//////////////////////////////////////////////////////////////////////////////////////////////////////

(6)读余额

intread_account(intpage,intblock,unsignedcharpswtype,unsignedchar*psw,LONG*account)

//////////////////////////////////////////////////////////////////////////////////////////////////////

//功能:

从指定的块里读取钱包的余额(在调用该函数前必须确保钱包已初始化)

//

//入口参数:

page,指定钱包所在的扇区

//block,指定钱包所在的块的块号

//pswtype,指定用于认证的密钥的类型,其值可为0x0a或者0x0b

//psw,指示用于认证的密钥的值的起始地址

//

//出口参数:

account,指示用于存放要读取的余额的起始地址

//

//返回值:

返回-2,尚未寻卡

//返回-1,传入参数错误

//返回0,通信失败

//返回1,操作成功

//返回0xff,操作失败

//

//说明:

pswtype用于指于认证密钥为A密钥或为B密钥,对应A密钥pswtype必

//须为0x0a,对应B密钥pswtype必须为0x0b。

//读余额前必须确保参数指定的扇区和块已初始化为钱包,否则可以通过调

//用write_account()函数来初始化为钱包

//////////////////////////////////////////////////////////////////////////////////////////////////////

(7)写余额(初始化)

intwrite_account(intpage,intblock,unsignedcharpswtype,unsignedchar*psw,LONGaccount)

////////////////////////////////////////////////////////////////////////////////////////////////

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1