📄 main.c
字号:
#include"..\ucos-ii\includes.h" /* uC/OS interface */
#include "..\inc\drv.h"
#include "..\ucos-ii\add\osaddition.h"
#include "..\inc\OSFile.h"
#include "..\inc\drv\Ustring.h"
#include "..\inc\resource.h"
#include "..\inc\SetTimeArea.h"
#include "..\inc\jishi.h"
#include "..\inc\richeng.h"
#include <string.h>
///******************任务定义***************///
OS_STK Main_Stack[STACKSIZE*8]={0, }; //Main_Test_Task堆栈
void Main_Task(void *Id); //Main_Test_Task
#define Main_Task_Prio 12
OS_STK Led_Flash_Stack[STACKSIZE]= {0, }; //LED闪烁任务堆栈
void Led_Flash_Task(void *Id); //LED闪烁任务
#define Led_Flash_Prio 60
/**************已经定义的OS任务*************
#define Touch_Screen_Task_Prio 9
#define Main_Task_Prio 12
#define Key_Scan_Task_Prio 58
#define Lcd_Fresh_prio 59
#define Led_Flash_Prio 60
***************************************/////////
///*****************事件定义*****************///
OS_EVENT *Nand_Rw_Sem; //Nand_Flash读写控制权旗语
//and you can use it as folloeing:
// Nand_Rw_Sem=OSSemCreate(1); //创建Nand-Flash读写控制权旗语,初值为1满足互斥条件//
// OSSemPend(Nand_Rw_Sem,0,&err);
// OSSemPost(Nand_Rw_Sem);
OS_EVENT *Uart_Rw_Sem; //Uart读写控制权旗语
//and you can use it as folloeing:
// Uart_Rw_Sem=OSSemCreate(1); //创建Uart读写控制权旗语,初值为1满足互斥条件//
// OSSemPend(Uart_Rw_Sem,0,&err);
// OSSemPost(Uart_Rw_Sem);
//////////////////////////////////////////////////////////
void Led_Flash_Task(void *Id)//指示RTOS处于正常工作中
{
unsigned char led_state;
Uart_Printf(0,"\n10");
for (;;)
{
Led_Display(led_state);
led_state=~led_state;
OSTimeDly(250);
}
}//Led_Flash_Task
void initOSGUI() //初始化操作系统的图形界面
{
initOSMessage();
initOSList();
initOSDC();
initOSCtrl();
initOSFile();
}
/////////////////////////////////////////////////////
// Main function. //
////////////////////////////////////////////////////
int Main(int argc, char **argv)
{
ARMTargetInit(); // do target (uHAL based ARM system) initialisation //
OSInit(); // needed by uC/OS-II //
uHALr_ResetMMU();
LCD_Init(); //初始化LCD模块
LCD_printf("LCD initialization is OK\n");
LCD_printf("320 x 240 Text Mode\n");
LoadFont();
LoadConfigSys();
// create the tasks in uC/OS and assign increasing //
// priorities to them so that Task3 at the end of //
// the pipeline has the highest priority. //
LCD_printf("Create task on uCOS-II...\n");
OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_Stack[STACKSIZE*8-1], Main_Task_Prio);// 1
OSTaskCreate(Led_Flash_Task, (void *)0, (OS_STK *)&Led_Flash_Stack[STACKSIZE-1], Led_Flash_Prio );// 10
OSAddTask_Init();
LCD_printf("Starting uCOS-II...\n");
LCD_printf("Entering graph mode...\n");
LCD_ChangeMode(DspGraMode);
initOSGUI();
InitRtc();
Nand_Rw_Sem=OSSemCreate(1); //创建Nand-Flash读写控制权旗语,初值为1满足互斥条件//
ARMTargetStart(); //Start the (uHAL based ARM system) system running //
OSStart(); // start the game //
// never reached //
return 0;
}//main
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
U8 onKey(int nkey, int fnkey);
U8 OnOk();
U8 OnCancel();
U8 OnKeyUp();
U8 OnKeyDown();
char TextFilename[]={'P','E','O','P','L','E',' ',' ','D','A','T',0};
char TextFile1name[]={'J','I','S','H','I',' ',' ',' ','D','A','T',0};
char TextFile2name[]={'R','I','C','H','E','N','G',' ','D','A','T',0};
int i;
U32 mainstatus;
PListCtrl pMainListCtrl;
PListCtrl pMainListCtrl1;
PButtonCtrl pButtonCtrl1;
PButtonCtrl pButtonCtrl2;
PButtonCtrl pButtonCtrl3;
PButtonCtrl pButtonCtrl4;
PTextCtrl pzhutiTextCtrl;
PTextCtrl pneirongTextCtrl;
PTextCtrl pneirong1TextCtrl;
PTextCtrl pTextCtrl1;
PTextCtrl pTextCtrl2;
PTextCtrl pTextCtrl3;
PTextCtrl pTextCtrl4;
PTextCtrl pTextCtrl5;
PTextCtrl pTextCtrl6;
PTextCtrl pTextCtrl7;
PTextCtrl pTextCtrl8;
PTextCtrl pTextCtrl9;
PTextCtrl pTextCtrl0;
extern U16* MainFn[];
extern U16* MainSer[];
extern U16* JiShi[];
extern U16* Ri[];
extern U16* D[];
extern U16* Mo[];
U16 ch6[]={0x59D3,0x540D,0x00};
U16 ch7[]={0x5173,0x7CFB,0x00};
U16 ch8[]={0x624B,0x673A,0x00};
U16 ch9[]={0x5BB6,0x5EAD,0x7535,0x8BDD,0x00};
U16 ch0[]={0x529E,0x516C,0x7535,0x8BDD,0x00};
U16 caption[]={0x786E,0x5B9A,0x00};
U16 caption1[]={0x53D6,0x6D88,0x00};
U16 caption2[]={0x5411,0x4E0A,0x00};
U16 caption3[]={0x5411,0x4E0B,0x00};
U16 biaoti[]={0x0050,0x0061,0x006C,0x006D,0x0074,0x006F,0x0070,0x00};
struct people{
char name[20];
char relation[20];
char mobil[20];
char home[20];
char office[20];
} ;
struct people p[500];
struct jishi{
char zhu[20];
char nei[2000];
};
struct jishi j[31];
struct richeng {
char doc[100];
};
struct richeng r[366];
void onListselChange(U32 ctrlID, int ListSel)
{
switch(ctrlID){
case ID_MainListBox:
if(mainstatus!=MAIN_TELE)
break;
}
}
void Main_Task(void *Id) //Main_Test_Task
{
POSMSG pMsg=0;
structRECT rect;
FILE *pfile;
PDC pdc;
ClearScreen();
pfile=OpenOSFile(TextFilename,FILEMODE_READ);
if(pfile==NULL){
LCD_printf("Can't Open file!\n");
for(;;)
OSTimeDly(1000);
}
for(i=0;i<500;i++){
ReadOSFile(pfile,(U8*)&p[i],sizeof(p));
}
CloseOSFile(pfile);
ClearScreen();
pdc=CreateDC();
mainstatus=MAIN_MENU;
TextOut(pdc,150,100,biaoti,TRUE,FONTSIZE_BIG);
SetRect(&rect, 0,18,120,209); //创建控制菜单
pMainListCtrl=CreateListCtrl(ID_MainListBox, &rect,500,FONTSIZE_MIDDLE,CTRL_STYLE_DBFRAME,NULL);
ReLoadListCtrl(pMainListCtrl,&MainFn[0],MAIN_FUNCTION_NUM);
SetWndCtrlFocus(NULL, ID_MainListBox);
SetRect(&rect,0,215,40,235);//创建确定按钮
pButtonCtrl1=CreateButton(ID_Button1,&rect,FONTSIZE_MIDDLE,CTRL_STYLE_DBFRAME,caption,NULL);
SetRect(&rect,60,215,100,235);//创建取消按钮
pButtonCtrl2=CreateButton(ID_Button2,&rect,FONTSIZE_MIDDLE,CTRL_STYLE_DBFRAME,caption1,NULL);
SetRect(&rect,120,215,160,235);//创建向上按钮
pButtonCtrl3=CreateButton(ID_Button3,&rect,FONTSIZE_MIDDLE,CTRL_STYLE_DBFRAME,caption2,NULL);
SetRect(&rect,180,215,220,235);//创建向下按钮
pButtonCtrl4=CreateButton(ID_Button4,&rect,FONTSIZE_MIDDLE,CTRL_STYLE_DBFRAME,caption3,NULL);
ReDrawOSCtrl();
DestoryDC(pdc);
//消息循环
for(;;){
POS_Ctrl pCtrl;
pMsg=WaitMessage(0);
if(pMsg->pOSCtrl){
if(pMsg->pOSCtrl->CtrlMsgCallBk)
(*pMsg->pOSCtrl->CtrlMsgCallBk)(pMsg);
}
else{
switch(pMsg->Message){
case OSM_BUTTON_CLICK:
switch(pMsg->WParam)
{
case ID_Button1:
OnOk();
break;
case ID_Button2:
OnCancel();
break;
case ID_Button3:
OnKeyUp();
break;
case ID_Button4:
OnKeyDown();
break;
}
break;
case OSM_LISTCTRL_SELCHANGE:
onListselChange(pMsg->WParam,pMsg->LParam);
break;
case OSM_KEY:
if(onKey(pMsg->WParam,pMsg->LParam) )
break;
default:
OSOnSysMessage(pMsg);
break;
}
}
DeleteMessage(pMsg);
}
}
U8 OnKeyUp()
{
switch(mainstatus){
case SHOW_DETAIL1:
SetTelephoneUp();
return TRUE;
case SHOW_DETAIL2:
SetjishiUp();
return TRUE;
}
return FALSE;
}
U8 OnKeyDown()
{
switch(mainstatus){
case SHOW_DETAIL1:
SetTelephoneDown();
return TRUE;
case SHOW_DETAIL2:
SetjishiDown();
return TRUE;
}
return FALSE;
}
void Menu_Tele();
void Menu_JiShi();
void Menu_RiCheng();
void OnSetTime();
void ShowAll();
void Showall();
void ShowDetail();
void ShowDate1();
void ShowMonth();
void Showall1();
void OnSetjishi();
void OnSetricheng();
void *MainFunction[]={(void*)Menu_Tele,(void*)Menu_JiShi,(void*)Menu_RiCheng};
void *SetFunction[]={(void*)ShowAll,(void*)Showall,(void*)Showall,(void*)Showall,};
void *SetFunction1[]={(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,
(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail,(void*)ShowDetail};
void *SetFunction2[]={(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,
(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime,(void*)OnSetTime};
void *SetFunction3[]={(void*)ShowMonth,(void*)ShowMonth,(void*)ShowMonth};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -