OpenEdv-开源电子网

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

关于uCGUI 触摸屏移植问题

[复制链接]

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
发表于 2013-7-15 23:55:13 | 显示全部楼层 |阅读模式
移植的 uCOS-II 2.8 + uCGUI 3.9a 显示和系统都没问题,可就是触摸屏没有反应,校准也校准了的,大致结构如下:


系统的结构:




LCDCONF.h的定义,我用的是 9320, 320*240



这是头文件GUICONF.h 的定义:



这是GUITOUCH_CONF.h的定义,坐标的AD值是校准过的:





转换坐标的两个函数,已成功配置:



然后我启动两个任务,第一个是调用GUI_TOUCH_Exec(),进行坐标扫描,其优先级高于第二个




第二个任务则是调用uCGUI 的例程程序 GUIDEMO_Main(),任务优先级低于触摸程序




程序执行的时候,发现显示是正常的,可是就是触摸没有反应,我开始怀疑是我的转换坐标关系函数不对,我去检查了GUI_TOUCH_Exec();

















































好像有没问题呀,困扰了我好几天了,能不能帮我看看是怎么回事,无比感谢!!







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

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
 楼主| 发表于 2013-7-16 00:09:45 | 显示全部楼层
我把工程文件帖出来,以上的工程如下

ucos-ii官方文件移植.rar

58.23 MB, 下载次数: 2402

回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
 楼主| 发表于 2013-7-16 09:05:45 | 显示全部楼层
顶一个,不要沉了
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-6-29
在线时间
0 小时
发表于 2013-7-27 20:42:39 | 显示全部楼层
等待解决中,
int  GUI_TOUCH_X_MeasureX(void) ;
int  GUI_TOUCH_X_MeasureY(void) ;
这两个函数怎么设置,原子哥的历程中,函数内容为空!!为何??
void GUI_TOUCH_X_ActivateX(void) {
}

