⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 check.c

📁 智能水表程序 来着互联网
💻 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 + -