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

📄 main.c

📁 学习文本框控件的使用
💻 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 <string.h>///******************任务定义***************///OS_STK Main_Stack[STACKSIZE*8]={0, };   //Main_Test_Task堆栈void Main_Task(void *Id);             //Main_Test_Task#define Main_Task_Prio     12OS_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_Taskvoid 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//////////////////////////////////////////////////////////////////////////////////////////////////////////////////PTextCtrl pTextCtrl;#define ID_MainTextCtrl 101int sysnumber;char sysfilename [ ]={'S','Y','S',' ',' ',' ',' ',' ','D','A','T'};void LoadSysNumber(){	FILE *pfile;		pfile=OpenOSFile(sysfilename,FILEMODE_READ);	if(pfile==NULL){		sysnumber=0;		return;	}	ReadOSFile(pfile,(U8*)&sysnumber,sizeof(int));	CloseOSFile(pfile);}void SaveSysNumber(){	FILE *pfile;		pfile=OpenOSFile(sysfilename,FILEMODE_WRITE);	if(pfile==NULL){		return;	}	WriteOSFile(pfile,(U8*)&sysnumber,sizeof(int));	CloseOSFile(pfile);}void CreateText(){	structRECT rect;	int i=0;	U16 str[20];	LoadSysNumber();	SetRect(&rect, 100,30,160,50);	//设置PID参数轴1P的文本框	pTextCtrl=CreateTextCtrl(ID_MainTextCtrl, &rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME, NULL, NULL);	Int2Unicode(sysnumber,str);	SetWndCtrlFocus(NULL, ID_MainTextCtrl);		SetTextCtrlText(pTextCtrl, str,TRUE);}U8 onKey(int nkey, int fnkey);void Main_Task(void *Id)             //Main_Test_Task{	POSMSG pMsg=0;	ClearScreen();	CreateText(); //创建文本框		//消息循环	for(;;){		POS_Ctrl pCtrl;		pMsg=WaitMessage(0);		if(pMsg->pOSCtrl){			if(pMsg->pOSCtrl->CtrlMsgCallBk)				(*pMsg->pOSCtrl->CtrlMsgCallBk)(pMsg);		}		else{			switch(pMsg->Message){			case OSM_KEY:				pCtrl=GetCtrlfromID(NULL, GetWndCtrlFocus(NULL));				if(pCtrl->CtrlType==CTRLTYPE_WINDOW){					if((((PWnd)pCtrl)->style&WND_STYLE_MODE)==WND_STYLE_MODE){						//焦点是有模式窗口,消息直接传递过去						OSOnSysMessage(pMsg);						break;					}				}				if(onKey(pMsg->WParam,pMsg->LParam) )					break;			default:				OSOnSysMessage(pMsg);				break;			}		}		DeleteMessage(pMsg);	}}U8 onKey(int nkey, int fnkey){	PDC pdc;	U16 str[20];	static U8 input=FALSE;	switch(nkey){	case 11://OK		if(!input){			pTextCtrl->text[0]=0;  //清空文本框			SetTextCtrlEdit(pTextCtrl, TRUE);			DrawTextCtrl(pTextCtrl);			input=TRUE;		}		else{			sysnumber=Unicode2Int(pTextCtrl->text);			SetTextCtrlEdit(pTextCtrl, FALSE);			DrawTextCtrl(pTextCtrl);			SaveSysNumber();			input=FALSE;		}		return TRUE;	case 15://Cancel		SetTextCtrlEdit(pTextCtrl, FALSE);		Int2Unicode(sysnumber,str);		SetTextCtrlText(pTextCtrl, str,TRUE);		input=FALSE;				return TRUE;	}	return FALSE;}

⌨️ 快捷键说明

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