块 0 数据块 0 扇区 0 块 1 数据块 1 块 2 数据块 2 块 3 密码 A 存取控制 密码 B 控制块 3 块 0 数据块 4 扇区 1 块 1 数据块 5 块 2 数据块 6 块 3 密码 A 存取控制 密码 B 控制块 7 0 数据块 60 扇区 15 1 数据块 61 2 数据块

Similar documents
Microsoft Word - FM11RF08_fs_chs.doc

JMY600系列读写卡模块

MR811系列非接触IC卡读写器说明书

MR701系列桌面式IC卡读写器

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

MR780系列桌面式IC卡读写器

untitled

高频模块实验指导书

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

<4D F736F F D20CBABC1FA DA3A8BAACB6C1D0B44D31A3A9C4A3BFE9D7CAC1CF B0E62E646F63>

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

廚餘來電.doc

二代证与IC卡兼容读写模块


动物学

05Cv1.mps

Chapter #

2 12

untitled

不 知 肉 味 的 用 法 相 同? (A) 長 煙 一 空, 皓 月 千 里 (B) 五 臟 六 腑 裡, 像 熨 斗 熨 過, 無 一 處 不 伏 貼 (C) 兩 片 頑 鐵, 到 他 手 裡, 便 有 了 五 音 十 二 律 似 的 (D) 吾 觀 三 代 以 下, 世 衰 道 微 12. 文

Tel: , Fax: STR-15 STR bps 2400bps 4800bps 9600bps STR : 500mW 2.ISM 433

SPMC75F2413A_EVM_使用说明_V1.2.doc

目录

EC20系列PLC与WEINVIEW通讯手册

84

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

目 录

Microsoft Word - M104X_V1.2_CN.doc

四、通 讯 规 约

Tel: , Fax: STR-30 STR bps 2400bps 4800bps 9600bps 19200bps 38400bps 76800bps

Information furnished by China-Vision INTELLIGENT CARD READER LTD is believed to be accurate and reliable

<4D F736F F D FB971BEF7BB50B971A46CB8735FB773A55FA5ABA5DFB7E7AADAB0AAAFC5A475B77EC2BEB77EBEC7AED55FA97EAE61C0F4B9D2B4BCBC7AB1B1A8EEA874B2CE2E646F63>

宏电文档

ICD ICD ICD ICD ICD

图 1 SD 卡引脚排序图 表 1 引脚 SD 总线模式 SPI 模式 CD/DAT3 CMD Vss Vcc CLK Vss DAT0 DAT1 DAT2 CS MOSI Vss Vcc CLK Vss MISO NC NC 2. SPI 模式介绍 SD 卡进在

Guava学习之Resources

USER’S MANUAL SP500 SERIES

网上对外发布资料适用版本

Microsoft Word - Ãû·½¹ãÓÃ.doc

Microsoft Word - LU-C 记录仪使用说明书V3.0版.doc

untitled

X 广 州 澳 希 亚 实 业 有 限 公 司 广 州 市 荔 湾 区 国 家 税 务 局 第 二 税 务 分 局 广 州 市 运 输 有 限 公 司 广 州 市 荔 湾 区 国 家 税 务 局 第 二 税 务 分

untitled

《美国名将全传——德怀特·戴维·艾森豪威尔》

校园之星

CWT-3000 SMS DTU

?????????? M340

系统架构 - 模块划分 功能 状态机 H265 主要的模块 : 1. 顶层模块 H265ENC_top 包括 sys_ctrl,enc_core 及 fetch 三个模块 2. sys_ctrl 就是一个状态机, 控制 fetch 和 enc_core 中各子模块的工作 3. enc_core 编码


MM

2005.book

A 世 象 叠 04 关 注 责 任 编 辑 _ 鲁 卫 平 美 编 _ 刘 一 舟 A 鹏 城 资 讯 8 企 业 融 之 道 融 资 赶 考 日 前, 龙 岗 创 投 服 务 广 场 和 龙 岗 天 安 数 码 城, 联 合 北 京 大 学 汇 丰 商 学 院 新 财 富 杂 志 等 机 构 共

修订历史版本 日期 原因 V /1/12 创建文档 V /1/16 修改部分格式 RTC 指令描述 V /1/17 修改身份证卡号读取 密钥部分描述 V /1/18 修改 M1 卡描述扇区部分 V /1/20 V1.06

93C46串行EEPROM数据读写

一 产 品 简 述 远 距 离 电 子 标 签 被 广 泛 应 用 在 人 员 车 辆 资 产 的 智 能 化 识 别 定 位 跟 踪 监 控 和 管 理 在 校 园 医 院 矿 井 敬 老 院 监 狱 停 车 场 物 流 景 区 动 物 园 等 场 合 有 着 成 熟 的 应 用 基 于 有 源

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

51 C 51 isp 10 C PCB C C C C KEIL

??????????????????

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

LETD型LED灯炮规格的更改

RS-232C [11-13] 1 1 (PLC) (HMI) Visual Basic (PLC) 402

Microsoft Word - FPKLSC_21.docx

untitled

untitled




DCU9010及9020硬件使用说明书.doc

Cree® XLamp® XB系列LED焊接和处理

TouchWin Human Machine Interface

USR-TCP232-XX系列模块设置协议

PCM-3386用户手册.doc

Converting image (bmp/jpg) file into binary format

軟體的安裝

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

P4VM800_BIOS_CN.p65

F515_CS_Book.book

Microsoft Word - SMB-63-2(簡体字).doc

工程师培训

Conductix-Wampfler Inductive Power Transfer IPT 2

<4D F736F F D20534D D3820BFAAB9D8C1BFB2C9BCAFC4A3BFE9>

水资源管理(十七)

AT89C2051中文资料.doc

技 術 士 技 能 檢 定 中 餐 烹 調 ( 素 食 項 ) 丙 級 術 科 測 試 參 考 資 料 目 錄 頁 次 壹 技 術 士 技 能 檢 定 中 餐 烹 調 丙 級 術 科 測 試 應 檢 人 須 知 一 一 般 說 明... 1 二 應 檢 人 自 備 工 ( 用 ) 具... 2 三

P4V88+_BIOS_CN.p65


修订历史版本 日期 原因 V /04/19 创建文档 V /05/1 发布 V /8/1 添加模块对 TypeB 协议支持描述 i

WatchOUT 315DT Installation Manual 2

t gb.fm

GPS

邻居啊 第二天 对门却悄无声息了 莫非昨夜的吵闹 仅是个幻觉 夜幕拉下时 寒风又吱溜溜地叫个不停 老婆 睡下后 我这只夜猫子 继续兴致勃勃地跟着福尔 摩斯去探案 白天的喧嚣退去了 周围格外安静 正 是读书的好时候 突然 响起了钟摆声 哒 哒 哒 节奏匀称 不疾不徐 声响却愈来愈大 格外突兀 了 原来

<4D F736F F D BAC520CAD7B6BCCAA6B7B6B4F3D1A C4EAD7A8D2B5BCBCCAF5D6B0CEF1C6C0C6B8B9A4D7F7D2E2BCFB2E646F63>

其 他 方 面 也 可 以 采 用 同 样 的 方 式, 这 样 又 可 以 锻 炼 除 语 文 方 面 的 其 他 能 力 了 而 英 语 方 面, 我 认 为 配 合 英 语 专 业 举 办 英 语 演 讲 比 赛 就 很 不 错 这 样 开 展 一 系 列 的 创 新 活 动, 锻 炼 多 方

第 六 条 办 法 第 五 条 ( 三 ) 协 会 考 评, 考 评 指 考 核 评 价 第 七 条 办 法 第 六 条 职 业 操 守 包 括 的 内 容 : 个 人 诚 信 不 做 假 账 不 偷 漏 税 不 贪 污 盗 窃 等 第 八 条 企 业 财 务 管 理 人 才 评 价 实 行 五 星

<4D F736F F D A67EABD7A4BAB3A1B1B1A8EEA8EEABD7A6DBA6E6B5FBA6F4AD70B5652E646F63>

统计工作情况汇报

Transcription:

