三天搞定射频识别技术(二)2.3寻卡防冲突选卡
寻卡防冲突
/*******************************************************************************
//功 能:寻卡
//参数说明: req_code[IN]:寻卡方式
// 0x52 = 寻感应区内所有符合14443A标准的卡
// 0x26 = 寻未进入休眠状态的卡
// pTagType[OUT]:卡片类型代码
// 0x4400 = Mifare_UltraLight
// 0x0400 = Mifare_One(S50)
// 0x0200 = Mifare_One(S70)
// 0x0800 = Mifare_Pro(X)
// 0x4403 = Mifare_DESFire
//返 回: 成功返回MI_OK
*******************************************************************************/
char PcdRequest(unsigned char req_code,unsigned char *pTagType)
{char status;unsigned int unLen;unsigned char ucComMF522Buf[MAXRLEN];ClearBitMask(Status2Reg,0x08); //清零Status2Reg的MFAuthent Command执行成功标志位WriteRawRC(BitFramingReg,0x07); //清零Transceive命令开始位SetBitMask(TxControlReg,0x03); //开启天线ucComMF522Buf[0] = req_code; //取522要执行的命令//printf("%x\n",ucComMF522Buf[0]);//printf("%x\n",ucComMF522Buf[1]);status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);//向PICC发送寻天线区内全部卡命令,并接收PICC返回的数据if ((status == MI_OK))if ((status == MI_OK) && (unLen == 0x10))//没有错误并接接收为2个字节{*pTagType = ucComMF522Buf[0];//取接收缓冲区的第一个字节*(pTagType+1) = ucComMF522Buf[1];//取接收缓冲区的第二个字节}else{status = MI_ERR; //错误}#if PRINTprintf("card type is:\n");printf("%x\n",ucComMF522Buf[0]);printf("%x\n",ucComMF522Buf[1]);#endifreturn status;
}
/*******************************************************************************/
/*******************************************************************************
//功 能:防冲撞
//参数说明: pSnr[OUT]:卡片序列号,4字节
//返 回: 成功返回MI_OK
//协 议:SEL NVB(0X20)
*******************************************************************************/
char PcdAnticoll(unsigned char *id)
{char status;unsigned char i,snr_check=0;unsigned int unLen;unsigned char ucComMF522Buf[MAXRLEN];ClearBitMask(Status2Reg,0x08);//清除标志位WriteRawRC(BitFramingReg,0x00);//000 指示最后一个字节的所有位将被发送。ClearBitMask(CollReg,0x80);//发生碰撞所有接收位将被清除ucComMF522Buf[0] = PICC_ANTICOLL1;//0x93 防冲撞 发到卡里的命令ucComMF522Buf[1] = 0x20;status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);//获得卡的序列号,ucComMF522Buf[]if (status == MI_OK){for (i=0; i<4; i++){id[i] = ucComMF522Buf[i]; //返回卡的序列号snr_check ^= ucComMF522Buf[i]; //计算校验码}if (snr_check != ucComMF522Buf[i]){status = MI_ERR; //有错误}}SetBitMask(CollReg,0x80);//置位防碰撞位return status;}
选卡
/*******************************************************************************
//功 能:选定卡片
//参数说明: pSnr[IN]:卡片序列号,4字节
//返 回: 成功返回MI_OK
//协 议:SEL NVB(0X70) ID(4个byte) IDCHECK CRC16
*******************************************************************************/
char PcdSelect(unsigned char *id)
{char status = 0XFF;unsigned char i;unsigned int unLen;unsigned char ucComMF522Buf[MAXRLEN]; //MAXRLEN = 18ucComMF522Buf[0] = PICC_ANTICOLL1;//防冲撞命令ucComMF522Buf[1] = 0x70;ucComMF522Buf[6] = 0;for (i=0; i<4; i++){ucComMF522Buf[i+2] = *(id+i);//填充卡的序列号ucComMF522Buf[6] ^= *(id+i);//计算校验码}CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf[7]);//获得CRC校验结果的16位值//放入ucComMF522Buf【0,1】ClearBitMask(Status2Reg,0x08);//清零MFAuthent Command执行成功标志位status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen);//把CRC值和卡号发的卡里if ((status == MI_OK) && (unLen == 0x18))//返回24个字节&状态为无错误{status = MI_OK;}else{status = MI_ERR;}return status;
}
因为S50卡所以select结果是8
三天搞定射频识别技术(二)2.3寻卡防冲突选卡相关推荐
- 三天搞定射频识别技术(一)1.2
电子标签的概念 电子标签的概念 二.RFID电子标签的分类: 三.RFID标签的原理 四.RFID标签的组成 五.RFID的工作原理 阅读器和电子标签之间的射频信号的耦合类型有两种: 电感耦合 电磁反 ...
- 三天搞定射频识别技术(二)2.4 S50卡原理
M1卡 M1卡是谁 所谓的M1芯片,是指菲利浦下属子公司恩智浦出品的芯片缩写,全称为NXP Mifare1系列,常用的有S50及S70两种型号,属于非接触式IC卡 非接触式IC卡又称射频卡,成功地解决 ...
- 三天搞定射频识别技术(三)3.2PN532
PN532概述 随着互联网的普及,手机作为互联网最直接的智能终端,必将会引起一场技术上的革命,如同以前蓝牙.USB.GPS等标配,NFC将成为日后手机最重要的标配,通过NFC技术,手机支付.看电影.坐 ...
- 三页搞定GB2818/SIP/RTP、PS封装
三页搞定GB2818/SIP/RTP.PS封装 (2016-08-23 18:27:20) 转载▼ 标签: it 互联网 gb28181 sip rtp 分类: 技术 GB2818集成了sip通讯.R ...
- windows+mysql集群搭建-三分钟搞定集群
一.集群了解 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一个库dang了,不会影响程序的运行.首先看了一些关于集群的资料,然后根据步骤一步步的整,遇到了一些问题,在这里把我遇到的问题以及解 ...
- EasyExcel 三分钟搞定导入导出
前言:本文章教你从零开始,三分钟搞定excel单sheet导出.导入.多sheet导出.导入.excel模板导入单个sheet.多个sheet,废话不多说,直接上代码 1.引入依赖 <!--ex ...
- 怎么样把计算机桌面的图标改小,怎样将电脑桌面图标变小_三招搞定桌面图标太小问题-系统城...
电脑安装win10系统后发现桌面的图标太大,想要把这些图标变小,这要怎么操作?由于对操作界面都不熟悉,所以不懂怎么设置,别担忧,小编今天就来分享一种将电脑桌面图标变小的方法,感兴趣的快来试试. 具体方 ...
- 快速搞定前端技术一面 匹配大厂面试要求学习笔记
快速搞定前端技术一面 匹配大厂面试要求学习笔记 第1章 课程介绍[说说面试的那些事儿] 本章会出几个面试题,分析每道题目设计的知识点,然后总结出一个完整的知识体系.让我们开始 "题目-> ...
- caj文件怎么转换成pdf格式?三步搞定
当我们需要查阅一些文献资料时,往往会遇到CAJ文件格式的问题.这种格式需要使用专业的阅读工具才能打开,让我们的阅读体验变得十分不便.为了解决这个问题,我们可以将CAJ文件转换成PDF文件格式.这样,无 ...
最新文章
- Linux 环境变量配置
- jQuery JavaScript库达到新的里程碑
- Internet:从区块链的底层技术思考互联网是如何构成的
- BZOJ 3237: [Ahoi2013]连通图
- mysql复制的配置
- Bash:把粘贴板上的内容拷贝的文件中。(脚本)
- 【Maven实用技巧】03. Maven 编译打包时如何忽略测试用例
- python函数返回多个值时的数据类型是_Python3 注释多个返回值的函数类型
- qt中的qwidget如何实现自定义部件_2.3信号和槽(中)
- Java 9 接口私有方法
- android studio真机调试失败,【Android】Android Studio真机调试的问题统整
- 【算法笔记】求长度为n的序列的全排列包含的总逆序对数目(树状数组求解)
- 产品需求文档五分钟轻松搞定!这可能史上最全PRD文档模板
- 换个角度理解正则表达式
- 第三部分 数据结构 -第一章 栈-1357:车厢调度(train)
- 如何使scrapy爬取信息不打印在命令窗口中
- MySQL 的安装与启动
- API的防篡改和防重放机制
- 利用css特性布局页面制作京东特价框
- HDOJ 1846 Brave Game(巴士博弈)