📄 gui.c
字号:
buttonnumber = 2;
phone_index = 0; //清空phone buffer
drawtext(155,200,"演示窗口",1,3,rgb(255,255,0));
mbuttonlist[0].id = CALL_BUTTON;
mbuttonlist[0].x0 = 60;
mbuttonlist[0].y0 = 95;
mbuttonlist[0].wide =80;
mbuttonlist[0].high = 30;
mbuttonlist[0].text_x = 25;
mbuttonlist[0].text_y = 20;
mbuttonlist[0].textcolor = rgb(255,255,0);
mbuttonlist[0].bgcolor = rgb(255,0,255);
strcopy(mbuttonlist[0].text,"call");
drawbutton(&mbuttonlist[0]);
mbuttonlist[1].id = MESSAGE_BUTTON;
mbuttonlist[1].x0 = 180;
mbuttonlist[1].y0 = 95;
mbuttonlist[1].wide =80;
mbuttonlist[1].high = 30;
mbuttonlist[1].text_x = 8;
mbuttonlist[1].text_y = 20;
mbuttonlist[1].textcolor = rgb(255,255,0);
mbuttonlist[1].bgcolor = rgb(255,0,255);
strcopy(mbuttonlist[1].text,"message");
drawbutton(&mbuttonlist[1]);
//打开键盘
keyinit();
KB_Enable(TRUE); //中断使能函数
}
void CALL_win(void)
{
int i;
GUI_cls();
drawexitbutton();
drawascii168(120,200,"CALL",rgb(255,255,0));
drawtext(155,200,"演示窗口",1,3,rgb(255,255,0));
drawtext(40,150,"按键盘输入电话号码:",1,0,rgb(255,255,0));
mbuttonlist[0].id = CALL_BUTTON;
mbuttonlist[0].x0 = 60;
mbuttonlist[0].y0 = 65;
mbuttonlist[0].wide =80;
mbuttonlist[0].high = 30;
mbuttonlist[0].text_x = 25;
mbuttonlist[0].text_y = 20;
mbuttonlist[0].textcolor = rgb(255,255,0);
mbuttonlist[0].bgcolor = rgb(255,0,255);
strcopy(mbuttonlist[0].text,"Call");
drawbutton(&mbuttonlist[0]);
mbuttonlist[1].id = ESC_BUTTON;
mbuttonlist[1].x0 = 180;
mbuttonlist[1].y0 = 65;
mbuttonlist[1].wide =80;
mbuttonlist[1].high = 30;
mbuttonlist[1].text_x = 30;
mbuttonlist[1].text_y = 20;
mbuttonlist[1].textcolor = rgb(255,255,0);
mbuttonlist[1].bgcolor = rgb(255,0,255);
strcopy(mbuttonlist[1].text,"Esc");
drawbutton(&mbuttonlist[1]);
buttonnumber = 2;
}
void Message_win(void)
{
GUI_cls();
drawexitbutton();
drawascii168(100,197,"MESSAGE",rgb(255,255,0));
buttonnumber = 1;
drawtext(155,200,"演示窗口",1,3,rgb(255,255,0));
drawtext(40,150,"按键盘输入电话号码:",1,0,rgb(255,255,0));
drawtext(40,130,"短消息内容为",1,0,rgb(255,255,0));
drawascii168(137,127,"HELLO",rgb(255,255,0));
mbuttonlist[0].id = SEND_BUTTON;
mbuttonlist[0].x0 = 120;
mbuttonlist[0].y0 = 60;
mbuttonlist[0].wide =80;
mbuttonlist[0].high = 30;
mbuttonlist[0].text_x = 25;
mbuttonlist[0].text_y = 20;
mbuttonlist[0].textcolor = rgb(255,255,0);
mbuttonlist[0].bgcolor = rgb(255,0,255);
strcopy(mbuttonlist[0].text,"Send");
drawbutton(&mbuttonlist[0]);
}
void drawexitbutton(void)
{
fillrectangle (300,220,317,237, rgb(255,0,255));
line(300,220,317,237,rgb(255,255,0));
line(300,220,300,237,rgb(255,255,0));
line(300,220,317,220,rgb(255,255,0));
line(317,220,317,237,rgb(255,255,0));
line(300,237,317,220,rgb(255,255,0));
line(300,237,317,237,rgb(255,255,0));
}
void Config_time_win(void)
{
char timestr[20];
GUI_cls();
drawexitbutton();
KB_Enable(TRUE);
buttonnumber = 0;
gTimeIndex = 0;
drawtext(100,200,"时间设置窗口",1,3,rgb(255,255,0));
drawtext(70,140,"时间:",1,0,rgb(255,255,0));
sprintf(timestr,"%d%d:%d%d",0,0,0,0);
drawascii168(120,138,timestr,rgb(255,255,0));
line(120,122,128,122,rgb(255,0,0));
strcpy(timestr,"星期日");
drawtext(180,138,timestr,1,0,rgb(255,255,0));
drawtext(70,70,"按数字键盘输入数据!",1,3,rgb(255,255,0));
}
void changewindows(int x,int y)
{
int i;
switch(win_ID)
{
case MAIN_WIN: //屏保
win_ID = MAIN_MENU;
flushenable = 1;
mainmenu();; //需要刷新窗口
break;
case MAIN_MENU:
switch(findbuttonid(x,y))
{
case GPRS_BUTTON:
win_ID = GPRS_WIN;
// flushenable = 1; //需要刷新窗口
GPRS_win();
break;
case BLUETOOTH_BUTTON:
// win_ID = BLUETOOTH_WIN;
// flushenable = 1; //需要刷新窗口
break;
case UART_BUTTON:
win_ID = UART_WIN;
uart_win();
for(i=0;i<20000;i++);
flushenable = 0;
break;
case USB_BUTTON:
win_ID = USB_WIN;
usb_win();
for(i=0;i<20000;i++);
flushenable = 0;
break;
case KBD_BUTTON:
win_ID = KBD_WIN;
KBD_win();
for(i=0;i<20000;i++);
flushenable = 0;
break;
case IIS_BUTTON:
playwav();
break;
case CONFIG_BUTTON:
win_ID = CONFIG_WIN;
Config_win();
for(i=0;i<20000;i++);
flushenable = 0;
break;
case STEP_MOTOR_BUTTON:
win_ID = STEPMOTOR_WIN;
Step_Motor_win();
for(i=0;i<20000;i++);
flushenable = 0;
break;
case GPS_BUTTON:
win_ID = GPS_WIN;
GPS_win();
for(i=0;i<20000;i++);
flushenable = 0;
break;
case EXIT_BUTTON:
win_ID = MAIN_WIN;
flushenable = 0;
buttonnumber =0; //在封面上没有按钮
LCD_Entry();
break;
}
break;
case GPRS_WIN:
if(findbuttonid(x,y) == EXIT_BUTTON)
{
win_ID = MAIN_MENU;
mainmenu();
}
if(findbuttonid(x,y) == CALL_BUTTON)
{
win_ID = CALL_WIN;
clearbuttonlist();
// for(i=0;i<1000000;i++);
CALL_win();
}
if(findbuttonid(x,y) == MESSAGE_BUTTON)
{
win_ID = MESSAGE_WIN;
Message_win();
}
break;
case UART_WIN:
if(findbuttonid(x,y) == EXIT_BUTTON)
{
win_ID = MAIN_MENU;
mainmenu();
}
if(findbuttonid(x,y) == START_BUTTON)
{
CONSOL_Select(0);
CONSOL_Init(115200);
CONSOL_Printf("\n\r***************************************************************");
CONSOL_Printf("\n\r* Copyright Shenzhen Watertek S.&T. Co.,Ltd 2005 *");
CONSOL_Printf("\n\r* All Rights Reserved. *");
CONSOL_Printf("\n\r***************************************************************");
}
break;
case USB_WIN:
if(findbuttonid(x,y) == EXIT_BUTTON)
{
win_ID = MAIN_MENU;
mainmenu();
}
break;
case KBD_WIN:
if(findbuttonid(x,y) == EXIT_BUTTON)
{
win_ID = MAIN_MENU;
mainmenu();
}
break;
case CALL_WIN:
if(findbuttonid(x,y) == EXIT_BUTTON)
{
win_ID = GPRS_WIN;
phone_index =0; //清空电话号码buffer
GPRS_win();
}
if(findbuttonid(x,y) == CALL_BUTTON)
{
call_demo(phone_num);
}
if(findbuttonid(x,y) == ESC_BUTTON)
{
disconnect_phone();
}
break;
case MESSAGE_WIN:
if(findbuttonid(x,y) == EXIT_BUTTON)
{
win_ID = GPRS_WIN;
phone_index =0; //清空电话号码buffer
GPRS_win();
}
if(findbuttonid(x,y) == SEND_BUTTON)
{
// win_ID = CALL_WIN;
sendmessage_demo(phone_num);
}
// if(findbuttonid(x,y) == ESC_BUTTON)
// {
// win_ID = CALL_WIN;
// disconnect_phone();
// }
break;
case CONFIG_WIN:
switch(findbuttonid(x,y))
{
case EXIT_BUTTON:
{
win_ID = MAIN_MENU;
mainmenu();
phone_index =0; //清空电话号码buffer
break;
}
case ADJUST_BUTTON:
{
int k;
for(k=0;k<25;k++)
{
IIC_write(k,0);
}
drawtext(110,50,"请重新启动!",1,0,rgb(255,255,0));
break;
}
case TIME_BUTTON:
{
win_ID = TIME_CONFIG_WIN;
Config_time_win();
break;
}
}
break;
case STEPMOTOR_WIN:
motorctrl(findbuttonid(x,y));
break;
case TIME_CONFIG_WIN:
switch(findbuttonid(x,y))
{
case EXIT_BUTTON:
{
win_ID = CONFIG_WIN;
time.hour = (gTimestr[0] - '0')*10 + (gTimestr[1] - '0');
time.min = (gTimestr[2] - '0')*10 + (gTimestr[3] - '0');
time.weekday = gTimestr[4] - '0';
if((time.weekday))writeRTC(&time);
Config_win();
// phone_index =0; //清空电话号码buffer
break;
}
}
break;
case GPS_WIN:
switch(findbuttonid(x,y))
{
case EXIT_BUTTON:
{
win_ID = MAIN_MENU;
mainmenu();
break;
}
}
break;
}
}
int findbuttonid(int x,int y)
{
int i;
for(i=0;i<buttonnumber;i++)
{
if(x>=mbuttonlist[i].x0&&x<=(mbuttonlist[i].x0+mbuttonlist[i].wide)&&y>=mbuttonlist[i].y0&&y<=(mbuttonlist[i].y0+mbuttonlist[i].high))
{
fillreverserectangle (mbuttonlist[i].x0,mbuttonlist[i].y0,mbuttonlist[i].x0+mbuttonlist[i].wide,mbuttonlist[i].y0+mbuttonlist[i].high);
waitforstylusup();
drawbutton(&mbuttonlist[i]);
return mbuttonlist[i].id ;
}
}
if(x>=290&&y>210) return EXIT_BUTTON;
return 0;
}
void motorctrl(int id)
{
switch(id)
{
case EXIT_BUTTON:
{
win_ID = MAIN_MENU;
MotorOff(TIMER2); //关闭电机
mainmenu();
phone_index =0; //清空电话号码buffer
break;
}
case MOTOR_SPEED_UP_BUTTON:
{
char buf[30];
gfreq++;
if(gfreq >=4) gfreq =4;
SetClkFreq(gfreq*50,TIMER2);
sprintf(buf,"%d",gfreq);
fillrectangle(120,124,130,140,rgb(0,0,255));
drawascii168(120,138,buf,rgb(255,255,0));
break;
}
case MOTOR_SPEED_DOWN_BUTTON:
{
char buf[30];
gfreq--;
if(gfreq <=1) gfreq =1;
SetClkFreq(gfreq*50,TIMER2);
sprintf(buf,"%d",gfreq);
fillrectangle(120,124,130,140,rgb(0,0,255));
drawascii168(120,138,buf,rgb(255,255,0));
break;
}
case MOTOR_ANGLE_UP_BUTTON:
{
char buf[30];
gAngle++;
if(gAngle >=4) gAngle =4;
AngleCtrl(gAngle);
sprintf(buf,"%d",5-gAngle);
fillrectangle(120,84,130,100,rgb(0,0,255));
drawascii168(120,98,buf,rgb(255,255,0));
break;
}
case MOTOR_ANGLE_DOWN_BUTTON:
{
char buf[30];
gAngle--;
if(gAngle <=1) gAngle =1;
AngleCtrl(gAngle);
sprintf(buf,"%d",5-gAngle);
fillrectangle(120,84,130,100,rgb(0,0,255));
drawascii168(120,98,buf,rgb(255,255,0));
break;
}
case START_BUTTON:
{
MotorOn(TIMER2);
DirectoryCtrl(gDirectoryCtrl); //改变方向
// drawascii168(120,40,"START_BUTTON",rgb(255,255,0));
break;
}
case STOP_BUTTON:
{
MotorOff(TIMER2);
DirectoryCtrl(gDirectoryCtrl); //改变方向
// drawascii168(120,40,"STOP_BUTTON",rgb(255,255,0));
break;
}
case SWITCH_BUTTON:
{
if(gDirectoryCtrl == 0)
{
gDirectoryCtrl =1;
strcopy(mbuttonlist[6].text,"===>>>"); //修改显示的按钮界面
}
else
{
gDirectoryCtrl =0;
strcopy(mbuttonlist[6].text,"<<<==="); //修改显示的按钮界面
}
DirectoryCtrl(gDirectoryCtrl);
drawbutton(&mbuttonlist[6]);
// drawascii168(120,40,"STOP_BUTTON",rgb(255,255,0));
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -