OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖
楼主: xiaomengyichen

在STM32上移植ucGUI之触摸屏

[复制链接]

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-7-20 10:33:37 | 显示全部楼层
回复【51楼】Along:
---------------------------------
是一直不动,而且我把你的程序下载进去屏幕黑屏,没任何反应,我的是战舰,触屏什么的都是好的,我觉得那四个参数即使有偏差也只会引起指针跟触摸的位置不同,而不会导致不动的情况啊,
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

32

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2013-12-30
在线时间
0 小时
发表于 2014-7-20 10:38:36 | 显示全部楼层
回复【52楼】周小样:
---------------------------------
我没有传过什么程序啊,那你应该是触摸屏没加上去,看看是哪一步出错了
回复 支持 反对

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-7-20 11:25:58 | 显示全部楼层
回复【53楼】Along:
---------------------------------
如果我直接在GUI_TOUCH_X_MeasureX()函数中return一个大于0 的常数,比如,789,这是不是意味着程序执行后鼠标将会移到对应的位置上去,而不是左上角了?
回复 支持 反对

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-7-20 11:30:09 | 显示全部楼层
回复【53楼】Along:
---------------------------------
如果我直接在int  GUI_TOUCH_X_MeasureX(void)和int  GUI_TOUCH_X_MeasureY(void)中return一个大于0的常数,比如789,那么是不是说此时鼠标应该在另一个位置,而不是左上角,我是这样想的,但是经验证,还是在原来的位置,很郁闷
回复 支持 反对

使用道具 举报

32

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2013-12-30
在线时间
0 小时
发表于 2014-7-20 14:54:42 | 显示全部楼层
回复【55楼】周小样:
---------------------------------
怎么能返回一个常数呢?

我的是

int  GUI_TOUCH_X_MeasureX(void) {
  u16 x,y;
  TP_Read_XY(&x,&y);
  return x;
}

int  GUI_TOUCH_X_MeasureY(void) {
  u16 x,y;
  TP_Read_XY(&x,&y);
  return y;
}


你看看你的LCD触摸驱动文件中读取X,Y值得函数是什么,换一下就行了
回复 支持 反对

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-7-21 17:24:41 | 显示全部楼层
回复【56楼】Along:
---------------------------------函数没有错,我在这个函数里面还用printf打印在串口上面,返回的x,y的值确实在随着触摸的改变而改变,但是鼠标就是挺在左上角不动,我的没带操作系统,直接将GUI_TOUCH_Exec();放在了while循环中,应该不是这个问题吧
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-26 17:08:04 | 显示全部楼层
回复【57楼】周小样:
---------------------------------
 楼上吧友的问题解决没啊?我也遇见同样的问题, 苦恼好多天, 求解
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-26 17:15:40 | 显示全部楼层
回复【4楼】xiaomengyichen:
---------------------------------
大师!我下载你的程序到我的mini板上,花屏,不好使,是程序问题么  谢谢  
我移植了一下,按照您的设置步骤,就是现实一个按钮,结果就不行,只要调用GUI_TOUCH_Exec就黑屏,连按钮对话框显示都不行了,我在GUI_TOUCH_Exec中读取转换后的坐标,可以在串口中打印出来,困扰好多天了,求解,不胜感激
下边时我的主函数部分
tatic const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
    { FRAMEWIN_CreateIndirect,  "TCR",               0,                       0,  0,  311,225,FRAMEWIN_CF_MOVEABLE,0},
    { BUTTON_CreateIndirect,    "OK",                GUI_ID_OK,          100,78, 80, 37, 0,0},
    { TEXT_CreateIndirect,      "zcx",               GUI_ID_TEXT0,            61, 138,149,27, 0,0}
};



/*****************************************************************
**      FunctionName:void aintDialog(WM_MESSAGE * pMsg)
**      Function: to initialize the Dialog items
**                                                      
**      call this function in _cbCallback --> WM_PAINT
*****************************************************************/

void aintDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;

}



