?? main.c
字號:
/******************************************************************************
main.c BY xbpda 2003.3.5
*****************************************************************************/
#define MAIN
#define VZ328
#include <stdlib.h>
#include <stdio.h>
#include "ppsm.h"
#include "errors.h"
#include "proto.h"
#include "M68328.h"
#include "Gui.h"
#include "Main.h"
#include "PubVal.h"
#include "PubFun.h"
//extern STATUS CalibratePen(U16 LogoFlag);
extern void VarForSelectFoodInit(void);
extern void SysInit();//應用系統初始化
extern void IrqInit();//中斷初始化
extern U8 ChangeCommChannel[2];
extern void RFOn(void); //頻率
void main(void)
{
PPSMInit(TRUE);//PPSM初始化
IrqInit(); //中斷初始化
//CalibratePen(TRUE);//校準屏幕
TempBitMap=LcallocBit(101,181);
SysInit();//應用系統初始化
//建立用戶身份驗證任務
if (TaskCreate(&UserVerifyTaskID, (P_VOID)UserVerifyTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(UserVerifyTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立系統菜單
if (TaskCreate(&SysMenuTaskID, (P_VOID)SysMenuTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SysMenuTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立姓名查詢任務
if (TaskCreate(&SearchNameTaskID, (P_VOID)SearchNameTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SearchNameTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立點菜查詢任務
if (TaskCreate(&LookTableTaskID, (P_VOID)LookTableTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(LookTableTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立發送狀態任務 //NewAdd
if (TaskCreate(&SendStatusTaskID, (P_VOID)SendStatusTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SendStatusTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立失敗狀態任務 //NewAdd
if (TaskCreate(&SendErrorTaskID, (P_VOID)SendErrorTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SendErrorTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立菜類任務
if (TaskCreate(&MenuTypeTaskID, (P_VOID)MenuTypeTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(MenuTypeTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立開臺點菜查詢任務
if (TaskCreate(&FoodManagerTaskID, (P_VOID)FoodManagerTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(FoodManagerTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立菜品任務
if (TaskCreate(&ViewFoodTaskID, (P_VOID)ViewFoodTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(ViewFoodTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立結帳任務
if (TaskCreate(&CloseOffTaskID, (P_VOID)CloseOffTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(CloseOffTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立查未發送菜品任務
if (TaskCreate(&ViewSelectedFoodTaskID, (P_VOID)ViewSelectedFoodTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(ViewSelectedFoodTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立已發送菜品查詢任務
if (TaskCreate(&InquireTaskID, (P_VOID)InquireTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(InquireTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立通信管理任務
if (TaskCreate(&ManageCommTaskID, (P_VOID)ManageCommTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(ManageCommTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立數據下載任務
if (TaskCreate(&WDownLoadDataTaskID, (P_VOID)WDownLoadDataTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(WDownLoadDataTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立系統維護任務
if (TaskCreate(&SysServiceTaskID, (P_VOID)SysServiceTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SysServiceTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立關于系統任務
//if (TaskCreate(&AboutSysTaskID, (P_VOID)AboutSysTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
//if (TaskReInit(AboutSysTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立系統授權任務
if (TaskCreate(&SysRegistTaskID, (P_VOID)SysRegistTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SysRegistTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立系統設置任務
if (TaskCreate(&SysSetTaskID, (P_VOID)SysSetTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SysSetTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//設置本機信息 //NewAdd
if (TaskCreate(&SysSelfSetTaskID, (P_VOID)SysSelfSetTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SysSelfSetTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//瀏覽本機信息 //NewAdd
if (TaskCreate(&SysSelfBrowseTaskID, (P_VOID)SysSelfBrowseTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SysSelfBrowseTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立系統介紹任務
if (TaskCreate(&SysIntroduceTaskID, (P_VOID)SysIntroduceTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(SysIntroduceTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立系統設置中的輸入任務
if (TaskCreate(&InputSysSetID, (P_VOID)InputSysSet,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
if (TaskReInit(InputSysSetID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//建立錯誤處理任務
// if (TaskCreate(&CommErrorTaskID, (P_VOID)CommErrorTask,0, 0, 0, 0, 0) != PPSM_OK) rv = PPSM_ERROR;
// if (TaskReInit(CommErrorTaskID, TRUE) != PPSM_OK) rv = PPSM_ERROR;
//任務交換
AppSwap(TRUE);
//啟動系統菜單任務
if(TaskStart(UserVerifyTaskID)!=PPSM_OK) rv = PPSM_ERROR;
}
extern void RFOff(void);
extern void ELedOff(void);
extern void LCDOff_new(void);
extern void RFPWOff(void);
extern void LEDHealthOff(void);
void UserVerifyTask(void) //用戶身份
{
}
U8 CheckEmployeePwd(P_TEXT EmployeeName,P_TEXT PwdStr) //檢測員工編號和密碼的正確性
{
U8 i;
for (i=0;i<TotalEmployeeNum;i++)
{
if(Strcmp((P_TEXT)Employee[i].EmpName,EmployeeName)==0)
{
if (Strcmp( (P_TEXT)Employee[i].EmpPwd,PwdStr)==0 ) return i;
else return 0xFF;
}
}
return 0xFE;
}
//////////////////////////////////////////////////////////////////////
U16 ListName(U8 PageID);
void SearchNameTask(void) //姓名查詢任務
{
U32 size;
U32 id;
S16 xSrc, ySrc, xDest, yDest;
P_U16 inData;
U8 i,j,m;
U8 TmpCurrentID=0;
U8 TmpTotalNameNum;
U8 PageID=0;
TEXT TitleTxt[]={'查','詢',0};
TEXT TableTitleTxt[2][4]={{'編','號',0},{'姓',' ','名',0}};
TEXT cmdButtonTxt[2][3]={{'上','頁',0},{'下','頁',0}};
U32 cmdButtonID[2];
U32 MsgButtonOKID;
U32 TmpSelectedNameID[9];
U16 ColWidth[2]={80,141};
Draw_Logo((P_TEXT)TitleTxt);
Draw_Table(14,30, 2, 1 , (P_U16)ColWidth, 19);
PutString((P_TEXT)TableTitleTxt[0],37,32);
PutString((P_TEXT)TableTitleTxt[1],140,32);
Draw_Table(14, 49, 2, 9, (P_U16)ColWidth, 23);
for (i=0;i<2;i++)
{
Text_Button3D(&cmdButtonID[i],(P_TEXT)cmdButtonTxt[i],120*i+25,270,85,26,2);
}
for (i=0;i<9;i++)
{
Active_AreaEnable(&TmpSelectedNameID[i], 15, 23*i+50, 219, 21);
}
//OpenCommPort(SearchNameTaskID);
TmpTotalNameNum=ListName(PageID);
while(1)
{
switch(IrptGetData((P_U32)&id, (P_U32*)&inData, (P_U32)&size))
{
case IRPT_RTC:
if (id==TimerRTCId) RTCTimerEvent();
break;
case IRPT_UART:
if (*inData == UART_DATA_RECEIVED) RecvData();
break;
case IRPT_ICON:
if (ActiveAreaRead(id,&xSrc,&ySrc,&xDest,&yDest)!= PPSM_OK) rv = PPSM_ERROR;
if (InvRec(xSrc+1,ySrc+1,(xDest-(xSrc+1)),(yDest-(ySrc+1)))!= PPSM_OK) rv = PPSM_ERROR;
if (AutoPowerOff!=0) PDAOpenTime=0;
if (*inData == PPSM_ICON_PEN_UP)
{
if (id==cmdButtonID[0]) //上頁
{
if (PageID>0)
{
PageID--;
TmpTotalNameNum=ListName(PageID);
}
break;
}
else if (id==cmdButtonID[1])//下頁
{
if ((PageID+1)*9<TotalEmployeeNum)
{
PageID++;
TmpTotalNameNum=ListName(PageID);
}
break;
}
else
{
for (i=0;i<TmpTotalNameNum;i++)
{
if (id==TmpSelectedNameID[i])
{
//LookNameFlag=TRUE;
EmployeeIndex=PageID*9+i;
CloseCommPort(UserVerifyTaskID);
break;
}
}
break;
}
}
break;
default:
break;
}
}
}
U16 ListName(U8 PageID) //顯示名字和編號
{
U8 i;
for(i=0;i<9;i++)
{
Clear_Rec(WHITE,15,23*i+50,78,21);
Clear_Rec(WHITE,96,23*i+50,138,21);
}
for (i=0;i<9;i++)
{
if ((PageID*9+i)<TotalEmployeeNum)
{
PutAssic((P_TEXT)Employee[PageID*9+i].EmpNo,22,i*23+52);
PutString((P_TEXT)Employee[PageID*9+i].EmpName,105,i*23+52);
}
else return i;
}
return 9;
}
//*********************NewAdd***清除閃存留痕記錄和標記*******************************
void ClearDeadSaveFlash(void) //檢測是否正常關機
{
U32 address;
GetSaveIndex=0;
address = SAVETASKADDR;
ram_perase_sector(28); //先擦除這個扇區
ram_pwrite_word(address,0xFFAA); //往扇區中寫存儲標志
address+=2;
ram_pwrite_word(address,GetSaveIndex);
}
//*************************************************************************************
extern U8 RFONFlag;
U8 CheckSelectIndex;
void SysMenuTask(void) //主界面函數
{
U32 size;
U32 id;
S16 xSrc, ySrc, xDest, yDest;
P_U16 inData;
U8 i,j;
TEXT TitleTxt[]={0};
TEXT cmdButtonTxt[4][5]={{'點',' ',' ','菜',0},{'無','線','下','載',0},{'系','統','維','護',0},{'退','出','系','統',0}};
U32 cmdButtonID[4];
TEXT MsgBoxTitelTxt[]={'操','作','提','示',0};
TEXT AssureMessageTxt[]={'您','確','定','要','退','出','系','統','嗎','? ',0};
U32 MsgButtonID[2];
U32 MsgButtonOKID;
TEXT MsgNoTableTxt[]={'您','沒','有','下','載','桌','臺','數','據','! ',0};
SignalValue=5;
Draw_Signal(SignalValue);
Draw_Logo((P_TEXT)TitleTxt);
for (i=0;i<3;i++)
{
Text_Button3D(&cmdButtonID[i],(P_TEXT)cmdButtonTxt[i],45,i*45+30,160,35,2);
}
Text_Button3D(&cmdButtonID[3],(P_TEXT)cmdButtonTxt[3],45,260,160,35,2);
OpenCommPort(SysMenuTaskID);
while(1)
{
switch(IrptGetData((P_U32)&id, (P_U32*)&inData, (P_U32)&size))
{
case IRPT_RTC:
if (id==TimerRTCId) RTCTimerEvent();
break;
case IRPT_UART:
if (*inData == UART_DATA_RECEIVED) RecvData();
break;
case IRPT_ICON:
if (ActiveAreaRead(id,&xSrc,&ySrc,&xDest,&yDest)!= PPSM_OK) rv = PPSM_ERROR;
if (InvRec(xSrc+1,ySrc+1,(xDest-(xSrc+1)),(yDest-(ySrc+1)))!= PPSM_OK) rv = PPSM_ERROR;
if (AutoPowerOff!=0) PDAOpenTime=0;
if (*inData == PPSM_ICON_PEN_UP)
{
if (id==cmdButtonID[0]) //點菜
{
CheckSelectIndex=1;
for (i=0;i<4;i++) TempTableStr[i]=0;
CloseCommPort(LookTableTaskID);
break;
}
else if (id==cmdButtonID[1]) //無線下載
{
CloseCommPort(ManageCommTaskID);
break;
}
else if (id==cmdButtonID[2]) //系統維護
{
CloseCommPort(SysServiceTaskID);
break;
}
else if (id==cmdButtonID[3]) //退出系統
{
MessageBox((P_TEXT)MsgBoxTitelTxt, (P_TEXT)AssureMessageTxt, 2, &MsgButtonID[0], TempBitMap);
break;
}
else if (id==MsgButtonID[0]) //退出系統對話框[是]
{
EmployeeIndex=0;
LookNameFlag=FALSE;
ClearDeadSaveFlash();
CloseMsgBox(TempBitMap,2,&MsgButtonID[0]);
CloseCommPort(UserVerifyTaskID);
break;
}
else if (id==MsgButtonID[1]) //退出系統對話框[否]
{
CloseMsgBox(TempBitMap,2,&MsgButtonID[0]);
break;
}
else if (id==MsgButtonOKID)
{
CloseMsgBox(TempBitMap,1,&MsgButtonOKID);
break;
}
}
default:
break;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -