www.pudn.com > microwindows.example10.rar > tpconfig.c
/**************************************************************** **Microwindows 触摸屏校验程序 By zhang kaohua 2003.12.18********* *****************************************************************/ #define MWINCLUDECOLORS #include#include #include #include #include "device.h" #include"nano-X.h" #include "touchscreen_s3c44b0_ads7843.h" static GR_WINDOW_ID w; //声明根窗口 static GR_GC_ID gc; //声明根窗口绘图上下文 GR_EVENT event; //声明事件 GR_FONT_ID font; //设置字体号 void do_press(GR_EVENT_BUTTON *event); //static int PD_Open( ); struct tpmark { int ltx; int lty; int rbx; int rby; }tpMark; struct ts_event tpevent; //extern struct ts_event event1; static int rx,ry;//任意点坐标 static int lt_x,lt_y;//左上角 static int rb_x,rb_y;//右下角 static char sure; FILE *tpmap;//存放校验坐标 static int pd_fd = -1; extern SCREENDEVICE scrdev; // string text; int main(int ac,char **av) { /* struct ts_event tpevent; int rx,ry;//任意点坐标 int lt_x,lt_y;//左上角 int rb_x,rb_y;//右下角 FILE *tpmap;//存放校验坐标 string text; char sure;*/ rx=0;ry=0; lt_x=1719;lt_y=480; rb_x=314; rb_y=3666; //tpmark tpMark; sure='n'; if (GrOpen()<0) { printf("Can't open graphics\n"); exit(1); } w=GrNewWindow(GR_ROOT_WINDOW_ID,0,0,320,240,3,GREEN,BLUE);//实例化根窗口 gc=GrNewGC();//实例化上下文 GrMapWindow(w);//显示窗口 // draw_main_win(w,gc); GrSelectEvents(w,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN); GrText(w,gc,60,20,"Please press any point on touchpad!",-1,GR_TFASCII); //PD_Open( ); for(;;) { GrGetNextEvent(&event); switch(event.type)//pevent.pressure>50) { case GR_EVENT_TYPE_BUTTON_DOWN: do_press(&event.button); break; } } GrClose(); return 0; } void do_press(GR_EVENT_BUTTON *event) {//调用触摸屏事件 if(event->wid==w) { for(;;) { if(rx+ry==0) { rx=event1.x; ry=event1.y; GrText(w,gc,80,40,"rx=:"+rx,-1,GR_TFASCII); GrText(w,gc,160,40,"ry=:"+ry,-1,GR_TFASCII); } else if(rx+ry>0) { if(lt_x+lt_y==0) { lt_x=event1.x; lt_y=event1.y; GrText(w,gc,80,80,"lt_x=:",-1,GR_TFASCII); GrText(w,gc,160,80,"lt_y=:",-1,GR_TFASCII); } else { rb_x=event1.x; rb_y=event1.y; GrText(w,gc,80,100,"rb_x=:",-1,GR_TFASCII); GrText(w,gc,160,100,"rb_y=:",-1,GR_TFASCII); break; } } } } GrText(w,gc,80,120,"Are you sure?(input y/n in minicom)",-1,GR_TFASCII); scanf("%c",&sure); if((sure=='y')||(sure=='Y')) { if((tpmap=fopen("./tpconfigure","wb+"))==NULL) { printf("can't open the config file!\n"); return;//exit(0); } tpMark.ltx=lt_x; tpMark.lty=lt_y; tpMark.rbx=lt_x; tpMark.rby=lt_y; if(fwrite(&tpMark,sizeof(int),4,tpmap)!=4) printf("file write error!\n"); } return; } /*static int PD_Open( ) { if((pd_fd = open(TS_DEVICE_FILE, O_NONBLOCK)) < 0) { EPRINTF("Error %d opening %s touchscreen device [%s]\n", errno, TS_DEVICE, TS_DEVICE_FILE); return -1; } GdHideCursor(&scrdev); return pd_fd; }*/