/*****************************************************************
**      FunctionName:void InitDialog(WM_MESSAGE * pMsg)
**      Function: to initialize the Dialog items
**                                                      
**      call this function in _cbCallback --> WM_INIT_DIALOG
*****************************************************************/

void InitDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    //
    //FRAMEWIN
    //
    FRAMEWIN_SetTextColor(hWin,0x0000ff);
    FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0);
    FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1);
    FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2);
    //
    //GUI_ID_BUTTON0
    //
    BUTTON_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_OK),BUTTON_CI_UNPRESSED,0x0000ff);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0),0x0000ff);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT0),GUI_TA_VCENTER|GUI_TA_CENTER);

}




/*********************************************************************
*
*       Dialog callback routine
*/
static void _cbCallback(WM_MESSAGE * pMsg) 
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId) 
    {
        case WM_PAINT:
            aintDialog(pMsg);
            break;
        case WM_INIT_DIALOG:
            InitDialog(pMsg);
            break;
        case WM_KEY:
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) 
            {
                case GUI_KEY_ESCAPE:
                    GUI_EndDialog(hWin, 1);
                    break;
                case GUI_KEY_ENTER:
                    GUI_EndDialog(hWin, 0);
                    break;
            }
            break;
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc); 
            NCode = pMsg->Data.v;        
            switch (Id) 
            {
                case GUI_ID_OK:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;
                case GUI_ID_CANCEL:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;

            }
            break;
        default:
            WM_DefaultProc(pMsg);
    }
}


int main(void)
{
u16 cnt=0; 

WM_HWIN hWin_son_A, hWin_son_B;

//GUI_MEMDEV_Handle hMem=GUI_MEMDEV_Create(0,0,319,239);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
USART1_GPIO_Config();
USART1_Config();
NVIC_Config();
GPIO_SetBits(GPIOA,GPIO_Pin_2);//设置LED的PA2为1

Time2_Init();//定时器2初始化
ADS7843_Init();//触摸初始化
Wait_Delay(4000000);

GUI_Init(); //LCD及GUI初始化
GUI_CURSOR_Show();
    WM_SetDesktopColor(GUI_WHITE);      /* Automacally update desktop window */
    GUI_DispStringAt("Made By CMD!",10,10);
    //WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */

    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
/* while(1)
{
Wait_Delay(4000000);
GUI_TOUCH_Exec();
}
 */
}
定时器部分
void TIM2_IRQHandler(void) //TIM2中断服务函数
{
    int i;
if(TIM_GetFlagStatus(TIM2,TIM_FLAG_Update)!=RESET)
{       

TIM_ClearFlag(TIM2,TIM_FLAG_Update);   //清标志
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除更新中断标志
GPIO_ResetBits(GPIOA,GPIO_Pin_3);//将LED3灯点亮
for(i=0;i<=800000;i++); //延时一会,不然看不到灯亮
GPIO_SetBits(GPIOA,GPIO_Pin_3);
//GUI_TOUCH_Exec();

}
}
回复 支持 反对

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-7-26 19:19:31 | 显示全部楼层
回复【59楼】深海:
---------------------------------
我把转换之后之后的坐标值打印出来都正常,可箭头就是不动,目前也很苦恼,唉,你的箭头能动么
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-26 19:27:20 | 显示全部楼层
回复【60楼】周小样:
---------------------------------
不行,我的尖头动不了,并且连触摸都没移植成功
回复 支持 反对

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-7-26 19:50:56 | 显示全部楼层
回复【61楼】深海:
---------------------------------
我觉得首先应该把箭头这个弄好,唉,我实在不知道该怎么去调了
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-27 16:21:22 | 显示全部楼层
回复【48楼】Along:
---------------------------------
大神好,我看你的回复,你的移植ucGUI触摸箭头能动,能响应对话框中的控件吗?我的移植mini板的,下载进去就是花屏,我移植的箭头不能动,不能响应对话框中的控件,苦恼小弟好多天了,还望大神指点一下啊!小弟不胜感激
回复 支持 反对

使用道具 举报

