110 lines
2.4 KiB
C
110 lines
2.4 KiB
C
/*
|
|
* APP_IDcard.c
|
|
*
|
|
* Created on: Sep 6, 2021
|
|
* Author: wuwenfeng
|
|
*/
|
|
#include "APP_IDcard.h"
|
|
|
|
window *idcard_window;
|
|
char idcard_str[32];
|
|
|
|
void APP_IDcard_init(window *a_window)
|
|
{
|
|
idcard_window=a_window;
|
|
RC522_Init();
|
|
}
|
|
unsigned char CT[2];
|
|
unsigned char SN[4];
|
|
unsigned char RFID[16];
|
|
unsigned char status;
|
|
unsigned char s=0x08;
|
|
char KEYA[6]={0,0,0,0,0,0};
|
|
char KEYB[6]={0xff,0xff,0xff,0xff,0xff,0xff};
|
|
uint32_t card_number_D=0;
|
|
|
|
char fundcard,PA,sele,checkkey,read_flag;
|
|
|
|
//ͨ¹ýdebug·µ»Ø¿¨Æ¬Êý¾Ý
|
|
|
|
void APP_IDcard_loop()
|
|
{
|
|
fundcard = PcdRequest(PICC_REQALL,CT);
|
|
if(fundcard==MI_OK)
|
|
{
|
|
|
|
status=MI_ERR;
|
|
PA = PcdAnticoll(SN);
|
|
if(PA==MI_OK)
|
|
{
|
|
printf("\n***********************\n");
|
|
printf("Card Type:%X%X\n",CT[0],CT[1]);
|
|
printf("CardId:%X%X%X%X\n",SN[0],SN[1],SN[2],SN[3]);
|
|
|
|
sprintf(idcard_str,"CardId:%X%X",CT[0],CT[1]);
|
|
LCD_ShowString(idcard_window->x, idcard_window->y+16, idcard_str, 16, GREEN, RED);
|
|
sprintf(idcard_str,"CardId:%X%X%X%X",SN[0],SN[1],SN[2],SN[3]);
|
|
LCD_ShowString(idcard_window->x, idcard_window->y+32, idcard_str, 16, GREEN, RED);
|
|
|
|
sele=PcdSelect(SN);
|
|
if(sele==MI_OK)
|
|
{
|
|
|
|
LCD_ShowString(idcard_window->x, idcard_window->y+48, "Key ok", 16, GREEN, RED);
|
|
for(int a=0;a<64;a++)
|
|
{
|
|
checkkey=PcdAuthState(0x61,a,KEYB,SN);
|
|
if(checkkey==MI_OK)
|
|
{
|
|
read_flag=PcdRead(a,RFID);
|
|
if(read_flag==MI_OK)
|
|
{
|
|
for(int d=0;d<16;d++)
|
|
{
|
|
printf("%02X",RFID[d]);
|
|
}
|
|
}else
|
|
{
|
|
printf("READ_ERROR");
|
|
}
|
|
|
|
}else
|
|
{
|
|
printf("KEY_ERROR");
|
|
}
|
|
printf("\n");
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
/*
|
|
if (status==MI_OK)
|
|
{
|
|
status=MI_ERR;
|
|
card_number_D=(SN[2]<<16)+(SN[1]<<8)+(SN[0]);
|
|
sprintf(idcard_str,"CardId:%d",card_number_D);
|
|
LCD_ShowString(idcard_window->x, idcard_window->y+16, idcard_str, 16, GREEN, RED);
|
|
|
|
status=MI_ERR;
|
|
status =PcdAuthState(0x61,0,KEY,SN);
|
|
}
|
|
if(status==MI_OK)
|
|
{
|
|
LCD_ShowString(idcard_window->x, idcard_window->y+32, "KEY_OK", 16, GREEN, RED);
|
|
status=MI_ERR;
|
|
status=PcdRead(0,RFID);
|
|
}
|
|
if(status==MI_OK)
|
|
{
|
|
sprintf(idcard_str,"%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x",RFID[0],RFID[1],RFID[2],RFID[3],RFID[4],RFID[5],RFID[6],RFID[7],RFID[8],RFID[9],RFID[10],RFID[11],RFID[12],RFID[13],RFID[14],RFID[15]);
|
|
LCD_ShowString(idcard_window->x, idcard_window->y+32, idcard_str, 16, GREEN, RED);
|
|
}
|
|
*/
|
|
|
|
}
|
|
|