MF09 非接触卡通用读写器 Mifare 经典系列卡操作说明书 本说明书将详细描述 Mifare 卡的结构 性能以及 MF09 非接触卡通用读写器针对 Mifare 卡 (S50 S70) 的操作过程 用户通过该说明, 可以对 Mifare 卡有一个完整地了解, 并使用 MF09 读写器对卡片进行相关的操作 本说明书包括如下部份 : 1:Mifare 卡技术资料 2:MF09 读写器针对 Mifare 卡的操作函数说明 3: MF09 读写器嵌入式应用时的命令码说明 如有任何问题, 请及时与我们联系, 我们将及时为你解答. TEL: (010) 62965305,13910724049 第一章 Mifare 卡技术资料 近年来,IC 智能卡中的非接触式射频卡的安全保密 使用简便等特点使其在各领域的应用中异军突起, 特别在民用系统 ( 自动电表抄表系统 公交 / 地铁自动售票系统 企业 一卡通 巡更保安系统等) 中得到广泛的应用 人们己愈来愈多开始接收和使用智能卡 相信该领域的发展将越来越大 本说明书中将详细说明 MIFARE 经典系列卡片 (S50 的存贮结构及操作步骤 S70 卡片的存贮容量为 4K 字节, 其存贮结构与 S50 卡大致相同, 操作步骤与 S50 卡相同 一 S50 卡主要指标 容量为 1K 字节的 EEPROM 存贮器 分为 16 个扇区, 每个扇区为 4 块, 每块 16 个字节, 以块为存取单位 每个扇区有独立的一组密码及访问控制 每张卡有唯一序列号, 为 32 位 具有防冲突机制, 支持多卡操作 无电源, 自带天线, 内含加密控制逻辑和通讯逻辑电路 数据保存期为 10 年, 可改写 10 万次, 读无限次 工作温度 :-20 ~50 ( 湿度为 90%) 工作频率 :13.56MHZ 通信速率 :106 KBPS 读写距离 :10 cm 以内 ( 与读写器有关 ) 二 S50 卡的存储结构 1 M1(S50) 卡分为 16 个扇区, 每个扇区由 4 块 ( 块 0 块 1 块 2 块 3) 组成, ( 我们也将 16 个扇区的 64 个块按绝对地址编号为 0~63, 存贮结构如下图所示 :

块 0 数据块 0 扇区 0 块 1 数据块 1 块 2 数据块 2 块 3 密码 A 存取控制 密码 B 控制块 3 块 0 数据块 4 扇区 1 块 1 数据块 5 块 2 数据块 6 块 3 密码 A 存取控制 密码 B 控制块 7 0 数据块 60 扇区 15 1 数据块 61 2 数据块 62 3 密码 A 存取控制 密码 B 控制块 63 2 第 0 扇区的块 0( 即绝对地址 0 块 ), 它用于存放厂商代码, 已经固化, 不可更改 3 每个扇区的块 0 块 1 块 2 为数据块, 可用于存贮数据 数据块可作两种应用 : 用作一般的数据保存, 可以进行读 写操作 用作数据值, 可以进行初始化值 加值 减值 读值操作 4 每个扇区的块 3 为控制块, 包括了密码 A 存取控制 密码 B 具体结构如下: A0 A1 A2 A3 A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 B5 密码 A(6 字节 ) 存取控制 (4 字节 ) 密码 B(6 字节 ) 5 每个扇区的密码和存取控制都是独立的, 可以根据实际需要设定各自的密码及存取控制 存取控制为 4 个字节, 共 32 位, 扇区中的每个块 ( 包括数据块和控制块 ) 的存取条件是由密码和存取控制共同决定的, 在存取控制中每个块都有相应的三个控制位, 定义如下 : 块 0: C10 C20 C30 块 1: C11 C21 C31 块 2: C12 C22 C32 块 3: C13 C23 C33 三个控制位以正和反两种形式存在于存取控制字节中, 决定了该块的访问权限 ( 如 进行减值操作必须验证 KEY A, 进行加值操作必须验证 KEY B, 等等 ) 三个控制

位在存取控制字节中的位置, 以块 0 为例 : 对块 0 的控制 : bit 7 6 5 4 3 2 1 0 字节 6 C20_b C10_b 字节 7 C10 C30_b 字节 8 C30 C20 字节 9 ( 注 : C10_b 表示 C10 取反 ) 存取控制 (4 字节, 其中字节 9 为备用字节 ) 结构如下所示 : bit 7 6 5 4 3 2 1 0 字节 6 C23_b C22_b C21_b C20_b C13_b C12_b C11_b C10_b 字节 7 C13 C12 C11 C10 C33_b C32_b C31_b C30_b 字节 8 C33 C32 C31 C30 C23 C22 C21 C20 字节 9 ( 注 : _b 表示取反 ) 6 数据块( 块 0 块 1 块 2) 的存取控制如下 : 控制位 (X=0..2) 访问条件 ( 对数据块 0 1 2) C1X C2X C3X Read Write Increment Decrement, transfer, Restore 0 0 0 KeyA B KeyA B KeyA B KeyA B 0 1 0 KeyA B Never Never Never 1 0 0 KeyA B KeyB Never Never 1 1 0 KeyA B KeyB KeyB KeyA B 0 0 1 KeyA B Never Never KeyA B 0 1 1 KeyB KeyB Never Never 1 0 1 KeyB Never Never Never 1 1 1 Never Never Never Never (KeyA B 表示密码 A 或密码 B,Never 表示任何条件下不能实现 ) 例如 : 当块 0 的存取控制位 C10 C20 C30=1 0 0 时, 验证密码 A 或密码 B 正确后可读 ; 验证密码 B 正确后可写 ; 不能进行加值 减值操作 7 控制块块 3 的存取控制与数据块 ( 块 0 1 2) 不同, 它的存取控制如下 : 密码 A 存取控制 密码 B C13 C23 C33 Read Write Read Write Read Write 0 0 0 Never KeyA B KeyA B Never KeyA B KeyA B 0 1 0 Never Never KeyA B Never KeyA B Never

1 0 0 Never KeyB KeyA B Never Never KeyB 1 1 0 Never Never KeyA B Never Never Never 0 0 1 Never KeyA B KeyA B KeyA B KeyA B KeyA B 0 1 1 Never KeyB KeyA B KeyB Never KeyB 1 0 1 Never Never KeyA B KeyB Never Never 1 1 1 Never Never KeyA B Never Never Never 例如 : 当块 3 的存取控制位 C13 C23 C33=1 0 0 时, 表示 : 密码 A: 不可读, 验证 KEYA 或 KEYB 正确后, 可写 ( 更改 ) 存取控制 : 验证 KEYA 或 KEYB 正确后, 可读 可写 密码 B: 验证 KEYA 或 KEYB 正确后, 可读 可写 三 MIFARE 卡的工作原理卡片的电气部分只由一个天线和 ASIC 组成 天线 : 卡片的天线是只有几组绕线的线圈, 很适于封装到 IS0 卡片中 ASIC: 卡片的 ASIC 由一个高速 (106KB 波特率 ) 的 RF 接口, 一个控制单元和一个 1K 字节的 EEPROM 存贮器组成 工作原理 : 读写器向 M1 卡发一组固定频率的电磁波, 卡片内有一个 LC 串联谐振电路, 其频率与讯写器发射的频率相同, 在电磁波的激励下,LC 谐振电路产生共振, 从而使电容内有了电荷, 在这个电容的另一端, 接有一个单向导通的电子泵, 将电容内的电荷送到另一个电容内储存, 当所积累的电荷达到 2V 时, 此电容可做为电源为其它电路提供工作电压, 将卡内数据发射出去或接取读写器的数据 四 M1 射频卡与读写器的通讯 复位应答 Request 防冲突机制 Anti collision Loop 选择卡片 Select Tag 改变扇区 不改变扇区 三次相互验证 Authentication 读块 写块 加值 减值 中止 Read Write increment decrement Halt

复位应答 (Answer to request) M1 射频卡的通讯协议和通讯波特率是定义好的, 当有卡片进入读写器的操作范围时, 读写器以特定的协议与它通讯, 从而确定该卡是否为 M1 射频卡, 即验证卡片的卡型 防冲突机制 (Anticollision Loop) 当有多张卡进入读写器操作范围时, 防冲突机制会从其中选择一张进行操作, 未选中的 则处于空闲模式等待下一次选卡, 该过程会返回被选卡的序列号 选择卡片 (Select Tag) 选择被选中的卡的序列号, 并同时返回卡的容量代码 三次互相确认 (3 Pass Authentication) 选定要处理的卡片之后, 读写器就确定要访问的扇区号, 并对该扇区密码进行密码校验, 在三次相互认证之后就可以通过加密流进行通讯 ( 在选择另一扇区时, 则必须进行另一扇区密码校验 ) 对数据块的操作 读 (Read): 读一个块 ; 写 (Write): 写一个块 ; 加 (Increment): 对数值块进行加值 ; 减 (Decrement): 对数值块进行减值 ; 存储 (Restore): 将块中的内容存到数据寄存器中 ; 传输 (Transfer): 将数据寄存器中的内容写入块中 ; 中止 (Halt): 将卡置于暂停工作状态 ; 第二章 读写器针对 Mifare 卡的操作函数说明 MF09 非接触卡通用读写器具有专门针对 Mifare 经典系列卡片的操作设计的读写器, 它提供了完整的针对 Mifare 系列卡片的操作命令 提供 USB 接口或 RS232 串行与 PC 机相连, 并提供完整的系统函数调用动态链接库 MF09.DLL, 用户可以通过调用相关的函数来完成对 Mifare 卡片的操作 对于嵌入式系统, 用户可以使用 RS232 方式或 RS232 TTL 电平方式直接向读写器 ( 读 写模块 ) 发出命令, 将本读写模块嵌入到用户自己的系统中, 完成对 Mifare 卡片的操作

在此我们列出 MF09 读写器中针对 Mifare 提供的函数库及其功能说明, 用户可以向我们 要求提供使用该动态库的应用程序 DEMO 源码 用户可以通过由我们提供的读写器应用程序, 对 Mifare 卡片进行完整的操作, 从而加 深对本说明书内容的理解 一 函数申明 MF09.DLL 针对 MIFARE 卡片提供了如下函数调用 : 1 通用函数集 long pascal LinkCom(long id,long Port,long baudrate) ; long pascal UnLinkCom(void); long pascal Link_Reader(long id) ; long pascal ALARM(long id,long Device, long OneTime, long BetweenTime, long Times); long pascal ResetDevice(long id) ; long pascal RestoreDevice(long id) ; 2 基础函数集 long pascal RFMifare_Request(long id, long Mode, unsigned char *CardTypeNo); long pascal RFMifare_AntiColl(long id, unsigned char *CardSn) ; long pascal RFMifare_Select(long id, unsigned char *CardSn) ; long pascal RFMifare_LoadKey(long id, long Mode, long Sector, unsigned char *Key) ; long pascal RFMifare_Authentication(long id, long Mode, long Sector, long BlockNo) ; long pascal RFMifare_Read(long id,long BlockNo, unsigned char *ReadBuff) ; long pascal RFMifare_Write(long id, long BlockNo, unsigned char *WriteBuff) ; long pascal RFMifare_Increment(long id, long BlockNo, unsigned char *Value) ; long pascal RFMifare_Decrment(long id, long BlockNo, unsigned char *Value) ; long pascal RFMifare_ReadPurge(long id, long BlockNo, unsigned char *Value) ; long pascal RFMifare_WritePurge(long id, long BlockNo, unsigned char *Value) ; long pascal RFMifare_Halt(long id) ; 3 高级函数集 long pascal RFMifare_Authmode(long id,long Authmode) ; long pascal RFMifare_GetType(long id, unsigned char *Type) ; long pascal RFMifare_GetSnr(long id, unsigned char *Sn) ;

long pascal RFMifare_TransKey(long id, long Sector, unsigned char *WriteBuff); long pascal RFMifare_ReadBlock(long id, long BlockNo, unsigned char *CardSn, unsigned char *ReadBuff) ; long pascal RFMifare_WriteBlock(long id,long BlockNo, unsigned char *CardSn,unsigned char *WriteBuff) ; long pascal RFMifare_WriteKey(long id, long Sector, unsigned char *CardSn, unsigned char *Key, unsigned char MLC) ; long pascal RFMifare_WriteValue(long id, long BlockNo, long pascal RFMifare_ReadValue(long id,long BlockNo, long pascal RFMifare_IncrementValue(long id, long BlockNo, long pascal RFMifare_DecrementValue(long id, long BlockNo, 数的统一说明 1) Id: 读写器 id 号 : 由于在一条通信总线上可以挂接多个读写器, 我们可以先设定好读写器的 ID 号来 区分总线上不同的读卡器 这样在实际操作时, 可以针对某一个读写器进行操作 读写器在数据总线上接收到命令后, 只有与本读卡器 ID 号相同的命令才能被执行 2) 对于返回的操作结果, 如果函数调用返回值为 0, 则表明操作正确 否则为操作失 败, 返回的值为操作失败码 3) 返回的卡片序列号的定义是 : 第一个字节为卡片序列号的长度, 其后的字节为卡片序列号 由于卡片序列号可能为 4 个字节或 7 个字节, 故采用此方法, 这点与我们过 去的读写器不同, 需要特别作出说明 4) 在每个函数的说明中, 都有一个命令码的数, 请数是针对嵌入式应用中直接对读写器发命令串的方式来操作所说明的, 在用 PC 机上层调用动态库时, 该数不需要提供给函数 第三章 函数功能及数说明 3.1 通用函数集 3.1.1 LinkCom: 通信接口定义及连接功能说明 : 此函数用来连接 PC 机或主机与读写器相联的串口 (USB 口 ), 并进行初 始化操作 传输协议为 : 波特率可设定 数据位为 8 位,1 个停止位, 无奇偶校验 位 读写器出厂波特率为 9600 BPS 在调用其它函数功能前, 一定要先进行串行口的联接

long pascal LinkCom(long id,long Port,long baudrate) ; 数 : 命令码 : 0x00 port: 通信接口号 0 9: 表示串行接口 COM1 COM2 COM10 0x20: USB 口 Baudrate: 信通波特率, 当为串口通信时有效 读写器可设置的波特率为 : 9600,19200,38400,57600,115200 返回值 : 返回值为 0, 表示操作正确 ; 为其它值时表示出错 3.1.2 Link_Reader: 连接读写器功能说明 : 此函数用来连接读写器 long pascal Link_Reader(long id) ; 数 : 命令码 : 0x00 返回值 : 返回值为 0, 表示操作正确, 串口连接成功 为其它值时表示出错 3.1.3 UnLinkCom: 释放串行口连接功能说明 : 此函数用来释放已经联结的通信接口 数 : 在某些开发环境中退出程序前必须释放串口资源, 否则会引起系统崩 溃 比如 :MS Visul Basic 4.X(32bit) 5.X long pascal UnLinkCom(void); 返回值 : 返回值为 0, 表示操作正确, 串口释放成功 为其它值时表示出错 3.1.4 ALARM: 控制读写器 / 读写模块上设备动作功能说明 : 此函数用来控制模块所提供的三个基本设备的动作 : 红色 LED, 绿色 LED, 方式 蜂鸣器 可以控制三个设备的打开时间 关闭时间 动作次数以及动作 long pascal ALARM(long id, long Device, 数 : 命令码 : 0x05 long OneTime, long BetweenTime, long Times); Device: 设备号, 低三位有效 其中第 0 位表示红色灯 OneTime: 单次动作时间 ( 设备打开时间 ) 单位是 10ms 第 1 位表示绿色灯 第 2 位表示蜂鸣器 例如 :OneTime=15, 则单次动作时间为 15*10ms BetweenTime: 动作间歇时间 ( 设备关闭时间 ) 单位是 10ms

Times: 连续动作次数 ( 设备打开次数 ) 返回值 : 返回值为 0, 表示操作正确, 为其它值时表示出错 3.1.5 ResetDevice: 复位读写器功能说明 : 此函数用来复位读写器 long pascal ResetDevice(long id) ; 数 : 命令码 :0x04 返回值 : 返回值为 0, 表示操作正确, 为其它值时表示出错 3.1.6 RestoreDevice : 恢复读写器出厂缺省值功能说明 : 此函数用于恢复读写器出厂缺省值 long pascal RestoreDevice(long id) ; 数 : 命令码 :0x03 返回值 : 返回值为 0, 表示操作正确, 为其它值时表示出错 3.2 基础函数集 3.2.1 RFMifare_LoadKey: 加载密码到读写器控制模块的 EEPROM 中功能说明 : 此命令加载密码到读写器控制模块的 EEPROM 中 long pascal RFMifare_LoadKey(long id, long Mode, 数 : 命令码 :0x23 Mode : 密码加载方式定义 =0, 加载密码 A =4, 加载密码 B Sector : 要加载密码的扇区号 Key : 要加载的 6 字节密码 long Sector, unsigned char *Key) ; 返回值 : 返回值为 0, 表示操作正确, 为其它值时表示出错 3.2.2 RFMifare_Request: 卡呼叫功能说明 : 此命令对在操作有效区的卡进行呼叫, 若有卡响应, 将返回卡型号 long pascal RFMifare_Request(long id, long Mode, 数 : 命令码 :0x20 Mode: 指定呼叫方式 Mode=ALL 将呼叫所有卡 unsigned char *CardTypeNo); Mode=IDLE 呼叫所有卡, 但休眠的卡除外 ( 即用 HALT 指令休眠的卡 ) CardTypeNo: 卡类型 CardTypeNo = 0x0010 ML10 卡

CardTypeNo = 0x0004 Mifare S50 卡 CardTypeNo = 0x0002 Mifare S70 卡 CardTypeNo = 0x0044 ULTRA Light 卡 返回值 :MI_OK,MI_ERR; 3.2.3 RFMifare_Anticoll: 防碰撞选择功能说明 : 利用 " 防碰撞选择 " 命令, 使同在系统有效天线区的几张卡中的一张被 用 选择, 并返回卡号 当系统决定对这张卡操作时, 可用 SELECT 命令 激活这张卡 法 :long pascal RFMifare_AntiColl(long id, 数 : 命令码 :0x21 无传入数 CardSn : 返回的卡序列号 返回值 :MI_OK,MI_ERR; unsigned char *CardSn) ; 其中的第 1 个字节为卡片序列号长度, 其他为卡片序列号 3.2.4 RFMifare_Select: 卡激活功能说明 : 此命令激活指定的卡, 卡的序列号由 ANTICOLL 命令返回 用 返 只有卡激活后, 才可进行其它的读写操作 法 :long pascal RFMifare_Select(long id, 数 : 命令码 : 0x22 CardSn: 所要激活的卡的序列号, 回 :MI_OK,MI_ERR; unsigned char *CardSn) ; 其中第 1 个字节为卡片序列号长度, 其他为卡片序列号 3.2.5 RFMifare_Authentication: 卡密码认证功能说明 : 此命令对卡进行密码认证 只有经过认证后的卡才可进行读 / 写等操作 long pascal RFMifare_Authentication(long id, long Mode, 数 : 命令码 : 0x24 Mode : =0, 密码 A =1, 密码 B Sector : 密码扇区号 BlockNo: 密码所在的数据块号 返回值 :MI_OK,MI_ERR; long Sector, long BlockNo) ; 3.2.6 RFMifare_Read: 读数据区数据功能说明 : 此函数从指定数据块中读出 16 字节数据 long pascal RFMifare_Read(long id,long BlockNo, unsigned char *ReadBuff) ;

数 : 命令码 : 0x25 BlockNo : 数据块的块号 ReadBuff : 读出的数据, 每次 16 个字节的数据 返回值 : MI_OK,MI_ERR; 3.2.7 RFMifare_Write: 写数据区数据功能说明 : 此命令将 16 字节数据写入指定数据块 long pascal RFMifare_Write(long id, long BlockNo, 数 : 命令码 : 0x26 返回值 : MI_OK,MI_ERR; BlockNo : 数据块的块号 unsigned char *WriteBuff) ; WriteBuff: 要写入卡的数据, 为 16 字节数据 3.2.8 RFMifare_Increment: 加电子钱包功能说明 : 此命令增加 电子钱包 的 金额 long pascal RFMifare_Increment(long id, long BlockNo, 数 : 命令码 : 0x27 BlockNo : 电子钱包 所在的数据块号 Value 返回值 :MI_OK,MI_ERR : 要增加的 金额, 为 4 字节的数据 unsigned char *Value) ; 3.2.9 RFMifare_Decrment: 减电子钱包功能说明 : 此命令扣除 电子钱包 的 金额 long pascal RFMifare_Decrment(long id, long BlockNo, 数 : 命令码 : 0x28 BlockNo : 电子钱包 所在的数据块号 Value 返回值 : MI_OK,MI_ERR unsigned char *Value) ; : 要扣除的 电子金额, 为 4 字节的数据 3.2.10 RFMifare_ReadPurge : 读电子钱包的值功能说明 : 此命令用于读取 电子钱包 的 金额 long pascal RFMifare_ReadPurge(long id, long BlockNo, 数 : 命令码 : 0x2A unsigned char *Value) ; BlockNo : 电子钱包 所在的数据块号 Value 返回值 : MI_OK,MI_ERR : 返回读取的 电子钱包金额, 为 4 字节的数据

3.2.11 RFMifare_WritePurge : 写电子钱包的值功能说明 : 此命令用于写 电子钱包 的 金额, 即对电子钱包进行初始化 long pascal RFMifare_WritePurge(long id, long BlockNo, 数 : 命令码 : 0x2B unsigned char *Value) ; BlockNo : 电子钱包 所在的数据块号 Value 返回值 : MI_OK,MI_ERR : 待写入的 电子钱包金额, 为 4 字节的数据 3.2.12 RFMifare_Halt: 卡睡眠功能说明 : 此命令将激活的卡设置为 休眠方式, 设置以后只有用两种方式可 将它激活 : (1) 复位卡, 即将卡拿开天线有效工作区, 再将它重新拿入 (2) 用 (ALL) 方式进行呼叫 见 卡呼叫 long pascal RFMifare_Halt(long id) ; 数 : 命令码 : 0x29 返回值 : MI_OK,MI_ERR; 3.3 高级函数集 3.3.1 RFMifare_TransKey: 密码下载功能说明 : 此命令将一个新密码下载到读写器的 RAM 中 注意 : 在高级命令集中, 我们指定只使用密码 A long pascal RFMifare_TransKey(long id, long Sector, 数 : 命令码 : 0x12 unsigned char *); Sector : 欲加载密码扇区的扇区号, 取值范围 0-15 WriteBuff : 为 6 字节的密码 返回值 : MI_OK,MI_ERR; 3.3.2 RFMifare_Authmode: 设置密码认证方式功能说明 : 此命令指定密码认证的方式, 此命令影响以后的读写指令, 本命令 只对 ML10 有效 long pascal RFMifare_Authmode(long id,long Authmode) ; 数 : 命令码 : 0x06 Authmode 返回值 :MI_OK,MI_ERR; : 密码认证的方式 0 : 用密码 A 认证 1 : 用密码 B 认证

3.3.3 RFMifare_GetType: 读卡类型功能说明 : 此命令用于读取卡片类型 long pascal RFMifare_GetType(long id, unsigned char *Type) ; 数 : 命令码 : 0x10 Type: 卡类型 Type = 0x0010 Type = 0x0004 Type = 0x0002 Type = 0x0044 返回值 :MI_OK,MI_ERR; ML10 卡 Mifare S50 卡 Mifare S70 卡 ULTRA Light 卡 3.3.4 RFMifare_GetSnr: 读卡片序列号功能说明 : 此命令读取卡片的序列号 long pascal RFMifare_GetSnr(long id, unsigned char *Sn) ; 数 : 命令码 : 0x11 Sn: 卡序列号, 其中第 1 个字节为卡片序列号长度 返回值 :MI_OK,MI_ERR; 3.3.5 RFMifare_ReadBlock: 读卡片数据块功能说明 : 此命令从指定卡的指定数据块读出数据 long pascal RFMifare_ReadBlock(long id, long BlockNo, 数 : 命令码 : 0x13 unsigned char *CardSn, unsigned char *ReadBuff) ; BlockNo : " 数据块 " 的地址 CardSn : 卡片序列号, 其中第 1 个字节为卡片序列号长度 ReadBuff: 返回的 16(8) 字节数据 返回值 : MI_OK,MI_ERR; 3.3.6 RFMifare_WriteBlock: 写卡片数据块功能说明 : 对于 M1 卡, 此命令将 16 字节数据写入指定卡的指定数据块 如果写入成功, 系统回读 16 字节数据 对于 ML10 卡, 此命令将 8 字节数据写入指定卡的指定数据块, 如果写入成功, 系统回读 8 字节数据 long pascal RFMifare_WriteBlock(long id,long BlockNo, 数 : 命令码 : 0x14 BlockNo CardSn unsigned char *CardSn,unsigned char *WriteBuff) ; : " 数据块 " 的地址 : 卡序列号 通过 RFMifare_Getsnr 命令得到 WriteBuff : 待写入的数据, 写完后返回读取的数据

返回值 : MI_OK,MI_ERR; 3.3.7 RFMifare_WriteKey: 修改卡片密码功能说明 : 此命令将新密码写到指定扇区 在高级命令集中, 我们指定只使用密码 A 且读写控制位为对所有的读写均有效 long pascal RFMifare_WriteKey(long id, long Sector, 数 : 命令码 : 0x15 unsigned char *CardSn, unsigned char *Key, unsigned char MLC) ; Sector : 对于 M1 卡,Sector: 扇区号 对于 ML10 卡,Sector=0, 修改密码 A Sector<>0, 修改密码 B CardSn : 卡序列号 通过 RFMifare_Getsnr 命令得到 Key MLC : 6 字节新密码 返回值 : MI_OK,MI_ERR; : 权限码,ML10 卡权限码的定义看 ML10 卡, 设为 0xFF long pascal RFMifare_WriteValue(long id, long BlockNo, 3.3.8 RFMifare_Readvalue: 读电子钱包内容功能说明 : 此命令从指定 " 电子钱包 " 读出当前 " 金额 " long pascal RFMifare_ReadValue(long id,long BlockNo, 数 : 命令码 : 0x16 CardSn : 要操作的卡的卡序列号, 通过 RFMifare_Getsnr 命令得到 BlockNo : 电子钱包 所在的数据块号 Value 返回值 : MI_OK,MI_ERR; : 电子钱包 当前的 金额, 为一个 4 字节数据 3.3.9 RFMifare_Writevalue: 写电子钱包功能说明 : 此命令将指定 金额 写入指定 电子钱包 long pascal RFMifare_WriteValue(long id, long BlockNo, 数 : 命令码 : 0x17 CardSn : 要操作的卡的卡序列号, 通过 RFMifare_Getsnr 命令得到 BlockNo: 电子钱包 所在的数据块号 Value : 要写入的 金额 以及回读操作后的电子钱包中的 金额 为一个 4 字节数据 返回值 : MI_OK,MI_ERR;

3.3.10 RFMifare_Incrementvalue: 增加电子钱包内容功能说明 : 此命令增加电子钱包的金额 long pascal RFMifare_IncrementValue(long id, long BlockNo, 数 : 命令码 : 0x18 CardSn : 要操作的卡的卡序列号, 通过 RFMifare_Getsnr 命令得到 BlockNo : 电子钱包 所在的数据块号 Value : 要增加的 金额 以及回读操作后的电子钱包中的 金额 返回值 :MI_OK,MI_ERR; 为一个 4 字节的数据 3.3.11 RFMifare_Decrementvalue: 扣去电子钱包金额功能说明 : 此命令扣除电子钱包的金额 long pascal RFMifare_DecrementValue(long id, long BlockNo, 数 : 命令码 : 0x19 CardSn : 要操作的卡的卡序列号, 通过 RFMifare_Getsnr 命令得到 BlockNo: 电子钱包 所在的数据块号 Value : 要扣除的 " 电子金额 " 以及回读操作后的电子钱包中的 金额 返回值 : MI_OK,MI_ERR; 为一个 4 字节的数据 第四章 MF09 读写器嵌入式应用时的命令码说明 MF09 读写模块可以通过 RS232 接口或 RS232 TTL 电平方式直接与用户的主控制器相连, 嵌入到用户的主机中, 使用户主机可以很简便地对 Mifare 卡进行操作 一 通信接口 MF09 非接触卡读写模块有一个 RS232 串行接口, 提供给用户与自己的主机系统 相连, 可以应用 RS232 电平方式或 TTL 电平方式 这两种方式是通过模块上的跳线 电阻开关来区分的, 用户可以在订购时指定, 由厂商为你做好, 或自己进行设定 其接口定义为 : CN1: 外部的通信接口 PIN 1 ---- VCC(+5V) PIN 2 ---- GND PIN 3 ---- GND PIN 4 ---- PCTXD 与 PC 机 RS232 口的 RXD 连接 TXD TTL 电平通信时, 通信数据的发送 PIN 5 ---- PCRXD 与 PC 机 RS232 口的 TXD 连接 RXD TTL 电平通信时, 通信数据的接收 PIN 6 ---- NC 未接

二 通信命令格式 1) 通信协议 MF09 读写模块的通信协议是采用的标准 RS232 通信协议为 : 1 个起始位,8 个数据位, 无奇偶校验,1 个停止位 数据传输速率可变, 由用户进行设定 缺省值为 9600 BPS 2) 通信命令格式主机与 MF09 读写模块的通信模式是主动式, 即由主机向 MF09 读写模块发出命 令, 读写模块执行完该命令后将相关的数据返回到主机中 节组成 主机与 MF09 读写模块之间的通信数据是以字节为单位来传送的 每条命令由多个字 通信命令的格式主机向 MF09 读写模块发送的命令与读写模块返回的数据格式是相同的, 格式是 : ( 命令头 ) + ( 命令体 ) + ( 命令尾 ) 其中 : 命令头 : 二个字节, 0x10,0x01 命令体 : 若干字节 命令尾 : 二个字节, 0x10,0x02 主机向 MF09 读写模块发送的命令体命令体包括如下内容 : 其中 : 模块编号 + 命令码 + [ 命令数据长度 + 命令数据 ] + XOR 校验码 模块编号 : 1 个字节, 对于每个读写模块, 都会有一个模块编号, 该模块 编号为 1 个字节, 最大为 255, 在一个系统总线上最多可以联接 255 个读写模块 每条命令是通过模块编号来针对某一个 读写模块来进行, 其它读写模块则不会响应命令 对于每个命令来说, 只有联接到通信总线上的读写器 / 模块的 模块编号与命令中的模块编号相同, 才能响应该命令 命令码 : 1 个字节, 请照第三节与第五章的详细命令说明 命令数据长度 : 1 个字节, 为以下命令数据的长度 命令数据 : 若干个字节, 根据命令的不同, 会带有若干个字节的命令数 据, 详见各个命令的说明 XOR( 校验码 ):1 个字节, 为从 模块编号 开始到命令数据结束的各个 字节的 异或 (XOR) 校验和 注意 : 对于以上的数据中, 如果数据值为 0x10, 则将该值重复 例如 : 0x10,0x10 表示数据 0x10 MF09 读写模块发送的命令体命令体包括如下内容 :

模块编号 + 命令码 + 返回码 + [ 返回数据长度 + 返回数据 ] + XOR( 校验码 ) 模块编号 : 1 个字节, 与主机发的命令中的模块编号相同 返回码 : 1 个字节, 如果命令执行错误, 则返回码为 1, 如果命令执行正确, 则返回码为 0 返回数据长度 : 1 个字节, 以下返回的数据块的长度 返回数据 : 若干个字节, 根据命令的不同, 会有若干个字节的数据返回, 详见各个命令的说明 XOR( 校验码 ):1 个字节, 为从 模块编号 开始到命令数据结束的各个字节的 异或 (XOR) 校验和 三 通信命令码定义主机向 MF09 读写模块发出的命令以及模块的返回数据与第 3 章中定义的函数 数的定义是相同的, 在此仅列出每个命令的命令码, 而其他数请考第 3 章的 各个函数说明 在第 3 章的说明中, 我们在数中都有一个命令码, 请用户考