OpenEdv-开源电子网

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

mini板跑ucos ucgui 控件使用 删除控件的问题

[复制链接]

6

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-10-19
在线时间
0 小时
发表于 2014-12-31 15:41:00 | 显示全部楼层 |阅读模式
5金钱
实现的目的:
               显示进度条控件2S,之后删除该控件(在任务TaskGui_Demo实现)。

实验最终结果:LCD能显示进度条控件,删除不了控件,求大神指点。
程序设定了四个任务:    1.TaskLed(LED控制)
                                  2.TaskLed1(控制)
                                  3.TaskGui_Demo(GUI任务),
                                  4.TaskGui_Exec(回调函数使用)

主要代码如下
[mw_shl_code=c,true]//任务1 //控制DS0的亮灭. void TaskLed(void *pdata) { INT8U err; while(1) { LED0=!LED0; OSTimeDlyHMSM(0,0,0,Con_time); } } //任务2 //控制DS1的亮灭. void TaskLed1(void *pdata) { int val_x=0,val_y=0; int keystat=0; //OSSemPost(Fun_Semp); //OSSemPend(Fun_Semp,0,&err); while(1) { LED1=!LED1; OSTimeDlyHMSM(0,0,0,100); } } void TaskGui_Demo(void *pdata) { U32 val=0,Key=0; BUTTON_Handle hButton; PROGBAR_Handle hProgBar; //GUI_DispStringAt("progress bar",100,20); hProgBar = PROGBAR_Create(100, 40, 100, 20, WM_CF_SHOW); //GUI_Delay(10); while(1) { OSTimeDlyHMSM(0,0,0,2000); PROGBAR_Delete(hProgBar); OSTimeDlyHMSM(0,0,0,100); } } void TaskGui_Exec(void *pdata) { while(1) { GUI_Exec(); GUI_X_ExecIdle(); //GUI_TOUCH_Exec(); //监视和刷新触摸板 //LED0=!LED0; //OSTimeDlyHMSM(0,0,0,500); } }[/mw_shl_code]
TaskGui_Demo:调用PROGBAR_Create创建进度条,
                       
OSTimeDlyHMSM(0,0,0,2000);2S后
                       
PROGBAR_Delete(hProgBar);删除控件
LCD能显示进度条控件,就是没有删除控件,求大神指点。
源代码在附件上。

移植.rar

1.62 MB, 下载次数: 94

最佳答案

查看完整内容[请看2#楼]

回复【4楼】wuguobo5439: --------------------------------- GUI_SetBkColor是设置背景颜色,不是设置桌面窗口颜色,用WM_SetDesktopColor; 设置桌面窗口颜色-->创建进度条-->GUI_Exce-->延时2s-->delete 进度条-->GUI_Exce
没什么歌星
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2013-3-18
在线时间
82 小时
发表于 2014-12-31 15:41:01 | 显示全部楼层
回复【4楼】wuguobo5439:
---------------------------------
GUI_SetBkColor是设置背景颜色,不是设置桌面窗口颜色,用WM_SetDesktopColor;
设置桌面窗口颜色-->创建进度条-->GUI_Exce-->延时2s-->delete 进度条-->GUI_Exce
回复

使用道具 举报

3

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2013-3-18
在线时间
82 小时
发表于 2014-12-31 16:41:11 | 显示全部楼层

你得先初始化桌面窗口的颜色,要不然刷新后实际上删除了,但是还画在屏上。你在while(1)里重复调用删除控件是有问题的。你的GUI_Exce任务没有延时,会造成低优先级的任务无法运行。多看看例程,程序的运行时序一定要清晰

回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2014-12-31 22:13:18 | 显示全部楼层
建立一个背景回调函数,这个回调函数负责刷新背景。再有就是1楼说的这两个问题。
开往春天的手扶拖拉机
回复

使用道具 举报

6

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-10-19
在线时间
0 小时
 楼主| 发表于 2014-12-31 22:36:06 | 显示全部楼层
回复【2楼】holy404290384:
---------------------------------
根据你的意思我都调用了GUI_SetBkColor(GUI_RED);,while(1)里重复调用删除控件放到前面,while(1)就延时,可还是不行,把和在GUI_Exce加入了颜色,可怎么还是延时,都是按照UCGUI手册上的资料上改的。这是什么原因?
没什么歌星
回复

使用道具 举报

6

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-10-19
在线时间
0 小时
 楼主| 发表于 2014-12-31 22:47:40 | 显示全部楼层
回复【3楼】zuozhongkai:
---------------------------------
首先1楼说的两个问题我都试过了,还是不行。
最低优先级的任务已经调用了这个了GUI_Exec();,根据UCGUI手册这个函数的作用是运行回调函数(所有的工作),已经包括了背景处理了吧。
没什么歌星
回复

使用道具 举报

6

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-10-19
在线时间
0 小时
 楼主| 发表于 2015-1-5 13:43:39 | 显示全部楼层
回复【6楼】holy404290384:
---------------------------------
恩,我试过了,OK了。。。。。,谢谢。
没什么歌星
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 12:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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