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

📄 process.c

📁 RC522完整程序无需修改可放心使用
💻 C
字号:

/*************************************************/
#include  "My_head.h"
/*************************************************/
static  BYTE  idata  Cur_State=IDEL_STATUS;
void  SetCurState(BYTE stat) // (状态切换)
{
   if(stat>=MY_MAX_STATUS)return;
   Cur_State = stat;
}


BYTE  GetCurState(void)
{
   return(Cur_State);
}


static  QUEUE_MESSAGE  idata  queue_message;
/*-----------------------------------------------------------*/
void  Message_Clear(void)
{
  queue_message.head=queue_message.tail=0;
}


/*-----------------------------------------------------------*/
/*                                                           */
/*-----------------------------------------------------------*/
bit  PostMessage(BYTE Code, BYTE Dat)
{
   BYTE  head=queue_message.head;

   if(++head>=MESSAGE_SIZE)head = 0;
   if(head == queue_message.tail)return FALSE;

   queue_message.array[queue_message.head].Code = Code;
   queue_message.array[queue_message.head].Dat  = Dat;
   queue_message.head = head;
   return TRUE;
}


/*-----------------------------------------------------------*/
/*                                                           */
/*-----------------------------------------------------------*/
bit  GetMessage(MESSAGE *Message)
{
   if(queue_message.tail == queue_message.head)return FALSE;
   Message->Code = queue_message.array[queue_message.tail].Code;
   Message->Dat = queue_message.array[queue_message.tail].Dat;
   if(++queue_message.tail>=MESSAGE_SIZE)queue_message.tail= 0;

   return TRUE;
}


/*--------------------------------------------------------*/
//#include  "even_tab.c"
extern  BYTE   code  *code  Status_Even_Tab[];
extern  BYTE  (code  *code  EventFunc_Tab[])(BYTE);
/*--------------------------------------------------------*/
void  Do_Process(MESSAGE  Message)
{
   BYTE   (code *func)(BYTE);
   BYTE   i,*Even_Tab = Status_Even_Tab[Cur_State];
   for(i=0;Even_Tab[i]<OTHER_UNKNOW_ENVENT;i+=2)
     if(Message.Code == Even_Tab[i])
       {
	    i=Even_Tab[i+1];
	    //if(i > sizeof(EventFunc_Tab)/sizeof(func))break;
        func = EventFunc_Tab[i];
	    if(func)i=func(Message.Dat);
		//if(i)send_for_test(i);
	    break; //must!!
       }
}


/*
void  Init_Message(void)
{
   SetCurState(IDEL_STATUS);
   Message_Clear();
}
*/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -