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

📄 main.c

📁 这是嵌入式软件电话本的小软件
💻 C
📖 第 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 "..\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 + -