📄 main.c
字号:
#include"..\ucos-ii\includes.h" /* uC/OS interface */
#include "..\ucos-ii\add\osaddition.h"
#include "..\inc\drv.h"
#include "..\inc\drv\tchscr.h"
#include <string.h>
#include<math.h>
#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting
//const U32 Line_Button_ID=100;
//const U32 Circle_Button_ID=101;
//const U32 Curve_Button_ID=102;
//const U32 Clear_Button_ID=103;
//const U32 Draw_Wnd_ID=104;
#define Line_Button_ID 100
#define Circle_Button_ID 101
#define Curve_Button_ID 102
#define Clear_Button_ID 103
#define Draw_Wnd_ID 104
///******************任务定义***************///
OS_STK Main_Stack[STACKSIZE*8]={0, }; //Main_Test_Task堆栈
void Main_Task(void *Id); //Main_Test_Task
#define Main_Task_Prio 12
/**************已经定义的OS任务*************
tcp监控任务 11
以太网物理层监控任务 8
触摸屏任务 9
键盘任务 10
lcd刷新任务 59
系统任务 1
*****************************************************/
///*****************事件定义*****************///
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 initOSGUI() //初始化操作系统的图形界面
{
initOSMessage();
initOSList();
initOSDC();
initOSCtrl();
initOSFile();
}
/////////////////////////////////////////////////////
// Main function. //
////////////////////////////////////////////////////
int main(void)
{
ARMTargetInit(); //开发板初始化
OSInit(); //操作系统初始化
uHALr_ResetMMU();//复位MMU
LCD_Init(); //初始化LCD模块
LCD_printf("LCD initialization is OK\n");//向液晶屏输出数据
LCD_printf("320 x 240 Text Mode\n");
initOSGUI();//初始化图形界面
LoadFont();//调Unicode字库
LoadConfigSys();//使用config.sys文件配置系统设置
LCD_printf("Create task on uCOS-II...\n");
OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_Stack[STACKSIZE*8-1], Main_Task_Prio);// 创建系统任务
OSAddTask_Init();//创建系统附加任务
LCD_printf("Starting uCOS-II...\n");
LCD_printf("Entering graph mode...\n");
LCD_ChangeMode(DspGraMode);//变LCD显示模式为文本模式
InitRtc();//初始化系统时钟
Nand_Rw_Sem=OSSemCreate(1); //创建Nand-Flash读写控制权旗语,初值为1满足互斥条件//
OSStart();//操作系统任务调度开始
//不会执行到这里
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Main_Task(void *Id) //Main_Test_Task
{
POSMSG pMsg;
structPOINT Touch_Position,*pTouch_Position;
ButtonCtrl Line_Button,Circle_Button,Curve_Button,Clear_Button;
PButtonCtrl pLine_Button,pCircle_Button,pCurve_Button,pClearButton;
Wnd Draw_Wnd;
PWnd pDraw_Wnd;
structRECT Line_Button_RECT,Circle_Button_RECT,Curve_Button_RECT,Clear_Button_RECT,Draw_Wnd_RECT;
structRECT *pLine_Button_RECT,*pCircle_Button_RECT,*pCurve_Button_RECT,*pClear_Button_RECT,*pDraw_Wnd_RECT;
char Line_Button_Caption_8[]="Line";
char Circle_Button_Caption_8[]="Circle";
char Curve_Button_Caption_8[]="Curve";
char Clear_Button_Caption_8[]="Clear";
char Draw_Wnd_Caption_8[]="Draw Window";
U16 Line_Button_Caption_16[20];
U16 Circle_Button_Caption_16[20];
U16 Curve_Button_Caption_16[20];
U16 Clear_Button_Caption_16[20];
U16 Draw_Wnd_Caption_16[20];
int Draw_State;// 1,划线;2,画圆;3,画曲线
int Line_State,Circle_State;// 1,起点;2,终点
int r;//圆半径
int x0,y0;//圆心坐标
int oldrang_x,oldrang_y;
PDC pdc;
pTouch_Position=&Touch_Position;
pLine_Button=&Line_Button;
pCircle_Button=&Circle_Button;
pCurve_Button=&Curve_Button;
pClearButton=&Clear_Button;
pDraw_Wnd=&Draw_Wnd;
pLine_Button_RECT=&Line_Button_RECT;
pCircle_Button_RECT=&Circle_Button_RECT;
pCurve_Button_RECT=&Curve_Button_RECT;
pClear_Button_RECT=&Clear_Button_RECT;
pDraw_Wnd_RECT=&Draw_Wnd_RECT;
strChar2Unicode(Line_Button_Caption_16, Line_Button_Caption_8);
strChar2Unicode(Circle_Button_Caption_16, Circle_Button_Caption_8);
strChar2Unicode(Curve_Button_Caption_16, Curve_Button_Caption_8);
strChar2Unicode(Clear_Button_Caption_16, Clear_Button_Caption_8);
strChar2Unicode(Draw_Wnd_Caption_16, Draw_Wnd_Caption_8);
Line_Button_RECT.bottom=70;
Line_Button_RECT.left=10;
Line_Button_RECT.right=60;
Line_Button_RECT.top=30;
Circle_Button_RECT.bottom=120;
Circle_Button_RECT.left=10;
Circle_Button_RECT.right=60;
Circle_Button_RECT.top=80;
Curve_Button_RECT.bottom=170;
Curve_Button_RECT.left=10;
Curve_Button_RECT.right=60;
Curve_Button_RECT.top=130;
Clear_Button_RECT.bottom=220;
Clear_Button_RECT.left=10;
Clear_Button_RECT.right=60;
Clear_Button_RECT.top=180;
Draw_Wnd_RECT.bottom=230;
Draw_Wnd_RECT.left=65;
Draw_Wnd_RECT.right=310;
Draw_Wnd_RECT.top=10;
pLine_Button=CreateButton(Line_Button_ID, pLine_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, Line_Button_Caption_16, NULL);
pCircle_Button=CreateButton(Circle_Button_ID, pCircle_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, Circle_Button_Caption_16, NULL);
pCurve_Button=CreateButton(Curve_Button_ID, pCurve_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, Curve_Button_Caption_16, NULL);
pClearButton=CreateButton(Clear_Button_ID, pClear_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, Clear_Button_Caption_16, NULL);
pDraw_Wnd=CreateWindow(Draw_Wnd_ID, pDraw_Wnd_RECT, FONTSIZE_SMALL,WND_STYLE_MODELESS, Draw_Wnd_Caption_16, NULL);
ClearScreen();
DrawButton(pLine_Button);
DrawButton(pCircle_Button);
DrawButton(pCurve_Button);
DrawButton(pClearButton);
DrawWindow(pDraw_Wnd);
pdc=CreateDC();
pdc->DrawRect=Draw_Wnd_RECT;
Draw_State=1;
Line_State=0;
Circle_State=0;
for(;;)
{
pMsg=WaitMessage(0);
switch(pMsg->Message)
{
case OSM_TOUCH_SCREEN:
Touch_Position.x=pMsg->WParam&0xffff;
Touch_Position.y=pMsg->WParam>>16;
if(IsInRect2(pLine_Button_RECT, pTouch_Position))
{
Draw_State=1;
Line_State=0;
}
else if(IsInRect2(pCircle_Button_RECT, pTouch_Position))
{
Draw_State=2;
Circle_State=0;
}
else if(IsInRect2(pCurve_Button_RECT, pTouch_Position))
{
Draw_State=3;
}
else if(IsInRect2(pClear_Button_RECT, pTouch_Position))
{
DrawWindow(pDraw_Wnd);
}
else if(IsInRect2(pDraw_Wnd_RECT, pTouch_Position))
{
switch(Draw_State)
{
case 1:
if(pMsg->LParam==TCHSCR_ACTION_CLICK)
{
if(Line_State==0)
{
Line_State=1;
MoveTo(pdc, Touch_Position.x, Touch_Position.y);
}
else
{
Line_State=0;
LineTo( pdc, Touch_Position.x,Touch_Position.y);
}
}
break;
case 2:
if(pMsg->LParam==TCHSCR_ACTION_CLICK)
{
if(Circle_State==0)
{
Circle_State=1;
x0=Touch_Position.x;
y0=Touch_Position.y;
}
else
{
Circle_State=0;
r=sqrt((x0-Touch_Position.x)*(x0-Touch_Position.x)+(y0-Touch_Position.y)*(y0-Touch_Position.y));
Circle(pdc,x0,y0,r);
}
}
break;
case 3:
switch(pMsg->LParam)
{
case TCHSCR_ACTION_DOWN:
MoveTo(pdc, Touch_Position.x, Touch_Position.y);
break;
case TCHSCR_ACTION_MOVE:
LineTo(pdc, Touch_Position.x, Touch_Position.y);
break;
}
break;
}
}
}
DeleteMessage(pMsg);
OSTimeDly(100);
}
DestoryDC(pdc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -