GUI--移植3--添加并配置触摸屏到uc/gui

/*方案:
    之前没有使用触摸屏,现在添加之
编    者:张永辉 2012年12月28日
*/
/****************************************************************************************************
                                        GUI触摸屏示例
文    件:GuiTouchTest.h
****************************************************************************************************/
#ifndef __GUITOUCHTEST_H
#define __GUITOUCHTEST_H

void GuiThouchTest(void);
//***************************************************************************************************
#endif

/****************************************************************************************************
                                        GUI的触摸屏测试

1 在 GUI--移植1--VS2008_模拟1788_opengl_最小配置 的基础上 做如下操作
2 在 GUIConf.h 添加定义
    #define GUI_SUPPORT_TOUCH         (1)
    #undef WIN32
3 在 GUITouchConf.h 添加定义
    #define GUI_TOUCH_SWAP_XY    0      //=0 xy轴不交换,=1交换
    #define GUI_TOUCH_MIRROR_X   0      //x轴镜像
    #define GUI_TOUCH_MIRROR_Y   0      //Y轴镜像
    #define GUI_TOUCH_AD_LEFT   0       //AD转换的X最小值,需要根据实际情况确定
    #define GUI_TOUCH_AD_RIGHT  480     //AD转换的X最大值
    #define GUI_TOUCH_AD_TOP    0       //AD转换的Y最小值
    #define GUI_TOUCH_AD_BOTTPM 272     //AD转换的Y最大值
    #define GUI_TOUCH_XSIZE     LCD_XSIZE
    #define GUI_TOUCH_YSIZE     LCD_YSIZE
4 在 GUI_X_1788.c 添加底层函数
    //测量激活
    void GUI_TOUCH_X_ActivateX(void)
    {}
    void GUI_TOUCH_X_ActivateY(void)
    {}
    //返回AD转换的X轴结果
    int GUI_TOUCH_X_MeasureX(void)
    {   return GlTouchGetAdX();
    }
    //返回AD转换的Y轴结果
    int GUI_TOUCH_X_MeasureY(void)
    {   return GlTouchGetAdY();
    }
5 可以像如下示例使用触摸屏了
    GUI.H的定义:
        typedef struct
        {   int x,y;                //坐标
            unsigned char Pressed;  //=1 表示触摸按下 =0未按下
        }GUI_PID_STATE;
6 矫正函数 GUI_TOUCH_Calibrate(xy,xy1,adc1,xy2,adc2)
    xy=0 矫正X轴 =1矫正Y轴
    xy1  第一个像素点
    adc1 第一个像素点对应的ADC转换的值。
    xy1  第二个像素点
    adc1 第二个像素点对应的ADC转换的值。
7 测试结果:
    还可以,位置结果矫正后很准确
编    者:张永辉 2012年12月28日
****************************************************************************************************/
#include "GUI.h"
#include "jpeglib.h"
#include "GuiTouchTest.h"
#include "OpenglLcd.h"
/***************************************************************************************************/
//测试函数,main调用此函数即可
void GuiThouchTest(void)
{
    char flg = 0;
    GUI_PID_STATE th;
    GUI_Init();                             //初始化
   
    GUI_TOUCH_Calibrate(0,0,100,0,100);     //矫正X
    GUI_TOUCH_Calibrate(1,0,100,0,100);     //矫正Y
    while(1)
    {
        GUI_TOUCH_Exec();           //需要每10ms调用一次
        GlTimeDelayMs(10);
        GUI_TOUCH_GetState(&th);
        GUI_DrawPixel(th.x,th.y);   //在屏幕画出触摸的点

        //按下的时候打印GUI计算出来的位置
        if(th.Pressed == 1 && flg == 0)
        {
            flg = 1;
            printf("guix=%d guiy=%d s=%d \n",th.x,th.y,th.Pressed);
        }
        if(th.Pressed == 0)
        {
            flg = 0;
        }
    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值