新手入门
- 积分
- 3
- 金钱
- 3
- 注册时间
- 2022-3-12
- 在线时间
- 3 小时
|
3金钱
本帖最后由 iamakamenrider 于 2022-3-14 18:34 编辑
求求啦各位大佬,我想用RCC52识别卡片,让那后进行if判断。
我定义了和卡片编码相同的全局变量,但是当我用if去判断的时候总是出错。
大佬能否帮我看看是哪里除了问题?
这是main函数
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "RC522.h"
char myIDCard[4] = {0x20,0x00,0x07,0x58};
int main(void)
{
char cid[4];
uart_init(115200);
delay_init();
LED_Init();
RC522_Init();
LED0 = 0;
memset(cid,0,sizeof(cid));
printf("Startinggggggggg!!!!\r\n");
while(1)
{
RC522_Read_ID_Once(cid);
if(strlen(cid)>0)
{
就是这个if使用无效----------------------------if((cid[0]==myIDCard[0])&&(cid[1]==myIDCard[1])&&(cid[2]==myIDCard[2])&&(cid[3]==myIDCard[3]))
{
printf("myIDCard = %s\r\n",myIDCard);
printf("iccard yes!\r\n");
}
LED0 = !LED0;
printf("myIDCARD = %x\r\n",myIDCard);
printf("cid = %s\r\n",cid);
memset(cid,0,sizeof(cid));
}
}
}
这是RC522模块函数
/*******************************
*连线说明:
*1--SDA(CS) <----->PC7
*2--SCK <----->PB13
*3--MOSI <----->PB14
*4--MISO <----->PB15
*5--悬空
*6--GND <----->GND
*7--RST <----->PC8
*8--VCC <----->VCC
************************************/
#define RC522_DELAY() delay_us( 2 )
/*全局变量*/
unsigned char CT[2]; //卡类型
unsigned char SN[4]; //卡号
unsigned char RFID[16]; //存放RFID
unsigned char lxl_bit=0;
unsigned char card1_bit=0;
unsigned char card2_bit=0;
unsigned char card3_bit=0;
unsigned char card4_bit=0;
unsigned char total=0;
unsigned char lxl[4]={196,58,104,217};
unsigned char card_1[4]={83,106,11,1};
unsigned char card_2[4]={208,121,31,57};
unsigned char card_3[4]={176,177,143,165};
unsigned char card_4[4]={5,158,10,136};
u8 KEY[6]={0xff,0xff,0xff,0xff,0xff,0xff};
u8 AUDIO_OPEN[6] = {0xAA, 0x07, 0x02, 0x00, 0x09, 0xBC};
unsigned char RFID1[16]={0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0x80,0x29,0xff,0xff,0xff,0xff,0xff,0xff};
/*函数声明*/
unsigned char status;
unsigned char s=0x08;
void RC522_Read_ID_Once(char *cardID)
{
char Str1[20],Str2[20];
u8 card_type[2];//卡片类型,2字节
u8 card_ID[4];//卡序列号
u8 statusRt;
//PcdAntennaOn();
statusRt = PcdRequest(PICC_REQIDL, card_type);//寻未进入休眠的卡
if(statusRt == MI_OK){
//寻卡成功
//printf("寻卡成功~!\r\n");
sprintf ( Str1, "card_type: %02X%02X",
card_type [ 0 ],
card_type [ 1 ]);
//printf ( "%s\r\n",Str1);
if( PcdAnticoll (card_ID) == MI_OK){
//防冲撞成功
sprintf ( Str2, "The Card ID is: %02X%02X%02X%02X",
card_ID [ 0 ],
card_ID [ 1 ],
card_ID [ 2 ],
card_ID [ 3 ] );
//printf ( "%s\r\n",Str2);
if(PcdSelect(card_ID) == MI_OK){
//printf("选卡成功!\r\n");
if(PcdHalt() == MI_OK){
//printf("休眠成功!\r\n");
sprintf ( cardID, "%02X%02X%02X%02X", card_ID [ 0 ], card_ID [ 1 ], card_ID [ 2 ], card_ID [ 3 ] );
//printf("read suc!\r\n");
}
}
}
}
}
|
|