硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2264|回复: 12
收起左侧

[emWin] uCOSII+STemWin通过外部按键切换显示的图片

[复制链接]

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2018-11-21 18:02:36 | 显示全部楼层 |阅读模式
本帖最后由 Allegro_wang 于 2018-11-21 23:55 编辑

uCOSII+STemWin5.28
液晶屏显示几种功能图片,目前暂用IMAGE的方式(分别代表此功能的"开启"与"关闭")
例如:有一张"开"的图片、一张"关"的图片(默认为关),通过指定的按键,第一次按下后,图片显示为"开",第二次按下后显示为"关"
1.关于图片的切换显示不知道用哪种方式实现比较好,BUTTON、ICONVIEW、IMAGE这三种模式哪种更为适合?
开关状态的图片有4组每组2张,分别代表不同功能的开关;还有一组是5张分别代表不同功能。(图片是流位图)



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-11-22 01:21:20 | 显示全部楼层
用按钮的自定义回调函数就行,可以实现各种效果,在我们的新版emWin教程第47章有说明。

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2018-11-22 16:35:18 | 显示全部楼层
本帖最后由 Allegro_wang 于 2018-11-22 16:59 编辑

谢谢!好好看看:第47章 BUTTON-按钮控件自定义回调函数,实现各种按钮效果


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-11-22 17:32:30 | 显示全部楼层
Allegro_wang 发表于 2018-11-22 16:35
谢谢!好好看看:第47章 BUTTON-按钮控件自定义回调函数,实现各种按钮效果

好的,有什么问题再交流。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2018-11-23 13:47:20 | 显示全部楼层
本帖最后由 Allegro_wang 于 2018-11-23 13:56 编辑

按照您提供的思路使用“第47章 用按钮的自定义回调函数就行,可以实现各种效果”
我是通过外部实体按键切换画面的,可以实现我需要的功能:但是:
/*************************************************************************************/
static void _cbButton1(WM_MESSAGE * pMsg)
{
        WM_HWIN  hWin;
        
        hWin  = pMsg->hWin;
        
        switch (pMsg->MsgId)
        {
                case WM_PAINT:                        
                        if (BUTTON_IsPressed(hWin))
                        {
                                GUI_DrawBitmap(&bmJS1, 10, 10);
                        }
                        else
                        {
                                GUI_DrawBitmap(&bmJS0, 10, 10);
                        }
                        break;
                        
                default:
                        BUTTON_Callback(pMsg);
        }
}
/*************************************************************************************/
case WM_KEY:
                        switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
                        {
                                case GUI_KEY_F1:
                                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_JS_0);
                                        if(key_f1==0)
                                                {
                                                        BUTTON_SetPressed(hItem,1);
                                                        key_f1=1;
                                                }
                                        else if(key_f1==1)
                                                {
                                                        BUTTON_SetPressed(hItem,0);
                                                        key_f1=0;
                                                }
                                break;
/*************************************************************************************/
必须使能WM_SetCreateFlags,否则按键切换过程中会出现中间过渡的矩形白块,但是屏幕开启后刷新会变慢
/* 窗口自动使用存储设备 */
WM_SetCreateFlags(WM_CF_MEMDEV);
/*************************************************************************************/
#define GUI_NUMBYTES  42*1024u
/*************************************************************************************/
关闭WM_SetCreateFlags后开机屏幕刷新会变快。但是按键切换时图片就会出现矩形白块的刷新过程
/*************************************************************************************/
硬件配置:STM32F103ZET6 外部8M晶振,
无外部SDRAM,无外部NANFLASH,

ILI9488-3.5液晶屏,
外部独立按键
/*************************************************************************************/
界面说明:
上面3个图标,默认为灰色,当检测到外部按键按下后,图片切换为白色,表示功能开启;
下面1个图标(实际是6个图标)切换时代表不同的功能,这里每次仅显示一个功能图片。

需要显示的基本界面

需要显示的基本界面
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-11-24 03:38:16 | 显示全部楼层
Allegro_wang 发表于 2018-11-23 13:47
按照您提供的思路使用“第47章 用按钮的自定义回调函数就行,可以实现各种效果”
我是通过外部实体按键切 ...

把你的emWin的这部分测试代码发下,我给你在我们的F1板子加9488上面测试下。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2018-11-24 15:58:16 | 显示全部楼层
eric2013 发表于 2018-11-24 03:38
把你的emWin的这部分测试代码发下,我给你在我们的F1板子加9488上面测试下。

必须使能WM_SetCreateFlags,否则按键切换过程中会出现中间过渡的矩形白块,但是开机时屏幕刷新会变慢

外部按键切换图标显示.rar

30.66 KB, 阅读权限: 255, 下载次数: 27

外部按键切换图标显示

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-11-26 02:05:41 | 显示全部楼层
帮你在我们的RA8875屏上面测试了下,没问题

5.gif
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2018-11-26 11:10:11 | 显示全部楼层
本帖最后由 Allegro_wang 于 2018-11-26 11:32 编辑
eric2013 发表于 2018-11-26 02:05
帮你在我们的RA8875屏上面测试了下,没问题

/*************************************************************************************/
现在我遇到的问题是:
使能WM_SetCreateFlags(WM_CF_MEMDEV);,按键切换图标显示是正常的,但是屏幕开机时整体画面刷新会变慢,很明显的看到画面由上到下的刷下来!
/*************************************************************************************/
#define GUI_NUMBYTES  42*1024u
/*************************************************************************************/
关闭WM_SetCreateFlags后开机屏幕刷新会变快。但是按键切换时图片就会出现矩形白块的刷新过程
/*************************************************************************************/

开机刷屏慢但是图标切换没有白框.mp4

13.81 MB, 阅读权限: 255, 下载次数: 28

开机刷屏慢但是图标切换没有白框

开机刷屏快些,图标切换会出现白框.mp4

11.75 MB, 阅读权限: 255, 下载次数: 23

开机刷屏快些,图标切换会出现白色矩形填充

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-11-27 04:03:50 | 显示全部楼层
Allegro_wang 发表于 2018-11-26 11:10
/*************************************************************************************/
现在我遇 ...

你的底层函数16bpp已经做优化了吧
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2018-11-27 17:24:30 | 显示全部楼层
本帖最后由 Allegro_wang 于 2018-11-27 21:27 编辑
eric2013 发表于 2018-11-27 04:03
你的底层函数16bpp已经做优化了吧

发现直接用你demo里面的代码显示图形还是很快,主要应该是因为生成的流位图数据量可能太大了吧?发现你生成的流位图与我生成的不太一样啊!应该显示效果会有损失吧。

图形显示有毛刺

图形显示有毛刺
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107418
QQ
发表于 2018-11-28 02:00:21 | 显示全部楼层
Allegro_wang 发表于 2018-11-27 17:24
发现直接用你demo里面的代码显示图形还是很快,主要应该是因为生成的流位图数据量可能太大了吧?发现你生 ...

开机慢那个没关系,你可以上电后先不要点亮LCD,等显示差不多了点亮,这样效果就好很多了。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2018-12-18 12:14:37 | 显示全部楼层
eric2013 发表于 2018-11-28 02:00
开机慢那个没关系,你可以上电后先不要点亮LCD,等显示差不多了点亮,这样效果就好很多了。

主要是我开机需要显示一个LOGO的图片,然后进入主界面,现在开机过程是等显示差不多了然后打开背光,可以完美躲过刷屏过程,但是当LOGO显示结束切换到主界面时还会看到,有一个由上到下刷的过程,不过很快就过去了!如果外部SRAM是不是会改善这个刷新的问题呢?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-31 06:29 , Processed in 0.200949 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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