www.pudn.com > microwindows.example10.rar > tpcfg.c
#include#include #include #include #include "device.h" //#ifdef S3C44B0_ADS7843_MOUSE #include "touchscreen_s3c44b0_ads7843.h" //#endif static int pd_fd = -1; extern SCREENDEVICE scrdev; /*modify by kh 2003_12_21*/ struct tpmark { int ltx; int lty; int rbx; int rby; }tpMark; MOUSEDEVICE mymousedev; static int rx,ry;//任意点坐标 static int lt_x,lt_y;//左上角 static int rb_x,rb_y;//右下角 static char sure1,sure2,sure; FILE *tpmap;//存放校验坐标 static int x,y,z,t; static int Open(MOUSEDEVICE *pmd); static void Close(void); static int Read(MWCOORD *px, MWCOORD *py, MWCOORD *pz, int *pb, int mode); static int GetButtonInfo(void); static void GetDefaultAccel(int *pscale,int *pthresh); static void checkpoint(); static void savedata(); int main() { printf("\n This program will guid to initial your touchpad.\n"); checkpoint(); printf("Are you sure?(input y/n)\n"); //savedata(); while(1) { scanf("%c",&sure); if((sure=='y')||(sure=='Y')) { savedata(); break; } if((sure=='n')||(sure=='N')) { printf("your touchscreen had't been initial,Please initial again!\n"); exit(0); } printf("Please input y/n!\n"); } return 0; /*if(!((sure=='y')||(sure=='Y')||(sure=='n')||(sure=='N')))*/ } static int Open(MOUSEDEVICE *pmd) { 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; } static void Close(void) { // Close the touch panel device. if(pd_fd < 0) return; close(pd_fd); pd_fd = -1; } static int GetButtonInfo(void) { // get "mouse" buttons supported return MWBUTTON_L; } static void GetDefaultAccel(int *pscale,int *pthresh) { *pscale = 3; *pthresh = 5; } static int Read(MWCOORD *px, MWCOORD *py, MWCOORD *pz, int *pb, int mode) { struct ts_event event; int bytes_read; // read a data point bytes_read = read(pd_fd, &event, sizeof(event)); if(bytes_read != sizeof(event)) { if(bytes_read == -1) { if(errno == EINTR || errno == EAGAIN) return 0; EPRINTF("[%s] Error %d reading from touch panel\n", TS_DEVICE, errno); return -1; } EPRINTF("[%s] Wrong number of bytes %d read from touch panel " "(expected %ld)\n", TS_DEVICE, bytes_read, sizeof(event)); return 0; } #ifdef S3C44B0_ADS7843_MOUSE //*px = (event.x-1719)*320/(314-1719); //*py = (event.y-408)*240/(3666-480); *px = event.x; *py = event.y; #else *px = event.x; *py = event.y; #endif #if defined(TOUCHSCREEN_IPAQ) || defined(TOUCHSCREEN_ADS7846)\ ||defined(S3C44B0_ADS7843_MOUSE) *pb = (event.pressure) ? MWBUTTON_L : 0; #else *pb = (event.pressure > 50) ? MWBUTTON_L : 0; #endif *pz = event.pressure; //printf("zkh x=%d, y=%d, pressure=%d\n",*px,*py,*pz); if(!*pb) return 3; return 2; } static void checkpoint() { rx=0; ry=0; lt_x=0; lt_y=0; rb_x=0; rb_y=0; //sure='n'; mymousedev.Open(&mymousedev); //mymousedev.Read(&x, &y, &z, &t); printf("\nNow, press any point on touchpad!\n"); while(z==0){mymousedev.Read(&x, &y, &z, &t);} rx=x; ry=y; printf("Any_point: rx=%d,ry=%d\n",rx,ry); while(z>0){mymousedev.Read(&x, &y, &z, &t);} //point_1 printf("Next to press the LeftTop point of your touchsrceen!\n"); printf("If you srue next coorinate is you want, please input y then press the point.\n"); for(;;){ while(z==0){mymousedev.Read(&x, &y, &z, &t);} if(lt_x+lt_y==0) { lt_x=x; lt_y=y; } printf("Left_Top: lt_x=%d,lt_y=%d\n",lt_x,lt_y); while(z>0){mymousedev.Read(&x, &y, &z, &t);} scanf("%c",&sure1); if((sure1=='y')||(sure1=='Y')) { tpMark.ltx=lt_x; tpMark.lty=lt_y; break; } else{lt_x=0; lt_y=0;} } //point_2 printf("Next to press the RightBottom point on your touchsrceen!\n"); for(;;){ while(z==0){mymousedev.Read(&x, &y, &z, &t);} if(rb_x+rb_y==0) { rb_x=x; rb_y=y; } printf("Right_Bottom: rb_x=%d,rb_y=%d\n",rb_x,rb_y); while(z>0){mymousedev.Read(&x, &y, &z, &t);} scanf("%c",&sure2); if((sure2=='y')||(sure2=='Y')) { tpMark.rbx=rb_x; tpMark.rby=rb_y; break; } else{rb_x=0; rb_y=0;} } //point_3 mymousedev.Close(); } static void savedata() { if((tpmap=fopen("tpconfigure","wb+"))==NULL) { printf("can't open the config file!\n"); tpMark.ltx=1719; tpMark.lty=480; tpMark.rbx=314; tpMark.rby=3666; if(fwrite(&tpMark,sizeof(int),4,tpmap)!=4) { printf("file write error,can't initial touchpad!\n"); } } else { if(fwrite(&tpMark,sizeof(int),4,tpmap)!=4) { printf("file write error,can't initial touchpad!\n"); } } fclose(tpmap); } MOUSEDEVICE mymousedev = { Open, Close, GetButtonInfo, GetDefaultAccel, Read, NULL, #ifdef S3C44B0_ADS7843_MOUSE MOUSE_NORMAL #else MOUSE_TRANSFORM /* Input filter flags */ #endif };