射频 rc500代码完全注释(8)

2018-11-29 16:23

alNo(4bytes)

1411.//寻卡?防冲突?选择卡返回卡类型?2bytes?+卡序列号(4bytes) 1412.status=M500PiccCommonRequest(RevBuffer[1],&RevBuffer[2]); 1413.if(status!=0)/*寻卡指令?应答信息*/ 1414.{/*寻卡不成功*/

1415.status=M500PiccCommonRequest(RevBuffer[1],&RevBuffer[2]);/*再次寻卡*/

1416.if(status!=0)

1417.{/*寻卡还是不成功*/ 1418.

1419.RevBuffer[0]=1;

1420.RevBuffer[1]=status;/*做出应答信息给上位机*/ 1421.break; 1422.} 1423.} 1424.

1425.if(RevBuffer[2]==2)//返回信息 1426.cardtype=mifarepro;//MifarePro卡 1427.elseif(RevBuffer[2]==4)

1428.{cardtype=mifare1;//MifareOne卡 1429. 1430.}

1431.elseif(RevBuffer[2]==16)

1432.cardtype=mifarelight;//MifareLight卡 1433.else

1434.cardtype=unknowncard; 1435.

1436.RevBuffer[0]=3;

1437.RevBuffer[1]=status;/*做出应答信息给上位机*/ 1438.

1439.break; 1440.

1441.case3://防冲突读卡的系列号MLastSelectedSnr 1442.{status=M500PiccCascAnticoll(0,&RevBuffer[2]); 1443.status=0;

1444.if(status!=0) 1445.{/*反冲突失败*/ 1446.RevBuffer[0]=1;

1447.RevBuffer[1]=status;/*做出失败的应答信息给上位机*/ 1448.

1449.break; 1450.}

1451./*反冲突成功*/

1452.memcpy(MLastSelectedSnr,&RevBuffer[2],4);/*存储序列号*/

1453.RevBuffer[0]=5;

1454.RevBuffer[1]=status;/*做出成功的应答信息给上位机*/ 1455. 1456.}

1457.break; 1458.

1459.case4://选择卡SelectCard

1460.status=M500PiccCascSelect(MLastSelectedSnr,&RevBuffer[2]); 1461.

1462.if(status!=MI_OK) 1463.{

1464.RevBuffer[0]=1;

1465.RevBuffer[1]=status;/*做出失败的应答信息给上位机*/ 1466.break; 1467.}

1468.RevBuffer[0]=3;

1469.RevBuffer[1]=status;/*做出成功的应答信息给上位机*/ 1470.

1471.break;

1472.case5://KeyloadingintotheMFRC500'sEEPROM 1473.//校验卡密码(E2)

1474.status=M500PiccAuthE2(RevBuffer[1],MLastSelectedSnr,RevBuffer[2],RevBuffer[3]);

1475.RevBuffer[0]=1;/*入口参数?AUTH_MODE:A/B卡型号?SNR:卡序列号?KEYNR:密钥所在EE扇区数?BLOCK:密钥所 在卡数据块*/

1476.RevBuffer[1]=status; 1477.break;

1478.case6://KeyloadingintotheMFRC500'sEEPROM 1479.//下载密码(E2)

1480.status=M500PcdLoadKeyE2(RevBuffer[1],RevBuffer[2],&RevBuffer[3]);

1481.RevBuffer[0]=1;

1482.RevBuffer[1]=status; 1483.break;

1484.case7://AuthenticationwithdirectkeyloadingfromtheuC 1485.//直接校验密码

1486.memcpy(&RevBuffer[9],&RevBuffer[3],6);

1487.M500HostCodeKey(&RevBuffer[9],&RevBuffer[3]);

1488.status=M500PiccAuthKey(RevBuffer[1],MLastSelectedSnr,&RevBuffer[3],RevBuffer[2]);

1489.RevBuffer[0]=1;/*入口参数?AUTH_MODE:A/B卡型号?SNR:卡序列号?KEYNR:密钥所在RAM地址?BLOCK:密钥所在 卡数据块*/

1490.RevBuffer[1]=status; 1491.break;

1492.case8://Readthemifarecard 1493.//读卡

1494.status=M500PiccRead(RevBuffer[1],&RevBuffer[2]); 1495.if(status==0) 1496.{

1497.if(cardtype==mifare1||cardtype==mifarepro)

1498.RevBuffer[0]=17;/*卡类型决定一次能读出的数据个数*/ 1499.elseif(cardtype==1)

1500.RevBuffer[0]=9;/*一次读出9个*/ 1501.else

1502.RevBuffer[0]=16;/*一次读出16个?MIFARE1?*/ 1503.} 1504.else 1505.{

1506.RevBuffer[0]=1; 1507.}

1508.RevBuffer[1]=status; 1509.break;

1510.case9://Writethemifarecard 1511.//写卡下载密码

1512.status=M500PiccWrite(RevBuffer[1],&RevBuffer[2]); 1513.RevBuffer[0]=1;

1514.RevBuffer[1]=status; 1515.break;

1516.case10://写卡改变卡内EEROM中数据块中的内容

1517.status=M500PiccValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3],RevBuffer[7]);

1518.RevBuffer[0]=1;/*入口参数?三种命令?自增?自减?改变??卡块地址?要写入的值?卡块地址*/ 1519.RevBuffer[1]=status; 1520.break;

1521.case12://参数设置

1522.RevBuffer[0]=1;//contact 1523.RevBuffer[1]=0; 1524.break; 1525.} 1526.} 1527.

1528.///////////////////////////////////////////////////////////////////////

1529.//主函数

1530.///////////////////////////////////////////////////////////////

////////

1531.voidmain(void) 1532.{

1533.init(); 1534.while(1) 1535.{

1536.if(CmdValid) 1537.{

1538.CmdValid=FALSE;

1539.cmd_execution();//进入IC卡处理程序 1540.CALL_isr_UART(); 1541.} 1542.} 1543.}


射频 rc500代码完全注释(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:竞彩足球双平买法

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

马上注册会员

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