📄 lcdtask.c
字号:
/****************************************************************
** *
** FILE : DisPlayTask.C *
** *
** By : Cyb 2007.01.11 *
****************************************************************/
#define LCDTASK_GLOBALS
#include "includes.h"
#include "timetask.h"
#include "systask.h"
#include "message.h"
#include "errcode.h"
#include "errtask.h"
#include "uart_drv.h"
#include "hardware.h"
#include "LcdTask.h"
#include "alarmer.h"
#include "watchdog.h"
#include "StaName.h"
#include "Predictor.h"
#include "PowerUp.h"
#define SIZE_MSGQUEBUF 20
static INT8U CurLcdKey;
static OS_QMSG MsgQueBuf[SIZE_MSGQUEBUF];
static OS_STK LcdTaskStack[STACK_LCDTASK];
static TMR_TSK *LcdLightTmr;
static INT8U wdgid;
static INT8U StaName[12];
static INT8U DialKeyMapTbl[] = {
0x01, KEY_UP, 0x02, KEY_NCK, 0x03, KEY_DOWN,
0x04, KEY_ACK, 0x05, KEY_rangzuo, 0x06, KEY_ENTER,
0x07, KEY_chongbo, 0x08, KEY_yongji, 0x09, KEY_8,
0x86, KEY_guanji
};
static INT8U QueryKeyTbl(INT8U RecvKey)
{
INT8U i;
for(i=0;i<sizeof(DialKeyMapTbl)/2;i++)
{
if(RecvKey == DialKeyMapTbl[2*i])
{
return DialKeyMapTbl[2*i+1];
}
}
return KEY_INVALID;
}
static void LcdLightFunc(void)
{
Pulldown_L_ELSW();
StopTmr(LcdLightTmr);
}
void TurnOnLcdLight(void)
{
Pullup_L_ELSW();
StartTmr(LcdLightTmr,SECOND,10);
}
void TurnOffLcdLight(void)
{
Pulldown_L_ELSW();
StopTmr(LcdLightTmr);
}
INT8U GetCurLcdKey(void)
{
return CurLcdKey;
}
static void InitLcdTask(void)
{
CurLcdKey = NULL;
LcdLightTmr = CreateTimer(LcdLightFunc,0);
InitLcdTask();
InitFormStack();
}
static void HdlKey(void)
{
TurnOnLcdLight();
WinStackEntry();
ClearWatchdog();
}
static void HdlMSG_LCD_NAMEDISPLAY(INT16U id)
{
INT8U len;
len = GetStrlen(StaNames[id],15);
if(len >= 12)
{
len = 12;
}
memset(StaName,0,sizeof(StaName));
memcpy(StaName,StaNames[id],len);
Print_LCD(1,1,StaName,sizeof(StaName));
}
static void HdlMSG_LCD_OPSTATUS(INT8U opstatus)
{
DplyWorkIcon(opstatus);
}
static void HdlMSG_LCD_POWKEY(void)
{
OperateMachine();
}
static void LcdTask(void *pd)
{
INT8U tempkey;
pd = pd;
PrintFromUART(1, "LcdTask开始执行!\n");
InitLcdTask();
ActivatePowerUpPage();
wdgid = ApplyWatchDogID();
while(1)
{
if(OSQPend(LcdTaskQ,20,&LcdCurMsg)==OS_NO_ERR)
{
switch(LcdCurMsg.MsgID)
{
case MSG_LCDKEY:
tempkey = LcdCurMsg.LMsgPara;
CurLcdKey = QueryKeyTbl(tempkey);
HdlKey();
break;
case MSG_LCD_NAMEDISPLAY:
HdlMSG_LCD_NAMEDISPLAY(LcdCurMsg.MsgID);
break;
case MSG_LCD_OPSTATUS:
HdlMSG_LCD_OPSTATUS(LcdCurMsg.MsgID);
break;
case MSG_LCD_POWKEY:
HdlMSG_LCD_POWKEY();
default:
break;
}
}
ResetWatchDog(wdgid);
}
}
void CreateLcdTask(void)
{
LcdTaskQ = OSQCreate(MsgQueBuf, sizeof(MsgQueBuf)/sizeof(MsgQueBuf[0]));
OSTaskCreate(LcdTask, (void *)0, &LcdTaskStack[STACK_LCDTASK], PRIO_LCDTASK);
}
void TurnOnLcdDply(void)
{
DplyOnLCD();
}
void TurnCloseLcdDply(void)
{
DplyOffLCD();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -