发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
打印
[活动专区]

【AT-START-F405测评】GUI 显示雷达结果

[复制链接]
4021|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 [鑫森淼焱垚] 于 2024-5-16 16:34 编辑

【AT-START-F405测评】GUI 显示雷达结果

目的

书接上文,串口通信获取到了雷达检测结果,这里我重点关注距离信息 range_value。现在需要把信息显示到GUI上。奈何时间有限,没有精力做一个精美的UI,先用标签把距离信息显示出来吧。

UI 初始化


初始化代码如下,非常简陋,标签 label_range 显示距离信息,标签 label_url 显示网址信息。


何时更新UI

鉴于我之前对其他UI设计的经验,一般UI更新都在一个GUI线程中,其他线程需要更新UI都是发消息给UI线程,而不是在其他线程中直接操作UI代码。那么 LVGL 中是如何实现其他线程更新GUI的呢?
查找资料得知,LVGL 可以给对象设置 event,然后其他线程可以在合适的时间发送 event 给指定的对象,就可以了。

更新UI的实现

在GUI代码中,注册一个自定义的事件,其实就是一个 uint32_t 数据类型的数值,然后给指定的对象绑定这个事件,并指定回调函数就可以了。


这里给 label_range 绑定了事件处理函数 lbl_range_value_update_event(),绑定的特定的事件类型就是刚刚注册的 EVT_CHANGE_TEXT。
只需要在其他子线程中发型 EVT_CHANGE_TEXT 事件即可。

发送事件

接上一个帖子,获取到雷达检测数据,调用 lv_event_send() 发送数据到指定的事件类型 EVT_CHANGE_TEXT 就可以了。


结果展示

献丑了,巨丑的GUI。
TODO: 下个版本优化,SquareLine Studio 设计一个漂亮点的GUI。


使用特权

评论回复

打赏榜单

ArteryMCU 打赏了 50.00 元 2024-06-07
理由:[F405开发板评测活动]内容优质

沙发
呐咯密密| | 2024-5-21 13:23 | 只看该作者
期待图形化的显示

使用特权

评论回复
发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

98

帖子

0

粉丝