32

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2013-12-30
在线时间
0 小时
发表于 2014-7-27 16:51:39 | 显示全部楼层
回复【63楼】深海:
---------------------------------
我不是什么大神啊,我一直的可以响应控件。你的问题我还没能力回答,你去看下论坛牛人发的帖子,一整套的。
给你链接
http://openedv.com/posts/list/36299.htm
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-29 11:20:11 | 显示全部楼层
回复【64楼】Along:
---------------------------------
谢谢回帖
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-29 11:23:04 | 显示全部楼层
回复【62楼】周小样:
---------------------------------
我把一楼的例程下载进去后是不行的,最后发现不同MINI板屏幕驱动不一样,我的是MINIV1.9的,一楼的可能是原子哥后边又出的MINI板,所以我把LCD驱动改了一下,结果就有行了,触摸也好使了
回复 支持 反对

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-7-29 19:32:06 | 显示全部楼层
回复【66楼】深海:
---------------------------------
我使用的战舰,驱动都是用的原子战舰例程里面的驱动,按理说,驱动应该没有问题,恭喜你移植成功!!
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-29 20:19:04 | 显示全部楼层
回复【67楼】周小样:
---------------------------------
谢谢,你检查一下你的定时器,我看网上说定时器设置,1s调用GUI_TOUCH_Exec()至少100次
回复 支持 反对

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-7-29 21:59:04 | 显示全部楼层
回复【68楼】深海:
---------------------------------
亲,问题刚刚已经解决了,谢谢大家啊
回复 支持 反对

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-7-11
在线时间
0 小时
发表于 2014-7-29 22:26:54 | 显示全部楼层
回复【69楼】周小样:
---------------------------------
恭喜,恭喜,共同进步
回复 支持 反对

使用道具 举报

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
发表于 2014-8-2 23:13:04 | 显示全部楼层
回复【69楼】周小样:
---------------------------------
你是怎么解决的,我的是战舰开发板 9341的屏幕,
我现在也是箭头在左上角不动,

我单步跟踪到
static void _PID_Load(void) {
  #if (GUI_WINSUPPORT)
    WM_pfHandlePID = WM_HandlePID;
  #endif
}
处发现这个条件编译是成立的,
执行 WM_pfHandlePID = WM_HandlePID;
但是不执行WM_HandlePID的函数体,这是怎么回事
回复 支持 反对

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-8-4 15:39:56 | 显示全部楼层
回复【71楼】wang12zhe:
---------------------------------
你试试加这两句 GUI_TOUCH_Exec(); 
WM_Exec(); //
回复 支持 反对

使用道具 举报

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
发表于 2014-8-4 16:08:45 | 显示全部楼层
回复【72楼】周小样:
---------------------------------
我的问题已经解决了,现在触摸屏一切正常。
回复 支持 反对

使用道具 举报

16

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2013-11-23
在线时间
6 小时
发表于 2014-10-26 17:38:47 | 显示全部楼层
回复【4楼】xiaomengyichen:
---------------------------------
哥们,你的这段程序能下载到战舰板上么?为啥我的直接就黑屏了
回复 支持 反对

使用道具 举报

10

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2012-8-16
在线时间
13 小时
 楼主| 发表于 2014-10-27 09:20:32 | 显示全部楼层
回复【74楼】DoneMur:
---------------------------------
我移植的时候战舰板还木有出来呢!
暂不做硬件,投身机器学习和数据挖掘。欢迎交流!
回复 支持 反对

使用道具 举报

31

主题

106

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2014-3-11
在线时间
15 小时
发表于 2014-10-28 10:36:22 | 显示全部楼层
mark,,,,,,,,,,,,,,,
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2015-12-25
在线时间
50 小时
发表于 2016-7-5 01:34:12 来自手机 | 显示全部楼层
请问为什么我移植的ucgui鼠标一直不动呢???
回复 支持 反对

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2017-1-7 16:46:45 | 显示全部楼层
楼主,请教一下,每次按下时,PEN中断还是会相应的,这个中断只是为校准时使用吗?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 06:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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