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

📄 main.c.bak

📁 这是嵌入式软件电话本的小软件
💻 BAK
📖 第 1 页 / 共 2 页
字号:
#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 <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);
char TextFilename[]={'P','E','O','P','L','E',' ',' ','D','A','T',0};
struct{
       char name[20];
       char relation[20];
       char mobil[20];
       char home[20];
       char office[20];
       }people[500];
int i;
U16 Name[20];
U16 Relation[20];
U16 Mobil[20];
U16 Home[20];
U16 Office[20];
OS_STK Rtc_Disp_Stack[STACKSIZE]={0, };   //Rtc_Disp_Task堆栈
void Rtc_Disp_Task(void *Id);             //Rtc_Disp_Task
#define Rtc_Disp_Task_Prio      14
OS_EVENT *Rtc_Updata_Sem;//时钟更新控制权


U32 mainstatus;

PListCtrl pMainListCtrl;
PListCtrl pMainListCtrl1;

PTextCtrl ptimeTextCtrl;
PTextCtrl pTextCtrl1;
PTextCtrl pTextCtrl2;
PTextCtrl pTextCtrl3;
PTextCtrl pTextCtrl4;
PTextCtrl pTextCtrl5;
extern U16* MainFn[];
extern U16* MainSer[];
extern U16* JiShi[];
extern U16* Ri[];
U16 ch1[]={0x59D3,0x540D,0x00};
U16 ch2[]={0x5173,0x7CFB,0x00};
U16 ch3[]={0x624B,0x673A,0x00};
U16 ch4[]={0x5BB6,0x5EAD,0x7535,0x8BDD,0x00};
U16 ch5[]={0x529E,0x516C,0x7535,0x8BDD,0x00};
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;
       
         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*)&people,sizeof(people));
         
         }
	ClearScreen();

	Rtc_Updata_Sem=OSSemCreate(1);
	OSTaskCreate(Rtc_Disp_Task,  (void *)0,  (OS_STK *)&Rtc_Disp_Stack[STACKSIZE-1],  Rtc_Disp_Task_Prio);	//5

	mainstatus=MAIN_MENU;

	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,220,54,239);	//创建时间显示文本框
	ptimeTextCtrl=CreateTextCtrl(ID_MainTimeStatus, &rect, FONTSIZE_SMALL, CTRL_STYLE_3DUPFRAME,NULL,NULL);

	ReDrawOSCtrl();
	CloseOSFile(pfile);
	//消息循环
	for(;;){
		POS_Ctrl pCtrl;
		pMsg=WaitMessage(0);

		if(pMsg->pOSCtrl){
			if(pMsg->pOSCtrl->CtrlMsgCallBk)
				(*pMsg->pOSCtrl->CtrlMsgCallBk)(pMsg);
		}
		else{
			switch(pMsg->Message){
			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 SET_DELETE:
		SetTimeUp();
		return TRUE;
	case SET_SERALL:
	        ListCtrlSelMove(pMainListCtrl,-1,TRUE);
	        break;
	}
	return FALSE;
}

U8 OnKeyDown()
{
	switch(mainstatus){
	case SET_DELETE:
		SetTimeDown();
		return TRUE;
	case SET_SERALL:
	       ListCtrlSelMove(pMainListCtrl,1,TRUE) ;
	       break;
	}
	return FALSE;
}
void Menu_Tele();
void Menu_JiShi();
void Menu_RiCheng();
void OnSetTime();
void ShowAll();
void ShowDetail();
void CreateSetTelephoneArea();
void DestorySetTelephoneArea();
void *MainFunction[]={(void*)Menu_Tele,(void*)Menu_JiShi,(void*)Menu_RiCheng};
void *SetFunction[]={(void*)ShowAll,(void*)ShowAll,(void*)CreateSetTelephoneArea,(void*)ShowAll,};
void *SetFunction1[]={(void*)ShowDetail,(void*)ShowDetail};
void OnSetTime()
{    
	SetTimeSetFocus();
	CreateSetTimeArea(TRUE);
	mainstatus=MAIN_JISHI;
}
void Menu_Tele()
{
	ListCtrlReMoveAll(pMainListCtrl);
       ReLoadListCtrl(pMainListCtrl,&MainSer[0],SET_FUNCTION_NUM);
	mainstatus=MAIN_TELE;
       ReDrawOSCtrl();
}
void Menu_JiShi()
{     ListCtrlReMoveAll(pMainListCtrl);
       ReLoadListCtrl(pMainListCtrl,&JiShi[0],SET_FUNCTION_NUM1);
	mainstatus=MAIN_JISHI;
       ReDrawOSCtrl();
}
void Menu_RiCheng()
{     ListCtrlReMoveAll(pMainListCtrl);
       ReLoadListCtrl(pMainListCtrl,&Ri[0],SET_FUNCTION_NUM2);
	mainstatus=MAIN_RICHENG;
       ReDrawOSCtrl();
	
}


void ShowAll()
{     int i;
       char name[20];
       char name1[20];
       char relation[20];

⌨️ 快捷键说明

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