|
我這個是用4X4的按鍵控制RC522的功能,然后在OLED顯示屏上顯示一些想要知道的信息。
我的尋卡和防沖撞功能以及可以了,但是其他功能用不了,比如選擇卡,驗證密碼(新卡,不知道卡片真正的密碼),讀卡,寫卡之類的。
請大佬指教,先謝過
- void Rc522_Allot()
- {
- static u16 xdata count=0;
- u8 status;
- count++;
- if(count>=2000)
- {
- count=0;
- switch(key4x4_Read_Byte)
- {
- case 1: //終止卡的操作
- status= PcdHalt();//功 能:命令卡片進入休眠狀態
- break;
- case 2:
- // 尋卡,防沖突,選擇卡 返回卡類型(2 bytes)+ 卡系列號(4 bytes)
- status= PcdRequest(0x52,MLastSelectedSnr);
- if(status==MI_OK)
- key4x4_Read_Byte=3;
- break;
-
- case 3: // 防沖突 讀卡的系列號 MLastSelectedSnr
- status = PcdAnticoll(MLastSelectedSnr); //功 能:防沖撞
- if(status==MI_OK)
- key4x4_Read_Byte=4;
- break;
- case 4: // 選擇卡 Select Card
- status=PcdSelect(MLastSelectedSnr);
- if(status==MI_OK)
- {
- kkk=1;
- // key4x4_Read_Byte=1;
- }
- else
- {
- kkk=2;
- // key4x4_Read_Byte=1;
- }
- break;
- case 5:
- status = PcdAuthState(0x60, 0, DefaultKey,MLastSelectedSnr);// 校驗卡密碼
- if(status==MI_OK)
- {
- kkk=3;
- // key4x4_Read_Byte=1;
- }
- break;
- case 8: // 讀卡
- status=PcdRead(1,RevBuffer);
- if(status==MI_OK)
- {
- key4x4_Read_Byte=17;
- kkk=4;
- }
- else
- {
- kkk=5;
- // key4x4_Read_Byte=1;
- }
- break;
- case 9: // 寫卡 下載密碼
- status=PcdWrite(1,RevBuffer);
- if(status==MI_OK)
- {
- key4x4_Read_Byte=17;
- kkk=6;
- }
- else
- {
- kkk=7;
- // key4x4_Read_Byte=1;
- }
- break;
- // case 10:
- // PcdValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3]);
- // key4x4_Read_Byte=1;
- // break;
- // case 12: // 參數設置
- // PcdBakValue(RevBuffer[1], RevBuffer[2]);
- // key4x4_Read_Byte=1;
- // break;
- }
- }
- }
復制代碼 |
|