在用RFID讀卡的時候,向串口發送卡片信息,但是每次在串口上看到的都是循環讀卡片的信息,我只想讓下位機通過串口只發送一次卡片信息;求各位大神代碼怎么寫;
主函數代碼如下:
void main( )
{
unsigned char status,i;
unsigned int temp;
lcd_init();
InitializeSystem( );
PcdReset();
PcdAntennaOff();
PcdAntennaOn();
display_welcome2();
while ( 1 )
{
status = PcdRequest(PICC_REQALL, g_ucTempbuf);//尋卡
if (status != MI_OK)
{
continue;
}
display_type();//尋到卡后顯示出該卡的類型
printf("卡的類型:");
for(i=0;i<2;i++)
{
temp=g_ucTempbuf[i];
printf("%X",temp);
}
status = PcdAnticoll(g_ucTempbuf);//防沖撞
if (status != MI_OK)
{ continue; }
display_cardnum();//顯示尋到的卡的序列號
////////以下為超級終端打印出的內容////////////////////////
printf("卡序列號:"); //超級終端顯示,
for(i=0;i<4;i++)
{
temp=g_ucTempbuf[i];
printf("%X",temp);
}
status = PcdAnticoll(g_ucTempbuf);//防沖撞
//temp=m1erea;
//printf("%X\n",temp);
///////////////////////////////////////////////////////////
status = PcdSelect(g_ucTempbuf);//選定卡片
if (status != MI_OK)
{ continue; }
status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//驗證卡片密碼
if (status != MI_OK)
{ continue; }
status = PcdWrite(1, data1);//寫塊
if (status != MI_OK)
{ continue; }
while(1)
{
status = PcdRequest(PICC_REQIDL, g_ucTempbuf);//尋卡
if (status != MI_OK)
{
continue;
}
status = PcdAnticoll(g_ucTempbuf);//防沖撞
if (status != MI_OK)
{ continue; }
display_cardnum();//顯示尋到的卡的序列號
status = PcdSelect(g_ucTempbuf);//選定卡片
if (status != MI_OK)
{ continue; }
status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//驗證卡片密碼
if (status != MI_OK)
{ continue; }
status = PcdValue(PICC_DECREMENT,1,data2);//扣款
if (status != MI_OK)
{ continue; }
display_xiaofeicarddat();//消費
/* status = PcdValue(PICC_INCREMENT,1,data2);//充值
if (status != MI_OK)
{ continue; }
*/
status = PcdBakValue(1, 2);//塊備份
if (status != MI_OK)
{ continue; }
status = PcdRead(2, g_ucTempbuf);//讀塊
if (status != MI_OK)
{ continue; }
printf("卡讀塊:"); //超級終端顯示,
for(i=0;i<16;i++)
{
temp=g_ucTempbuf[i];
printf("%X",temp);
}
printf("\n");
display_carddat();//顯示數據
//memcpy(data1,g_ucTempbuf,16);
LED_GREEN = 0;
FM_QI= 0;
delay1(100);
LED_GREEN = 1;
FM_QI= 1;
delay1(100);
LED_GREEN = 0;
FM_QI= 0;
delay1(200);
LED_GREEN = 1;
FM_QI= 1;
delay1(600);
PcdHalt();
//PcdAntennaOff();
printf("test1:");
}
}
|