📄 mwd.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include "message.h"
#include "mwd.h"
#include "ad.h"
#include "temp.h"
#include "led.h"
#include "touchscreen_s3c44b0_ads7843.h"
#if UNIX | DOS_DJGPP
#endif
#define MWINCLUDECOLORS
#include "nano-X.h"
#define DC MWRGB(58,110,165)
#define WIC MWRGB(212,208,200)
#define B1 MWRGB(255,255,255)
#define B2 MWRGB(212,208,200)
#define B3 MWRGB(128,128,128)
#define B4 MWRGB(64,64,64)
#define WIDTH 320
#define HEIGHT 240
#define SDTOPW 320
#define SDTOPH 50
#define ADWW 99
#define ADWH 140
#define LEDWW 99
#define LEDWH 140
#define LEDBW 75
#define LEDBH 30
#define ADBW 75
#define ADBH 30
#define PICW 99
#define PICH 140
#define SW 50
#define SH 30
#define KEYWX 147
#define KEYWY 86
#define KEYWW 145
#define KEYWH 147
#define KBW 43
#define KBH 32
#define BTW 60
#define BTH 60
#define FX 5
#define FY 17
/**********************************************************/
GR_WINDOW_ID window;
GR_WINDOW_ID bt[4];
GR_WINDOW_ID smb[5];
GR_WINDOW_ID start;
GR_WINDOW_ID adw;
GR_WINDOW_ID sdtop;
GR_WINDOW_ID ledw;
GR_WINDOW_ID keyw;
GR_WINDOW_ID kb[4][3];
GR_WINDOW_ID ledb[4];
GR_WINDOW_ID adb[4];
GR_WINDOW_ID temp;
GR_WINDOW_ID text;
GR_GC_ID gc;
GR_FONT_ID fontid;
GR_IMAGE_ID picID;
GR_IMAGE_INFO picIF;
GR_EVENT event;
unsigned int sum;
char *fileName[5]={"AD","LED","KEY","123","EXIT"};
char *keyname[4][3]={{"7","8","9"},{"4","5","6"},{"1","2","3"},{"0",".","ENT"}};
char *ledbname[4]={"L_SHIFT","R_SHIFT","CLSHFT","CRSHFT"};
/**********************************************************/
void drawMainWin(GR_GC_ID gc);
void drawBar(GR_GC_ID gc);
void setpic(char *picfile,GR_WINDOW_ID win,int x,int y);
void doStartMenu(GR_GC_ID gc);
void doEventButtonDown(GR_EVENT_BUTTON *bevent,GR_GC_ID gc);
void doEventButtonUp(GR_EVENT_BUTTON *bevent);
void umapStartMenu();
void bwin(GR_GC_ID gc,GR_WINDOW_ID win,int w,int h);
void swin(GR_GC_ID gc,GR_WINDOW_ID win,int w,int h);
void twin(GR_GC_ID gc,GR_WINDOW_ID win,int w,int h);
void wwin(GR_GC_ID gc,GR_WINDOW_ID win,int w,int h);
void dokeyw(GR_GC_ID gc);
void showkeyw(GR_GC_ID gc);
void umapkeyw();
void doad(float *a,GR_GC_ID gc);
void umapledw();
void umapadw();
void doledw(GR_GC_ID gc);
void doadw(GR_GC_ID gc);
void shownum(int a,GR_GC_ID gc);
void dotemp(float temp,GR_GC_ID gc);
void getnum(int keynum);
void showkeynum(char key1);
char nkey;
/**********************************************************/
void * mwd(void *data)
{
if (GrOpen() < 0)
exit(1);
gc = GrNewGC();
GrSetGCUseBackground(gc, GR_FALSE);
GrSetGCBackground(gc, MWRGB(255,255,255));
GrSetGCForeground(gc, 255);
fontid = GrCreateFont("HZKFONT", 0, NULL);
// fontid = GrCreateFont(NULL, 0, NULL);
GrSetFontSize(fontid, 16);
// GrSetFontRotation(fontid, 330); /* 33 degrees */
GrSetFontAttr(fontid, GR_TFKERNING | GR_TFANTIALIAS, 0);
GrSetGCFont(gc, fontid);
drawMainWin(gc);
drawBar(gc);
while (1)
{
if(!(PDATG&ZLG7289_KEY) )
{
nkey=getkey();
showkeynum(nkey);
}
while(!(PDATG&ZLG7289_KEY));
GrCheckNextEvent(&event);
switch(event.type)
{
case GR_EVENT_TYPE_CLOSE_REQ:
GrClose();
exit(0);
case GR_EVENT_TYPE_BUTTON_DOWN:
doEventButtonDown(&event.button,gc);
break;
case GR_EVENT_TYPE_BUTTON_UP:
doEventButtonUp(&event.button);
break;
}
}
GrFlush();
GrDestroyFont(fontid);
GrClose();
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void drawMainWin(GR_GC_ID gc)
{
window = GrNewWindow(GR_ROOT_WINDOW_ID, 0, 0, WIDTH, HEIGHT,0,DC,WIC);
GrSelectEvents(window,
GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_CLOSE_REQ |
GR_EVENT_MASK_MOUSE_ENTER | GR_EVENT_MASK_MOUSE_EXIT);
GrMapWindow(window);
sdtop = GrNewWindow(window, 0, 0, SDTOPW, SDTOPH,0,WIC,WIC);
GrSelectEvents(sdtop,
GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_CLOSE_REQ );
GrMapWindow(sdtop);
bwin(gc,sdtop,SDTOPW,SDTOPH);
GrSetGCFont(gc, fontid);
GrSetGCForeground(gc, BLACK);
text=GrNewWindow(window,10,55,120,35,0,DC,DC);
GrText(window, gc, 170,65+FY,"Temp:", -1, GR_TFASCII);
temp=GrNewWindow(window,220,55,100,35,0,DC,DC);
GrSelectEvents(text,
GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_CLOSE_REQ );
GrMapWindow(text);
GrSelectEvents(temp,
GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_CLOSE_REQ );
GrMapWindow(temp);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void drawBar(GR_GC_ID gc)
{
char abc[4][2];
int i;
bt[0]=GrNewWindow(window,150,90,BTW,BTH,0,WIC,BLUE);
bt[1]=GrNewWindow(window,220,90,BTW,BTH,0,WIC,BLUE);
bt[2]=GrNewWindow(window,150,160,BTW,BTH,0,WIC,BLUE);
bt[3]=GrNewWindow(window,220,160,BTW,BTH,0,WIC,BLUE);
for(i=0;i<4;i++)
{
sprintf(abc[i],"%d",i);
GrSelectEvents(bt[i],GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN
| GR_EVENT_MASK_BUTTON_UP);
GrMapWindow(bt[i]);
bwin(gc,bt[i],BTW,BTH);
GrText(bt[i], gc, FX+10, FY+10,abc[i] , -1, GR_TFASCII);
}
adw=GrNewWindow(window,15,90,ADWW,ADWH,0,WIC,WIC);
ledw=GrNewWindow(window,15,90,LEDWW,LEDWH,0,WIC,WIC);
for(i=0;i<4;i++)
{
ledb[i]=GrNewWindow(ledw,12,6+i*LEDBH+i*3,LEDBW,LEDBH,0,WIC,WIC);
GrSelectEvents(ledb[i],GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN |
GR_EVENT_MASK_BUTTON_UP );
}
GrSelectEvents(adw,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN );
setpic("./image/biaozhi256.bmp",window,18,115);
for(i=0;i<5;i++)
{
smb[i]=GrNewWindow(sdtop,SW+10+i*SW,10,SW,SH,0,WIC,WIC);
GrSelectEvents(smb[i],GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN |
GR_EVENT_MASK_MOUSE_ENTER | GR_EVENT_MASK_MOUSE_EXIT);
}
dokeyw(gc);
start=GrNewWindow(sdtop,3,10,SW,SH,0,WIC,WIC);
GrSelectEvents(start,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN |
GR_EVENT_MASK_MOUSE_ENTER | GR_EVENT_MASK_MOUSE_EXIT);
GrMapWindow(start);
GrSetGCForeground(gc, BLACK);
GrSetGCUseBackground(gc, GR_FALSE);
GrSetGCFont(gc, fontid);
GrText(start, gc, FX, FY, "start", -1, GR_TFASCII);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void setpic(char *picfile,GR_WINDOW_ID win,int x,int y)
{
if(!(picID = GrLoadImageFromFile(picfile, 0)))
{
fprintf(stderr, "Failed to load image file \"%s\"\n", picfile);
}
GrGetImageInfo(picID, &picIF);
GrDrawImageToFit(win, gc, x, y, picIF.width, picIF.height, picID);
// GrFreeImage(picID);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void doStartMenu(GR_GC_ID gc)
{
int i;
char* startMenuFileName[5];
GrSetGCForeground(gc,BLACK);
GrSetGCUseBackground(gc, GR_FALSE);
GrSetGCFont(gc, fontid);
for(i=0;i<5;i++)
{
GrMapWindow(smb[i]);
startMenuFileName[i]=fileName[i];
GrText(smb[i],gc,FX,FY,startMenuFileName[i],-1,GR_FALSE);
}
}
void dokeyw(GR_GC_ID gc)
{
int i,j;
keyw = GrNewWindow(window, KEYWX, KEYWY, KEYWW, KEYWH,0,WIC,WIC);
// GrMapWindow(keyw);
bwin(gc,sdtop,SDTOPW,SDTOPH);
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{
kb[i][j] = GrNewWindow(keyw, 5+3*j+KBW*j,5+3*i+KBH*i, KBW, KBH,0,WIC,WIC);
GrSelectEvents(kb[i][j],GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN |
GR_EVENT_MASK_BUTTON_UP );
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
void doEventButtonDown(GR_EVENT_BUTTON *bevent,GR_GC_ID gc)
{
MSGE msg;
int w=0,h=0;
static int ps=0;
static int ps1=0;
static int ps2=0;
static int ps3=0;
// static unsigned int sum=0;
if(sum>99999998)
{
sum=0;
}
if(bevent->wid==start)
{
w=SW;
h=SH;
ps++;
ps%=100;
if(ps%2!=0)
{
twin(gc,bevent->wid,w,h);
doStartMenu(gc);
}
else
{
wwin(gc,bevent->wid,w,h);
umapStartMenu(gc);
}
}
if(bevent->wid==bt[0])
{
w=BTW;
h=BTH;
twin(gc,bevent->wid,w,h);
msg.type=MOTORS;
sendmessage(&mbuffer, &msg);
}
if(bevent->wid==bt[1])
{
w=BTW;
h=BTH;
twin(gc,bevent->wid,w,h);
msg.type=MOTOR;
msg.num=400;
sendmessage(&mbuffer, &msg);
}
if(bevent->wid==bt[2])
{
w=BTW;
h=BTH;
twin(gc,bevent->wid,w,h);
msg.type=MOTOR;
msg.num=-400;
sendmessage(&mbuffer, &msg);
}
if(bevent->wid==bt[3])
{
w=BTW;
h=BTH;
twin(gc,bevent->wid,w,h);
msg.type=MOTORE;
sendmessage(&mbuffer, &msg);
}
if(bevent->wid==smb[0])
{
w=SW;
h=SH;
ps1++;
ps1%=100;
if(ps1%2!=0)
{
twin(gc,bevent->wid,w,h);
wwin(gc,smb[1],w,h);
doadw(gc);
}
else
{
wwin(gc,bevent->wid,w,h);
umapadw();
}
}
if(bevent->wid==smb[1])
{
w=SW;
h=SH;
ps2++;
ps2%=100;
if(ps2%2!=0)
{
twin(gc,bevent->wid,w,h);
wwin(gc,smb[0],w,h);
doledw(gc);
}
else
{
wwin(gc,bevent->wid,w,h);
umapledw();
}
}
if(bevent->wid==smb[2])
{
w=SW;
h=SH;
ps3++;
ps3%=100;
if(ps3%2!=0)
{
twin(gc,bevent->wid,w,h);
showkeyw(gc);
}
else
{
wwin(gc,bevent->wid,w,h);
umapkeyw();
}
}
if(bevent->wid==smb[3])
{
w=SW;
h=SH;
}
if(bevent->wid==smb[4])
{
w=SW;
h=SH;
GrClose();
TCON&=~(0x1<<12);
exit(1);
}
if(bevent->wid==kb[0][0])
{
w=KBW;
h=KBH;
twin(gc,bevent->wid,w,h);
getnum(7);
}
if(bevent->wid==kb[0][1])
{
w=KBW;
h=KBH;
twin(gc,bevent->wid,w,h);
getnum(8);
}
if(bevent->wid==kb[0][2])
{
w=KBW;
h=KBH;
twin(gc,bevent->wid,w,h);
getnum(9);
}
if(bevent->wid==kb[1][0])
{
w=KBW;
h=KBH;
twin(gc,bevent->wid,w,h);
getnum(4);
}
if(bevent->wid==kb[1][1])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -