//******************************************************************/ //功 能:寻卡 / //参数说明: 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) ; WriteRawRC(BitFramingReg,0x07) ; SetBitMask(TxControlReg,0x03) ; ucComMF522Buf[0] = req_code ; status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf, 1,ucComMF522Buf,&unLen ); if ((status == MI_OK) && (unLen == 0x10)) { *pTagType = ucComMF522Buf[0] ; *(pTagType+1) = ucComMF522Buf[1] ; } else status = MI_ERR ; return status ; } //******************************************************************/ //功 能:防冲撞 / //参数说明: pSnr[OUT]:卡片序列号,4字节 / //返 回: 成功返回MI_OK / //******************************************************************/ char PcdAnticoll(unsigned char *pSnr) { char status; unsigned char i,snr_check=0; unsigned int unLen; unsigned char ucComMF522Buf[MAXRLEN]; ClearBitMask(Status2Reg,0x08); WriteRawRC(BitFramingReg,0x00); ClearBitMask(CollReg,0x80); ucComMF522Buf[0] = PICC_ANTICOLL1; ucComMF522Buf[1] = 0x20; Status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen); if (status == MI_OK) { for (i=0; i<4; i++) { *(pSnr+i) = ucComMF522Buf[i]; snr_check ^= ucComMF522Buf[i]; } if (snr_check != ucComMF522Buf[i]) { status = MI_ERR; } } SetBitMask(CollReg,0x80); return status; }