搜索
查看: 12738|回复: 15

[原创] littlevGL Windows PC模拟器

[复制链接]

该用户从未签到

20

主题

1130

帖子

125

蝴蝶豆

论坛元老

最后登录
2019-5-4
发表于 2018-5-30 23:19:03 | 显示全部楼层 |阅读模式
本帖最后由 anobodykey 于 2018-5-30 23:20 编辑

最近littlevGL的帖子多了一些,我也要凑一下热度,不晓得最近DISC-F769板卡能不能侥幸获得呢。学习littlevGL最好的方法当然是从例程开始学起,移植也是在你的板卡已经实现了LCD显示的基础上实现的,对于不支持lcd或没有屏的朋友来说想要学习littlevGL当然是安装模拟器了,官网介绍的PC端模拟器支持三大平台,采用跨平台的eclipse 来开发,由于提供了源码,因此,即使不使用eclipse可很容易实现。这里我使用codeblock +mingw32来编译pc_simulator,首先是下载sdl2和codeblock这里就不多介绍,就是安装软件而已。下载pc_simulator源码,目录列表如下:
1.JPG
这里新建了prj目录来存放codeblock工程,打开codeblock,新建控制台程序,如下:
2.JPG
新建完成后会自动生成一个main.c文件,删除它,重新添加源文件,右键工程->add files recurvisely会谈出对话框选择pc_simulator,codeblock会自动添加所有源文件,结构如下:
3.JPG
接下来添加链接选项,工程右键->build options,如下:
4.JPG
,此外还需设置一下头文件路径,如下:
5.JPG
至此,环境就设置完毕,编译我们的源码,可以正常编译通过,这里还要把sdl2.dll文件放到我们的bin/debug路径下,运行,满心欢喜地要迎接时发现出了问题。。。
6.JPG
这个问题找了好久,最后发现问题是定位到了lv_drivers/display/monitor.c中sdl_refr接口中的SDL_CreateRenderer语句,通过百度可知该接口如下:
7.JPG
8.JPG
三个参数只有第三个参数是有问题的,用于选择渲染模式为0时是使用得硬件加速,因为我用的windows是使用得虚拟机,所以不确定非虚拟机是否会有此问题,这里我把第三个参数改为软件渲染,再次编译运行,正常了
10.JPG
现在可以学习littlevGL的API啦。

回复

使用道具 举报

  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1182

    主题

    4967

    帖子

    1

    蝴蝶豆

    论坛元老

    最后登录
    2020-3-17
    发表于 2018-5-31 09:12:05 | 显示全部楼层
    支持下
    回复

    使用道具 举报

    该用户从未签到

    22

    主题

    119

    帖子

    1

    蝴蝶豆

    中级会员

    最后登录
    2019-11-6
    发表于 2018-6-8 17:19:52 | 显示全部楼层
    这个帖子很到位额,楼主辛苦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26

    主题

    565

    帖子

    85

    蝴蝶豆

    金牌会员

    最后登录
    2021-3-19
    发表于 2018-6-13 11:50:17 | 显示全部楼层
    谢谢楼主,这下没有屏也可以先学习下了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    163

    帖子

    9

    蝴蝶豆

    高级会员

    最后登录
    2021-4-30
    发表于 2018-6-15 11:27:16 | 显示全部楼层
    学习了
    回复

    使用道具 举报

    该用户从未签到

    18

    主题

    234

    帖子

    4

    蝴蝶豆

    金牌会员

    最后登录
    2021-1-9
    发表于 2018-7-1 09:44:50 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    47

    帖子

    0

    蝴蝶豆

    高级会员

    最后登录
    2019-4-30
    发表于 2018-7-16 22:45:13 | 显示全部楼层
    最近也发现了这款gui
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    6

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2020-8-26
    发表于 2018-8-27 14:42:14 | 显示全部楼层
    typedef struct {
        union {
            lv_point_t point;      /*For LV_INDEV_TYPE_POINTER the currently pressed point*/
            uint32_t key;          /*For LV_INDEV_TYPE_KEYPAD the currently pressed key*/
            uint32_t btn;          /*For LV_INDEV_TYPE_BUTTON the currently pressed button*/
        };
        lv_indev_state_t state;    /*LV_INDEV_EVENT_REL or LV_INDEV_EVENT_PR*/
        void *user_data;           /*'lv_indev_drv_t.priv' for this driver*/
    }lv_indev_data_t;

        data->key = keycode_to_ascii(last_key);
    编译器提示structure has no member named `key',楼主怎么解决这问题的。
    结构体中的联合体没有定义变量,只写了变量类型,这种方式 code block好像不支持的 ?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    6

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2020-8-26
    发表于 2018-8-27 16:05:37 | 显示全部楼层
    请问楼主你的mingw32 是什么版本的,怎么我这边用code blocks编译后不支持匿名结构体的?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    1130

    帖子

    125

    蝴蝶豆

    论坛元老

    最后登录
    2019-5-4
     楼主| 发表于 2018-8-27 19:36:16 | 显示全部楼层
    jack-406837 发表于 2018-8-27 16:05
    请问楼主你的mingw32 是什么版本的,怎么我这边用code blocks编译后不支持匿名结构体的? ...

    没有遇到你说的情况那,我的codeblock就是最新的17.12
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-19 11:49 , Processed in 0.183318 second(s), 46 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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