硬汉嵌入式论坛

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

[emWin] STemWin Demo解析--SIM_CustomBitmapView使用解析

[复制链接]

10

主题

23

回帖

63

积分

初级会员

积分
63
发表于 2018-7-23 20:39:49 | 显示全部楼层 |阅读模式
本帖最后由 ewrest 于 2018-7-23 22:35 编辑

本次解析的大致思路:
1.准备好图片
2.简化代码 MainTask.c
3.重点读懂 SIMConf.c 文件
4.根据手册明白模拟硬件(手册3.4)
5.模拟器执行文件和bmp放置一起运行
完成

需要准备的工具:
1.模拟器
2.模拟器里的demo
3.模拟器对应的使用手册

模拟器的demo位置:
snipaste_20180723_195655.png
demo源文件:
SIM_CustomBitmapView.zip (307.4 KB, 下载次数: 25)

需要的知识:
对应模拟器版本的使用手册
snipaste_20180723_195525.png

有了之前的准备之后工具后可以进行下一步:
1.解读并简化 demo 中的 MainTask.c/h 文件
1)简化 MainTask.h
直接打开 MainTask.h 发现源文件就只有一个外部声明,故不用简化
void APP_cbKey(int KeyIndex, int State);  // Callback prototype

2)简化 MainTask.c
打开 MainTask.c 后发现文件老长,仔细阅读后代码总体有两部分: 静态部分和核心绘制部分.
①删除静态部分.静态部分是指字体和logo图片,这部分可以直接delete掉,使用系统自带的字体.
图片 : bmSeggerLogo_120x60, 字体: GUI_Font36_AA4, GUI_Font20_AA4
②删除核心部分的内容.核心部分主要为两大块,绘制部分以及事件处理.
绘制主要是: _CreateScale()  _InitAnimContext() _ShowAttitudeIndicator() _DrawScale()
基本上,除去 MainTask() 外,其他的基本为绘制函数.(除去 APP_cbKey() )
③删除核心处理部分代码.
核心处理的代码主要是为与 MainTask() 中, 基本上就是 do while 部分,这里边包含了模拟硬件的处理,这里的应用是比较具体,核心的部分也就是静态变量 _State,
根据这里的处理方式,可以做相应的变通.

这个时候 MainTas.c 就只有这么少东西.
snipaste_20180723_201951.png

2.解读 LCDConf.c ,这个文件就是正常的设置,主要为LCD的大小.

3.解读 SIMConf.c, 这个文件没话说....
设置模拟硬件, 主要函数 SIM_HARDKEY_SetCallback()  和 APP_cbKey);
启用客户自定义图片函数 : SIM_GUI_UseCustomBitmaps()
设置LCD相对于图片的显示位置 : SIM_GUI_SetLCDPos()
设置指定为透明的颜色: SIM_GUI_SetTransColor()
game over, 并无可优化部分.

为了精简工程同时使能模拟器的关闭功能, 将 APP_cbKey() 函数移到 SIMConf.c 出, 同时删除 MainTask.h .
在 APP_cbKey() 中增加 INDEX_END 的处理.
snipaste_20180723_202555.png

最后就这样. 生成好 模拟器.exe 后,需要将 device.bmp device1.bmp 和 exe 文件放在一起,否则会报错:
snipaste_20180723_202848.png

最终的demo:
SIM_CustomBitmapView.7z (2.95 MB, 下载次数: 31)
gitee地址:https://gitee.com/ourran/emWin.git



评分

参与人数 2金币 +120 收起 理由
byccc + 20 很给力!
eric2013 + 100 赞一个!

查看全部评分

回复

使用道具 举报

10

主题

23

回帖

63

积分

初级会员

积分
63
 楼主| 发表于 2018-7-23 22:30:30 | 显示全部楼层
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2018-7-24 01:01:16 | 显示全部楼层
非常感谢楼主分享。
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2018-7-25 10:05:33 | 显示全部楼层
666,感谢分享
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2019-9-17 11:03:41 | 显示全部楼层
没看到客制的图片~
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2019-9-17 22:48:20 | 显示全部楼层
不好意思~没把图片放到执行目录下~碰到一个问题,只识别了8个按键~不识别第9个按键~
回复

使用道具 举报

9

主题

81

回帖

113

积分

初级会员

积分
113
发表于 2019-9-18 07:33:15 | 显示全部楼层
楼主,请教:如何实现某个按键结束仿真,或者说关闭程序呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 03:32 , Processed in 0.460682 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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