关于射频RFID-RC522的使用和见解

2019-07-14 21:34发布

/******************************************************************************************
* 函数名称    :char PcdAuthState(unsigned char  auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr)
* 功能描述    :验证卡片密码
* 输入参数    :auth_mode[IN]: 密码验证模式
*                 0x60 = 验证A密钥
*                 0x61 = 验证B密钥
*                  addr[IN]:块地址(0~63)
*                  pKey[IN]:密码
*                  pSnr[IN]:卡片序列号,4字节
* 返回值      :成功返回MI_OK
* 作者        :LXY
* 创建日期    : 2013-12

char PcdAuthState(unsigned char  auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr)
{
    char  status;
    unsigned int  unLen;
    unsigned char i,ucComMF522Buf[MAXRLEN];

    ucComMF522Buf[0] = auth_mode;
    ucComMF522Buf[1] = addr;          //读第几块
    for (i=0; i<6; i++)
    {    ucComMF522Buf[i+2] = *(pKey+i);   } //存放密码
    for (i=0; i<6; i++)
    {    ucComMF522Buf[i+8] = *(pSnr+i);   }
      
  status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen);
ceshi=ReadRawRC(Status2Reg);
    if ((status != MI_OK)|| (!(ReadRawRC(Status2Reg) & 0x08) ) )         // //问题:取消掉这个寄存器的位检测可以吗?我测试过Status2Reg寄存器的值始终为0x00,没有执行成功MFAuthent命令,所以没有置位,导致我的IC卡认证不成功,我删掉|| (!(ReadRawRC(Status2Reg) & 0x08) ) 这句后就正常了,请问这个寄存器具体什么作用,我不认证了,对安全上有什么影响吗??。
    {  
status = (char)MI_ERR;
    }
   
    return status;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。