?? experiment.c
字號(hào):
//API 界面函數(shù)試驗(yàn)
//Experiment.c
#include"..\ucos-ii\includes.h"
#include "..\ucos-ii\add\osaddition.h"
#include"..\inc\osfile.h"
#include"..\inc\drv\rtc.h"
#include "..\inc\drv.h"
#include <string.h>
#include "..\ucos-ii\add\list.h"
#include "..\inc\drv\figure.h"
#include "..\inc\drv\display.h"
#include "..\inc\maro.h"
#include "..\template.h"
#include"..\inc\experiment.h"
//點(diǎn)的固定
//__________________________________________________________________
//___________________________________________________ HoriLine 1 | <--液晶屏
// | |
// pText_Start | |
// | VertLine |
// | |
// | |
// | |
//_______________________________________________ |___HoriLine 2 |
// |
//__________________________________________________________________|
//定義框架,為其他顯示內(nèi)容提供相對(duì)坐標(biāo)
structPOINT pHori1_Start={HORI1_STARTx,HORI1_STARTy}; //point
structPOINT pHori1_End={HORI1_ENDx,HORI1_ENDy};
structPOINT pHori2_Start={HORI2_STARTx,HORI2_STARTy};
structPOINT pHori2_End={HORI2_ENDx,HORI2_ENDy};
structPOINT pVert_Start={VERT_STARTx,VERT_STARTy};
structPOINT pVert_End={VERT_ENDx,VERT_ENDy};
structPOINT pText_Start={TEXT_STARTx, TEXT_STARTy};
structPOINT pSwit_Disp_Start={SWIT_DISP_STARTx, SWIT_DISP_STARTy};
//全局變量
PListCtrl pMainMenu;
PListCtrl2 pHelp;
structRECT Menu_Rect={0,215,220,240};
structRECT Main_Rect={0,HORI1_STARTy,320,HORI2_STARTy};
structRECT Help_Rect={(TEXT_STARTx+56),TEXT_STARTy,(VERT_STARTx-8), (HORI2_STARTy-LINE_WIDTH_DEFAULT)};
char cAd_Pic[12]={'1','2','8','_','3','2',' ',' ','B','M','P',0}; //產(chǎn)品宣傳圖片
char cAd_Pic1[12]={'1','2','8','_','3','3',' ',' ','B','M','P',0};
char cAd_Pic2[12]={'1','2','8','_','3','4',' ',' ','B','M','P',0};
//char cAd_Pic3[12]={'1','2','8','_','3','5',' ',' ','B','M','P',0};
char dj_pic[7][12]={{'1','2','8','_','0','1',' ',' ','B','M','P',0},{'1','2','8','_','0','2',' ',' ','B','M','P',0},
{'1','2','8','_','0','3',' ',' ','B','M','P',0},{'1','2','8','_','0','4',' ',' ','B','M','P',0},{'1','2','8','_','0','5',' ',' ','B','M','P',0},
{'1','2','8','_','0','6',' ',' ','B','M','P',0},{'1','2','8','_','0','7',' ',' ','B','M','P',0}};
u16 Main_Menu_0[]={0x5e2e,0x52a9,0}; // 幫助|
u16 Main_Menu_1[]={0x663e,0x793a,0}; // 顯示|
u16 *Main_Menu[]={Main_Menu_0,Main_Menu_1};
u16 Swit_Disp_Name_0[]={0x96e8,0x5237,0x5668,0};//雨刷器
u16 Swit_Disp_Name_1[]={0x0047,0x0053,0x004d,0};//GSM
u16 Swit_Disp_Name_2[]={0x6307,0x793a,0x706f,0};//指示燈
u16 Swit_Disp_Val_0[]={0x5f00,0}; //Open
u16 Swit_Disp_Val_1[]={0x5f00,0};
u16 Swit_Disp_Val_2[]={0x5f00,0};
u16 *Swit_Disp_Name[]={Swit_Disp_Name_0,Swit_Disp_Name_1,Swit_Disp_Name_2};
u16 *Swit_Disp_Val[]={Swit_Disp_Val_0,Swit_Disp_Val_1,Swit_Disp_Val_2};
u16 Simu_Disp_Name_0[]={0x7535,0x673a,0x8f6c,0x901f,0};//電機(jī)轉(zhuǎn)速
u16 Simu_Disp_Name_1[]={0x6c34,0x4f4d,0};//水位
u16 Simu_Disp_Name_2[]={0x673a,0x6cb9,0x538b,0x529b,0};//機(jī)油壓力
u16 Simu_Disp_Name_3[]={0x7cfb,0x7edf,0x538b,0x529b,0};//系統(tǒng)壓力
u16 Simu_Disp_Name_4[]={0x7a7a,0x6ee4,0x5668,0};//空濾器
u16 Simu_Disp_Val_0[]={0x0031,0x0032,0x0038,0x0030,0};// 1280
u16 Simu_Disp_Val_1[]={0x0038,0x0030,0}; // 80%
u16 Simu_Disp_Val_2[]={0x0033,0x0032,0}; // 32
u16 Simu_Disp_Val_3[]={0x0035,0x0035,0}; // 55
u16 Simu_Disp_Val_4[]={0x0037,0x0030,0}; // 70%
u16 Simu_Disp_Unit_0[]={0x0072,0x0070,0x006d,0}; //rpm
u16 Simu_Disp_Unit_1[]={0x0025,0}; // %
u16 Simu_Disp_Unit_2[]={0x004d,0x0050,0x0061,0}; //MPa
u16 Simu_Disp_Unit_3[]={0x004d,0x0050,0x0061,0}; //MPa
u16 Simu_Disp_Unit_4[]={0x0025,0}; // %
u16 *Simu_Disp_Name[]={Simu_Disp_Name_0,Simu_Disp_Name_1,Simu_Disp_Name_2,Simu_Disp_Name_3,Simu_Disp_Name_4};
u16 *Simu_Disp_Val[]={Simu_Disp_Val_0,Simu_Disp_Val_1,Simu_Disp_Val_2,Simu_Disp_Val_3,Simu_Disp_Val_4};
u16 *Simu_Disp_Unit[]={Simu_Disp_Unit_0,Simu_Disp_Unit_1,Simu_Disp_Unit_2,Simu_Disp_Unit_3,Simu_Disp_Unit_4};
//Help Help Help Help Help Help Help Help Help Help Help Help Help Help Help Help Help Help Help Help Help
u16 Help_Menu_0[]={0x6309,0x952e,0};//按鍵
u16 Help_Menu_1[]={0x663e,0x793a,0};//顯示
u16 *u16Help_Menu[]={Help_Menu_0,Help_Menu_1};
//字符串資源
u16 Help_Button[]={ 0x0020, 0x0030,0x0031,0x952e,0x003a,
0x754c,0x9762,0x7684,0x5207,0x6362,0x0020,0x0020,
0x0020, 0x0020,0x0020,0x0020,0x0020, 0x4e0a,
0x4e0b,0x952e,0x003a, 0x5e2e,0x52a9,0x754c,0x9762,0x4e0b,
0x002c, 0x9009,0x9879,0x7684,0x5207,0x6362,0x0020, 0};
//按鍵:0、1鍵,界面的切換,
//up,down 鍵,在某一界面下,選項(xiàng)的切換
u16 Help_Disp[]={0x0020, 0x663e,0x793a,0x754c,0x9762,0x4e0b,0x002c, 0x5c4f,
0x5e55,0x5de6,0x4fa7,0x4e3a,0x6a21,0x62df,0x91cf,0x002c,
0x53f3,0x4fa7,0x4e3a,0x5f00,0x5173,0x91cf,0};
//在顯示界面,左側(cè)顯示模擬量,右側(cè)顯示開關(guān)量
u16 *Help[]={Help_Button,Help_Disp};
void *Interface[]={(void*)Interface1,(void*)Interface2};
void InitInterface()
{
InitCtrl(); // 創(chuàng)建列表框控件
//InitMenu(); //創(chuàng)建菜單
//InitFrame(); // 畫邊框
InitPicture();
//顯示宣傳圖片和報(bào)警圖標(biāo)
//InitSwitDisp(); // 顯示開關(guān)量
//Interface1(); //顯示界面一
}
//初始化控件: 幫助列表框
void InitCtrl()
{
PDC pdc;
structRECT rect;
int i=0;
pdc=CreateDC();
SetRect(&rect,260,220,320,240); //矩形左上角作為起始點(diǎn)
FillRect2( pdc, &rect, GRAPH_MODE_NORMAL, COLOR_WHITE);
//PListCtrl pHelp;
pHelp=(PListCtrl2)CreateListCtrl(ID_HELP_CTRL, &rect, HELP_ITEM_NUM, FONTSIZE_MIDDLE, CTRL_STYLE_NOFRAME, NULL);
CreateListCtrl2Patch(pHelp, 2, TRUE);
//while(i<HELP_ITEM_NUM){
AddStringListCtrl((PListCtrl)pHelp, Help_Menu_0);
DrawListCtrl2(pHelp);
DestoryDC( pdc);
//i++;
//}
}
void InitMenu()
{
PDC pdc;
structRECT rect;
int i=0;
pdc=CreateDC();
CopyRect(&rect,&Menu_Rect);
//PListCtrl pMenu;
pMainMenu=CreateMenu(ID_MENU, &rect, 10,FONTSIZE_MIDDLE, CTRL_STYLE_NOFRAME, NULL);
SetWndCtrlFocus(NULL,ID_MENU);
while(i<=(MENU_SHOW_NUM-1)){
AddStringListCtrl(pMainMenu, Main_Menu[i]);
i++;
}
DrawMenu(pMainMenu);
DestoryDC( pdc);
}
void InitFrame()
{
PDC pdc;
structRECT rect;
pdc=CreateDC();
CopyRect(&rect, &Main_Rect);
DrawDBFrameRect2( pdc, &rect);//畫邊框
VerticalLine( pdc, pVert_Start.x,pVert_Start.y+LINE_WIDTH_DEFAULT,pVert_End.x,pVert_End.y-LINE_WIDTH_DEFAULT);
DestoryDC(pdc);
}
void InitPicture() //顯示宣傳圖片和報(bào)警圖標(biāo)
{
PDC pdc;
pdc=CreateDC();
FillRect( pdc, 0,0,320,20, GRAPH_MODE_NORMAL, COLOR_WHITE);
ShowBmp( pdc, cAd_Pic,45,0);
//SetDrawOrg( pdc, 0, 300, &oldx, &oldy);
//FillRect( pdc, 0,300,240,320, GRAPH_MODE_NORMAL, COLOR_WHITE);
ShowBmp(pdc,cAd_Pic2,0,75);
ShowBmp(pdc,cAd_Pic1,140,220);
DestoryDC(pdc);
}
void show()
{
PDC pdc;
pdc=CreateDC();
FillRect( pdc, 0,300,240,320, GRAPH_MODE_NORMAL, COLOR_WHITE);
ShowBmp(pdc,cAd_Pic1,50,220);
DestoryDC(pdc);
}
void InitSwitDisp() //屏幕右側(cè)開關(guān)量的顯示
{
PDC pdc;
structRECT rect;
pdc=CreateDC();
FillRect( pdc, pVert_Start.x+10, pHori1_Start.y+10, 320-10, pHori2_Start.y-10, GRAPH_MODE_NORMAL, COLOR_WHITE);
CmpSwitDisp( pdc, pSwit_Disp_Start, Swit_Disp_Name,Swit_Disp_Val, SWIT_NUM_DISP);
DestoryDC( pdc);
}
void Interface1()
{
PDC pdc;
structRECT rect;
pdc=CreateDC();
SetRect(&rect, LINE_WIDTH_DEFAULT, pHori1_Start.y+LINE_WIDTH_DEFAULT, pVert_Start.x, pHori2_Start.y-LINE_WIDTH_DEFAULT);
FillRect2( pdc, &rect, GRAPH_MODE_NORMAL, COLOR_WHITE);
DrawListCtrl2(pHelp); //(PListCtrl2)
FillRect2( pdc, &Help_Rect, GRAPH_MODE_NORMAL, COLOR_WHITE);
TextOutRect2( pdc, &Help_Rect, Help[0], TRUE,FONTSIZE_MIDDLE);
DestoryDC(pdc);
}
void Interface2()
{
PDC pdc;
structRECT rect;
pdc=CreateDC();
SetRect(&rect, LINE_WIDTH_DEFAULT, pHori1_Start.y+LINE_WIDTH_DEFAULT, pVert_Start.x, pHori2_Start.y-LINE_WIDTH_DEFAULT);
FillRect2( pdc, &rect, GRAPH_MODE_NORMAL, COLOR_WHITE);
CmpSimuDisp( pdc,pText_Start, Simu_Disp_Name,Simu_Disp_Val,Simu_Disp_Unit, SIMU_NUM);
DestoryDC( pdc);
}
//自行編制的消息響應(yīng)函數(shù)
U8 onKey(int nkey, int fnkey)
{
PDC pdc;
switch(nkey){
case 11://OK
ClearScreen();
pdc=CreateDC();//創(chuàng)建繪圖設(shè)備上下文
DrawRectFrame(pdc, 20, 5, 40, 25);
ShowBmp(pdc, dj_pic[0],65 , 0);//顯示圖片
DrawRectFrame(pdc, 20, 37, 40, 57);
ShowBmp(pdc, dj_pic[1],65 , 32);//顯示圖片
DrawRectFrame(pdc, 20, 69, 40, 89);
ShowBmp(pdc, dj_pic[2],65 , 64);//顯示圖片
DrawRectFrame(pdc, 20, 101, 40, 121);
ShowBmp(pdc, dj_pic[3],65 , 96);//顯示圖片
DrawRectFrame(pdc, 20, 133, 40, 153);
ShowBmp(pdc, dj_pic[4],65 , 128);//顯示圖片
DrawRectFrame(pdc, 20, 165, 40, 185);
ShowBmp(pdc, dj_pic[5],65 , 160);//顯示圖片
ShowBmp(pdc, dj_pic[6],100 , 200);//顯示圖片
//CreateText();
//ReDrawOSCtrl();//重畫控件
DestoryDC(pdc);//刪除繪圖設(shè)備上下文
return TRUE;
}
return FALSE;
}
/*void onKey(int nkey, int fnkey )
//{
//switch(nkey){
//case 0:
MenuSelMove(pMainMenu, -1, TRUE); //實(shí)現(xiàn)菜單左右移動(dòng)
break;
case 1:
MenuSelMove(pMainMenu, 1, TRUE);
break;
case 3:
ListCtrl2SelMove(pHelp, -1, TRUE);
break;
case 7:
ListCtrl2SelMove(pHelp, 1, TRUE);
break;
case 11:
ClearScreen();
pdc=CreateDC();//創(chuàng)建繪圖設(shè)備上下文
FillRect( pdc, 0,300,240,320, GRAPH_MODE_NORMAL, COLOR_WHITE);
ShowBmp(pdc, cAd_Pict, 140, 20);//顯示圖片
//ReDrawOSCtrl();//重畫控件
DestoryDC(pdc);//刪除繪圖設(shè)備上下文
return TRUE;
break;
default:
break;
}
}*/
void onListCtrl2SelChange(u32 CtrlID, int CurrentSel) //消息響應(yīng)函數(shù): 響應(yīng)列表框被改變
{
PDC pdc;
pdc=CreateDC();
switch(CtrlID){
case ID_HELP_CTRL:
if(pMainMenu->CurrentSel==INTERFACE_HELP){
FillRect2( pdc, &Help_Rect, GRAPH_MODE_NORMAL, COLOR_WHITE);
TextOutRect2( pdc, &Help_Rect,Help[CurrentSel], TRUE, FONTSIZE_MIDDLE);
}
break;
}
DestoryDC(pdc);
}
//流程:
//按鍵消息調(diào)用onKey(),再由onKey()調(diào)用MenuSelMove(),在MenuSelMove()程序的結(jié)尾處 創(chuàng)建消息OSM_MENU_SELCHANGE,
// 主函數(shù)接到OSM_MENU_SELCHANGE后,調(diào)用消息響應(yīng)函數(shù)onMenuSelChange()
void onMenuSelChange(u32 CtrlID, int CurrentSel)
{
PDC pdc;
pdc=CreateDC();
switch(CtrlID){
case ID_MENU:
((void (*)(void)) (Interface[CurrentSel]))();
break;
}
DestoryDC(pdc);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -