|
我这个是用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;
- }
- }
- }
复制代码 |
|