تابعی برای کالیبراسیون تاچ در emwin

کتابخانه گرافیکی دوبعدی در emWin جلسه ی چهارم
جولای 4, 2016
تابع تاخیر در RTX KEIL
آموزش RTX در کیل
جولای 20, 2016

کالیبراسیون تاچ در emwin.

با سلام خدمت دوستان.
یک تابعی رو در یک پروژه دیدم که کالیبراسیون تاچ رو انجام میداد.
خیلی خوشم اومد و این تابع رو در این پست قرار میدم تا شما هم بتونید از اون استفاده کنید.
البته این کالیبراسیون برای ال سی دی های ۸۰۰*۴۸۰ تنظیم شده.
که با تغییرات جزیی میتونید اون رو برای ال سی دی های دیگه هم به راحتی استفاده کنید.

شرح تابع برای کالیبراسیون تاچ در emwin:

عملکرد تابع به اینصورت است که : ابتدا در نقطه ی ۱۵ و ۱۵ ال سی دی دایره ای رسم میکند، که باید آنرا تاچ کنید. با تاچ کردن آن نقطه مختصات اول تاچ برای کالیبره کردن بدست می آید.

سپس در نفطه ی ۴۶۴ و ۷۸۴ این اتفاق رخ می دهد که با تاچ کردن آن مختصات دوم نقطه ی تاچ نیز بدست می آید.
حال با استفاده از تابع کالیبراسیون تاچ ، نقاط بدست آمده را درون تابع قرار می دهیم ، و با اجرای آن تابع تاچ را کالیبره می کند.

void Touch_Calibrate()
{
int IRQ_touch;
int x_adj[2],y_adj[2];

GUI_SetBkColor(GUI_RED);  
GUI_Clear();
GUI_SetColor(GUI_WHITE);  GUI_FillCircle(15, 15, 10);
GUI_SetColor(GUI_RED);    GUI_FillCircle(15, 15, 5);
GUI_SetColor(GUI_WHITE);
GUI_DispStringAt("Press here", 35, 15);
	
  do {
			GUI_PID_STATE State;
			GUI_TOUCH_GetState(&State);  
			IRQ_touch=((FIO_ReadValue(2))&(1<<11));
			if (IRQ_touch==0) 
				{
				x_adj[0]= Read_X(); 
				y_adj[0]= Read_Y();
				break;
				}
			GUI_Delay (100);
			} while (1);

GUI_Clear();
GUI_DispStringAt("OK", 35, 15);
  do {
    GUI_PID_STATE State;
    GUI_TOUCH_GetState(&State);
    IRQ_touch=((FIO_ReadValue(2))&(1<<11));
		if (IRQ_touch!=0) 
			{
      break;
			}	
		GUI_Delay (100);
			} while (1);


GUI_SetBkColor(GUI_RED);  
GUI_Clear();
GUI_SetColor(GUI_WHITE);  GUI_FillCircle(784, 464, 10);
GUI_SetColor(GUI_RED);    GUI_FillCircle(784, 464, 5);
GUI_SetColor(GUI_WHITE);
GUI_DispStringAt("Press here", 704, 464);
	
  do {
			GUI_PID_STATE State;
			GUI_TOUCH_GetState(&State);  
			IRQ_touch=((FIO_ReadValue(2))&(1<<11));
			if (IRQ_touch==0) 
				{
				x_adj[1]= Read_X(); 
				y_adj[1]= Read_Y();
				break;
				}
			GUI_Delay (100);
			} while (1);

GUI_Clear();
GUI_DispStringAt("OK", 764, 464);
  do {
    GUI_PID_STATE State;
    GUI_TOUCH_GetState(&State);
    IRQ_touch=((FIO_ReadValue(2))&(1<<11));
		if (IRQ_touch!=0) 
			{
      break;
			}	
		GUI_Delay (100);
			} while (1);
	
	GUI_TOUCH_Calibrate(GUI_COORD_X, 15, 784, x_adj[0], x_adj[1]);
  GUI_TOUCH_Calibrate(GUI_COORD_Y, 15, 464, y_adj[0], y_adj[1]);
    GUI_Delay(10000);
		}
}

 

حسین
حسین
من 28 سال سن دارم و رشته ی تحصیلی ام مهندسی برق قدرت بوده علاوه بر برق علاقمند به دنیای الکترونیک ، برنامه نویسی و طراحی وب هستم . این سایت رو برای آموزش رابط گرافیکی emWin راه اندازی کردم که بدون کمک شما جلو رفتن غیر ممکنه پس اگه آموزش یا مطالب مرتبطی دارید برام ایمیل کنید تا به اسم خودتون توی سایت منتشر بشه. hosseintomari@gmail.com
اشتراک
اطلاع از
guest

0 نظرات
بازخورد داخلی
مشاهده همه نظرات
0
برای بهبود مطالب، لطفاً نظر بدهید.x