本帖最后由 anobodykey 于 2018-5-30 23:20 编辑 最近littlevGL的帖子多了一些,我也要凑一下热度,不晓得最近DISC-F769板卡能不能侥幸获得呢。学习littlevGL最好的方法当然是从例程开始学起,移植也是在你的板卡已经实现了LCD显示的基础上实现的,对于不支持lcd或没有屏的朋友来说想要学习littlevGL当然是安装模拟器了,官网介绍的PC端模拟器支持三大平台,采用跨平台的eclipse 来开发,由于提供了源码,因此,即使不使用eclipse可很容易实现。这里我使用codeblock +mingw32来编译pc_simulator,首先是下载sdl2和codeblock这里就不多介绍,就是安装软件而已。下载pc_simulator源码,目录列表如下: r) C3 f8 o* F& d5 [ 这里新建了prj目录来存放codeblock工程,打开codeblock,新建控制台程序,如下: l& j& H) o: G( H( C, p 新建完成后会自动生成一个main.c文件,删除它,重新添加源文件,右键工程->add files recurvisely会谈出对话框选择pc_simulator,codeblock会自动添加所有源文件,结构如下: 接下来添加链接选项,工程右键->build options,如下: ,此外还需设置一下头文件路径,如下: 至此,环境就设置完毕,编译我们的源码,可以正常编译通过,这里还要把sdl2.dll文件放到我们的bin/debug路径下,运行,满心欢喜地要迎接时发现出了问题。。。 这个问题找了好久,最后发现问题是定位到了lv_drivers/display/monitor.c中sdl_refr接口中的SDL_CreateRenderer语句,通过百度可知该接口如下: 三个参数只有第三个参数是有问题的,用于选择渲染模式为0时是使用得硬件加速,因为我用的windows是使用得虚拟机,所以不确定非虚拟机是否会有此问题,这里我把第三个参数改为软件渲染,再次编译运行,正常了4 f F$ X# S+ p4 L6 a 现在可以学习littlevGL的API啦。! g% ]0 U5 g& M: Q $ m% x3 e9 R/ z# C6 x' N |
union {( ?. G w2 o3 l7 |) x& p! i- M% d B
lv_point_t point; /*For LV_INDEV_TYPE_POINTER the currently pressed point*// ]* \. w2 ~; K4 K' G
uint32_t key; /*For LV_INDEV_TYPE_KEYPAD the currently pressed key*/
uint32_t btn; /*For LV_INDEV_TYPE_BUTTON the currently pressed button*/
};4 f) g( ]# T( ]% \
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);. m+ x0 p( O5 ?$ S' ?
编译器提示structure has no member named `key',楼主怎么解决这问题的。0 y! R3 e. a8 d) J# x5 C0 {9 }
结构体中的联合体没有定义变量,只写了变量类型,这种方式 code block好像不支持的 ?
没有遇到你说的情况那,我的codeblock就是最新的17.12
你有微信吗?想咨询下
版本应该就是codeblock自带的,没太注意版本号,你可以把你的工程传上来,我瞅一下有什么不同