OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3066|回复: 1

关于触摸屏不触发回调函数

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-2-19
在线时间
10 小时
发表于 2020-3-9 12:13:01 | 显示全部楼层 |阅读模式
1金钱
我最近移植的触摸驱动,坐标已经到ENWIN了,但是就是不触发回调函数,找了很多资料都没办法.哪位可否帮下忙?
下面是部分代码:
#define GUI_NUM_LAYERS            1    // Maximum number of available layers

#define GUI_OS                    (1)

#define GUI_MAXTASK               (2)   // ×î′ó¿éμ÷óÃEMWINμÄèÎÎñêy

#ifndef   GUI_SUPPORT_TOUCH
  #define GUI_SUPPORT_TOUCH       (1)  // Support touchscreen
#endif
#define GUI_DEFAULT_FONT          &GUI_Font6x8
#define GUI_SUPPORT_MOUSE             (1)    /* Support a mouse */
#define GUI_WINSUPPORT                (1)    /* Use window manager */
#define GUI_SUPPORT_MEMDEV            (1)    /* Memory device package available */
#define GUI_SUPPORT_DEVICES           (1)    /* Enable use of device pointers */



int  GUI_TOUCH_X_MeasureX(void)
{
        int32_t xvalue;

                rt_device_read(touch0,0,&postion,4);
                xvalue=postion.x;
        // if(xvalue!=0xffff) rt_kprintf("x=%d\n",postion.x);
                return xvalue;
       
}

int  GUI_TOUCH_X_MeasureY(void)
{       
        int32_t yvalue;


                rt_device_read(touch0,0,&postion,4);
                yvalue = postion.y;
         // if(yvalue!=0xffff)rt_kprintf("y=%d",postion.y);
       
          mGPIDState.x=postion.x;
          mGPIDState.y=postion.y;
         if(postion.y!=0xffff) mGPIDState.Pressed=0x01;
         else mGPIDState.Pressed=0x00;
          mGPIDState.Layer=0;
          GUI_PID_StoreState(&mGPIDState);
                return yvalue;
       
}

void task(){
    while (1)
    {
                                        GUI_TOUCH_Exec();       
                         GUI_PID_GetState(&mGPIDState);
                //        WM_SetpfPollPID(&mGPIDState);
                        if((mGPIDState.x!=0xffff)&&(mGPIDState.Pressed))
                                      printf("px=%x py=%x pp=%d\n",mGPIDState.x,mGPIDState.y,mGPIDState.Pressed);
                                rt_thread_mdelay(5);

    }

}



        case WM_INIT_DIALOG:
            //FRAMWIN¿Ø¼t3õê¼»ˉ
                                    WM_SetFocus(hItem);
                  WM_SetCapture(hItem,1);
                  WM_EnableWindow(hItem);
            hItem = pMsg->hWin;
            FRAMEWIN_SetFont(hItem, GUI_FONT_20B_ASCII);
            FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
            FRAMEWIN_SetText(hItem, "ALIENTEK LISTBOX");
            FRAMEWIN_SetTextColor(hItem,GUI_YELLOW);

            //LISTBOX¿Ø¼t3õê¼»ˉ
            hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0);
            LISTBOX_SetFont(hItem, GUI_FONT_20_ASCII);
            LISTBOX_SetAutoScrollH(hItem,1);               //¼¤»î×Ô¶ˉê1óÃˮƽ1ö¶ˉìõ
            LISTBOX_SetAutoScrollV(hItem,1);               //¼¤»î×Ô¶ˉê1óÃ′1Ö±1ö¶ˉìõ
            LISTBOX_AddString(hItem, "LED1 ON");
            LISTBOX_AddString(hItem, "LED1 OFF");
            LISTBOX_AddString(hItem, "BEEP ON");
            LISTBOX_AddString(hItem, "BEEP OFF");
            LISTBOX_AddString(hItem, "ALL ON");
            LISTBOX_AddString(hItem, "ALL OFF");

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-2-19
在线时间
10 小时
 楼主| 发表于 2020-3-9 12:16:50 | 显示全部楼层
补充:void LCD_X_Config(void)
{
    if(!lcd_device)
    {
        lcd_device = rt_device_find("lcd");
        if (!lcd_device)
            LOG_E("find %s failed!", "lcd");
                               
        rt_device_open(lcd_device, RT_DEVICE_FLAG_RDWR);
    }
   
    struct rt_device_graphic_info info;
    rt_device_control(lcd_device, RTGRAPHIC_CTRL_GET_INFO, &info);
   
    const LCD_API_COLOR_CONV *color;
    switch(info.pixel_format)
    {
        case RTGRAPHIC_PIXEL_FORMAT_MONO:
            color = GUICC_1;
            break;
        case RTGRAPHIC_PIXEL_FORMAT_RGB565:
            color = GUICC_M565;
            break;
        case RTGRAPHIC_PIXEL_FORMAT_RGB888:
            color = GUICC_M888;
            break;
        default:
            color = GUICC_M565;
            break;
    }
   
    GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, color, 0, 0);
    //
    // Display driver configuration, required for Lin-driver
    //
    LCD_SetSizeEx(0, info.width, info.height);
    LCD_SetVSizeEx(0, info.width, info.height);
                   GUI_TOUCH_Calibrate(GUI_COORD_X,0,800,0,799);   
        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,0,479);

}
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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