硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7616|回复: 1
收起左侧

[emWin实战篇] emWin-5.22 支持触摸屏,如何进行校正。

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2014-6-4 15:12:57 | 显示全部楼层 |阅读模式
在LCD_X_Config(void) 函数中,进行校正。

// Calibrate touch  
        TouchOrientation = (GUI_MIRROR_X * LCD_GetMirrorXEx(0)) |
                                             (GUI_MIRROR_Y * LCD_GetMirrorYEx(0)) |
                                             (GUI_SWAP_XY  * LCD_GetSwapXYEx (0)) ;
        GUI_TOUCH_SetOrientation(TouchOrientation);
        if (LCD_GetSwapXYEx(0))
        {
            GUI_TOUCH_Calibrate(GUI_COORD_X, 0, XSIZE_PHYS, TOUCH_AD_LEFT, TOUCH_AD_RIGHT);   // x axis swapped
            GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, YSIZE_PHYS, TOUCH_AD_TOP , TOUCH_AD_BOTTOM);  // y axis swapped
        }
        else
        {
            GUI_TOUCH_Calibrate(GUI_COORD_X, 0, YSIZE_PHYS, TOUCH_AD_LEFT, TOUCH_AD_RIGHT);   // x axis
            GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, XSIZE_PHYS, TOUCH_AD_TOP , TOUCH_AD_BOTTOM);  // y axis
        }
不太懂LCD_GetMirrorYEx(0)是怎么定义的?emWin手册中也没有说明。是Y轴进行镜像显示吗?0表示不进行镜像显示?
在试验中发现:
           GUI_TOUCH_Calibrate(GUI_COORD_X, 0, YSIZE_PHYS, TOUCH_AD_LEFT, TOUCH_AD_RIGHT);   // x axis
      GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, XSIZE_PHYS, TOUCH_AD_TOP , TOUCH_AD_BOTTOM);  // y axis
没有起作用。设置任何值都无反应。主函数中:
while(1)
{

                           GUI_TOUCH_GetState(&TouchState);
              if(TouchState.Pressed == 1)
                {                     
                        GUI_GotoXY(150, 60);
                        GUI_DispDecMin(TouchState.y);
                        GUI_GotoXY(150, 40);
                        GUI_DispDecMin(TouchState.x);
                        GUI_CURSOR_SetPosition(100,100);
                        GUI_CURSOR_Show();
                    
                      TouchState.Pressed = 0;
                      GUI_TOUCH_StoreStateEx(&TouchState);
                }                    
}获得的TouchState.x和TouchState.y都是原始坐标数据。不知道,还应该增加什么东西,才能实现GUI_CURSOR_SetPosition(TouchState.x ,TouchState.y);
在校正后的坐标显示光标。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106838
QQ
发表于 2014-6-4 16:33:15 | 显示全部楼层
1. 关于校准,你可以看我写的这个例子http://www.armbbs.cn/forum.php?mod=viewthread&tid=2607,主要看MainTask.c文件即可,在我写的60期emWin教程的第三章有简易讲解。
2. 要显示出游标,你得先调用函数GUI_CURSOR_Show()进行显示。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-7 00:59 , Processed in 0.157184 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表