void GUI_TOUCH_X_ActivateY(void) {
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-27 20:54:45 | 显示全部楼层
我们的用这两个函数:

int  GUI_TOUCH_X_MeasureX(void) {
  tp_dev.scan(0);//扫描
//if(tp_dev.sta&TP_PRES_DOWN)Convert_Pos();
return tp_dev.x;  
}

int  GUI_TOUCH_X_MeasureY(void) {
  tp_dev.scan(0);//扫描
//if(tp_dev.sta&TP_PRES_DOWN)Convert_Pos();
  return tp_dev.y;    
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-6-29
在线时间
0 小时
发表于 2013-7-30 08:47:26 | 显示全部楼层
楼主,解决了吗?
回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
 楼主| 发表于 2013-8-2 10:20:06 | 显示全部楼层
回复【6楼】Smarking:

楼主,解决了吗?

---------------------------------
解决了,是 GUI_TOUCH_Exec()函数没写对,要做修改,不然转换不对
回复 支持 反对

使用道具 举报

15

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2013-11-2
在线时间
0 小时
发表于 2013-11-2 16:20:10 | 显示全部楼层
楼主请问是怎么解决的啊,我的情况也是这样子,我没带操作系统。各种控件能显示,但是触摸毫无反应
回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
 楼主| 发表于 2013-11-3 21:29:39 | 显示全部楼层
回复【8楼】longdaoyuntai:
---------------------------------
看见上面的最后一张图没?就是这个函数要改,当时是因为函数转AD的计算有问题


/*********************************************************************
*
*       GUI_TOUCH_Exec
*函数需要改动

*************************************************************************/
void GUI_TOUCH_Exec(void) {
  #ifndef WIN32
  //static U8 ReadState;
  int x,y;
  /* calculate Min / Max values */
  if (xyMinMax[GUI_COORD_X].Min < xyMinMax[GUI_COORD_X].Max) {
    xMin = xyMinMax[GUI_COORD_X].Min;
    xMax = xyMinMax[GUI_COORD_X].Max;
  } else {
    xMax = xyMinMax[GUI_COORD_X].Min;
    xMin = xyMinMax[GUI_COORD_X].Max;
  }
  if (xyMinMax[GUI_COORD_Y].Min < xyMinMax[GUI_COORD_Y].Max) {
    yMin = xyMinMax[GUI_COORD_Y].Min;
    yMax = xyMinMax[GUI_COORD_Y].Max;
  } else {
    yMax = xyMinMax[GUI_COORD_Y].Min;
    yMin = xyMinMax[GUI_COORD_Y].Max;
  }
  /* Execute the state machine which reads the touch */
  //switch (ReadState) {
  //case 0:
    yPhys = TOUCH_X_MeasureY();
    //TOUCH_X_ActivateY();  /* repare X- measurement */
    //ReadState++;
    //break;
  //default:
    xPhys = TOUCH_X_MeasureX();
    //TOUCH_X_ActivateX();  /* repare Y- measurement */
    /* Convert values into logical values */
    #if !GUI_TOUCH_SWAP_XY   /* Is X/Y swapped ? */
      x = xPhys;
      y = yPhys;
    #else
      x = yPhys;
      y = xPhys;
    #endif
    if ((x < xMin) || (x > xMax)  || (y < yMin) || (y > yMax)) {
      _StoreUnstable(-1, -1);
    } else {
      x = _AD2X(x);
      y = _AD2Y(y);
      _StoreUnstable(x, y);
    }
    /* Reset state machine */
    //ReadState = 0;
   // break;
  //}
  #endif /* WIN32 */
}
回复 支持 反对

使用道具 举报

15

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2013-11-2
在线时间
0 小时
发表于 2013-11-6 21:38:10 | 显示全部楼层
照着你这样改了,还是不行,而且我的不知道为什么总是横屏的,竖不过来。你的屏控制芯片是什么啊,你的这个工程好像我用不了
回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
 楼主| 发表于 2013-11-8 09:32:21 | 显示全部楼层
回复【10楼】longdaoyuntai:
---------------------------------
用的好像是AD多少哦,是TI的芯片反正,我的也是横屏,没找到原因
回复 支持 反对

使用道具 举报

7

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2012-11-13
在线时间
12 小时
发表于 2014-1-17 10:49:10 | 显示全部楼层
int  GUI_TOUCH_X_MeasureX(void) {
  tp_dev.scan(1);//扫描

return tp_dev.x;  
}
int  GUI_TOUCH_X_MeasureY(void) {
  tp_dev.scan(1);//扫描

  return tp_dev.y;  
  
}
这样就可以了,不需要修改函数
回复 支持 反对

使用道具 举报

10

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2013-8-17
在线时间
3 小时
发表于 2014-2-16 22:36:44 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子大哥,我用的是mini板的7寸电容屏的例程来移植ucgui的,里面没有这两个函数的相关函数和变量,那我应该怎么弄触摸部分的UCGUI移植 

int  GUI_TOUCH_X_MeasureX(void) { 
  tp_dev.scan(0);//扫描 
//if(tp_dev.sta&TP_PRES_DOWN)Convert_Pos(); 
return tp_dev.x;   


int  GUI_TOUCH_X_MeasureY(void) { 
  tp_dev.scan(0);//扫描 
//if(tp_dev.sta&TP_PRES_DOWN)Convert_Pos(); 
  return tp_dev.y;     
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-2-16 23:35:55 | 显示全部楼层
移植战舰板的ucGUI过来吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-26 19:44:46 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
站长好
我移植的板子不是大哥的板子,但参考的是mini板的ucGUI的移植,芯片是STM32F103RBT6,TFT是ili9320,我想在TFT上实现对话框界面,触摸对话框里的OK按钮就退出对话框。现在出现的错误是一、按照附件中的代码去直接就黑屏;二、要是不在定时器里调用GUI_TOUCH_Exec对话框界面就能显示出来;三、要是我注释掉对话框创建函数GUI_ExecDialogBox,在定时器里调用GUI_TOUCH_Exec,利用printf在中断中可以打印出来触摸的坐标。我测试过了定时器好使
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-26 23:19:52 | 显示全部楼层
回复【15楼】深海:
---------------------------------
ucGUI我也不熟哦.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-27 10:23:19 | 显示全部楼层
回复【2楼】TDB:
---------------------------------
大神好,望大神帮我分析一下啊!小弟不胜感激,谢谢了
我移植的板子不是mini的板子,是神舟一号的板子,我想在TFT上实现对话框界面,触摸对话框里的OK按钮就退出对话框。现在出现的错误是一、按照附件中的代码去直接就黑屏;二、要是不在定时器里调用GUI_TOUCH_Exec对话框界面就能显示出来;三、要是我注释掉对话框创建函数GUI_ExecDialogBox,在定时器里调用GUI_TOUCH_Exec,利用printf在中断中可以打印出来触摸的坐标。查了好久了,不知道什么原因?
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-27 11:36:55 | 显示全部楼层
回复【16楼】正点原子:
---------------------------------
哦,谢谢回帖
回复 支持 反对

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-6-29
在线时间
4 小时
发表于 2014-11-8 17:43:43 | 显示全部楼层
请问LZ这个是啥意思啊。。。坐标的AD值是校准过的。。里面填的那几个数是怎么得来的了。。
回复 支持 反对

使用道具 举报

20

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2015-10-2
在线时间
59 小时
发表于 2017-1-17 11:32:47 | 显示全部楼层
正点原子 发表于 2014-2-16 23:35
移植战舰板的ucGUI过来吧

原子哥 你好 我直接下载战舰V2的例程但是 触摸屏一直有问题,就是我上下滑动 鼠标箭头左右移动,我改了镜像也不行。请问这是什么情况
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 20:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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