📄 check.c
字号:
//-----------------------------------------------------------------------------
// check.c
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <reg52.h>
#include <string.h>
#include "cpu/cpu.h"
#include "main/main.h"
#include "ext/x5045.h"
#include "ext/bc7281.h"
#include "rfid/card.h"
#include "card/block.h"
#include "misc/misc.h"
#include "misc/general.h"
#include "config/config.h"
//-----------------------------------------------------------------------------
// Check Card Type Routine
//-----------------------------------------------------------------------------
char Check_Card_Type ( void )
{
char rtn;
char idata buf[2 * BLOCK_LEN];
char idata sn[CARD_SN_LEN];
pSTICC c = ( pSTICC ) buf;
if (( rtn = Access_Card_Module ( FIND_CARD, AWAKE_CARD, sn )) == NO_CARD ) return TRUE;
else if ( rtn != TRUE ) return rtn;
#ifndef USE_JMY_MODULE
if (( rtn = Access_Card_Module ( WRITE_KEY, BLOCK61, sn )) != TRUE ) return rtn;
#endif
memset ( buf, 0, BLOCK_LEN );
if (( rtn = Access_Card_Module ( READ_BLOCK, BLOCK61, (char *) &c->Block61 )) != TRUE ) return rtn;
if (( rtn = Card_Data_Valid ((char *) &c->Block61 )) != TRUE ) return rtn;
Speaker_Beep ();
switch ( c->Block61.Type )
{
case CHECK_CARD:
bCheck = ON;
Check_Display_Item ();
break;
default:
{
if (( rtn = Access_Card_Module ( READ_BLOCK, BLOCK60, (char *) &c->Block60 )) != TRUE ) return rtn;
if (( rtn = Card_Data_Valid ((char *) &c->Block60 )) != TRUE ) return rtn;
if ( memcmp ( f.City, c->Block60.City, sizeof( f.City ))) return Fail( City_Err );
switch ( c->Block61.Type )
{
case USER_CARD:
if ( memcmp ( f.Well, c->Block60.Well, sizeof( f.Well ))) return TRUE;
if ( User_Card_Deal ( buf, sn ) == TRUE )
{
User_Display_Item ();
rtn = Write_Card_Record ( buf, sn );
if ( rtn == TRUE ) bc7281_Display_Dig ( Code8, DISP_DELAY1 );
else bc7281_Display_Dig ( Code4, DISP_DELAY1 );
}
break;
case CLOCK_CARD:
Set_Clock ( &c->Block61.u.Clock.t );
Display_Clock ( DISP_DELAY1 );
break;
case CLEAR_CARD:
if ( Shift_Run_Mode ( RUN ) == TRUE )
bc7281_Display_Dig ( Code7, DISP_DELAY1 );
break;
case TEST_CARD:
if ( Shift_Run_Mode ( TEST ) == TRUE )
bc7281_Display_Dig ( Code9, DISP_DELAY1 );
break;
#ifdef USE_LOWLIMIT_CARD
case LOWLIMIT_CARD:
r.LowLimit = Array_Long ( c->Block60.User.LowLimit, 3 );
if (( bMem = x5045_Is_Busy ()) == FALSE )
{
x5045_Write_Enable ();
x5045_Write ( LowLimit_memAddr, c->Block60.User.LowLimit, sizeof( r.LowLimit ));
bc7281_Display_Dig ( CodeF | r.LowLimit, DISP_DELAY1 );
}
r.LowLimit = BCD_Hex ( 0x00ffffff & r.LowLimit, 7 );
break;
#endif
#ifdef USE_RECORD_CARD
case RECORD_CARD:
bc7281_Display_Dig ( CodeA, DISP_DELAY1 );
if ( Write_Card_Record ( buf, key ) == TRUE )
bc7281_Display_Dig ( Code8, DISP_DELAY1 );
else bc7281_Display_Dig ( Code4, DISP_DELAY1 );
break;
#endif
default:
return Fail( Type_Err );
break;
}
}
}
if ( bMem )
{
bMem = CLEAR;
bc7281_Display_Dig ( Code6, DISP_DELAY1 );
}
#ifdef USE_JMY_MODULE
if (( rtn = Access_Card_Module ( CARD_SLEEP, NULL, NULL )) != TRUE ) return rtn;
#endif
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -