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;
}*/