0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LVGL前台程序开发相关操作

瑞萨MCU小百科 来源:瑞萨MCU小百科 2025-01-17 12:43 次阅读

13.4.4 实现Modbus RTU读操作

要使用libmodbus操作Modbus RTU传感器,需要做的事情有2个:

创建modbus_t:调用“modbus_new_rtu”、“modbus_connect”

调用“modbus_read_”、“modbus_write_”开头的函数

对于多个“点”,它们可能使用同一个“modbus_t”。所以需要先判断:如果已经有了对应的“modbus_t”,就无法再次创建。

以“读点”为例,代码在“modbus_client.c”里,如下:

f42999aa-d48c-11ef-9310-92fbcf53809c.png

其中“get_modbus_ctx”函数如下:

f447d80c-d48c-11ef-9310-92fbcf53809c.png

13.4.5 实现Modbus RTU写操作

代码在“modbus_client.c”里,如下:

f4791534-d48c-11ef-9310-92fbcf53809c.png

13.4.6 实现Modbus TCP操作

Modbus TCP的操作跟Modbus RTU的操作时同一套代码,在如下函数中根据port_info确定是创建什么类型的 modbus_t结构体:

f4aa6616-d48c-11ef-9310-92fbcf53809c.png

13.4.7 实现OTA升级

传感器升级设计各个传感器内部的实现,后台程序(控制中心)只是给出了接口

前台程序在如下界面中,把如下信息:固件文件名、设置的端口信息、升级哪个设备,发送给后台程序(控制中心):

f4d4d45a-d48c-11ef-9310-92fbcf53809c.png

发送的信息存为如下结构体:

f4ef5eb0-d48c-11ef-9310-92fbcf53809c.png

然后使用如下函数发起RPC调用:

f4f8dcc4-d48c-11ef-9310-92fbcf53809c.png

后台程序(控制中心)对应的代码如下:

f51079f6-d48c-11ef-9310-92fbcf53809c.png

在实现真正的传感器升级时,前台程序要知道升级进度,它可以调用如下函数发出RPC请求:

f5276044-d48c-11ef-9310-92fbcf53809c.png

后台程序(控制中心)对应的代码如下:

f5403862-d48c-11ef-9310-92fbcf53809c.png

13.5 LVGL前台程序开发

源码为:

f54da1a0-d48c-11ef-9310-92fbcf53809c.png

我们要解析的代码基本都在这个文件里:

“demo_lv_modbus_toollv_100ask_modbus_toolsrclv_modbus_tool.c”。

13.5.1 程序流程

LVGL前台程序的源码里,关键点有两个:

如何布局、创建各类控件

它们的回调函数

1.布局的重要概念

布局、创建控件时,有一个“parent”的概念。可以认为“parent”是一个“容器”,在上面可以继续创建各个控件。

比如下图中,控件1对应绿色背景的区域,控件2对应大红框的区域,控件1、控件2都是在同一个“parent”上创建处理的。这个“parent”是整个屏幕区域。

f5718c3c-d48c-11ef-9310-92fbcf53809c.png

对于控件1,它也可以作为“parent”,在它上面有可以继续创建按钮:“+”按钮、“Upgrade”按钮、“MQTT Setting”按钮:

f585a938-d48c-11ef-9310-92fbcf53809c.png

对于控件2,它也可以作为“parent”,在它上面有可以继续创建各类控件:

f58e8cec-d48c-11ef-9310-92fbcf53809c.png

表示一个点时,界面如下。它本身又可以作为一个 parent,在里面继续绘制各类控件:

f5a0c632-d48c-11ef-9310-92fbcf53809c.png

2.控件的回调函数

当我们点击某个按钮时,会有对应的函数被调用,这就是它的回调函数。在回调函数里,我们可以弹出对话框,可以使用RPC读写传感器。

3.main函数

main函数在“demo_lv_modbus_toolmain.c”中,代码如下:

f5b9f26a-d48c-11ef-9310-92fbcf53809c.png

13.5.2 使用屏幕和鼠标

LVGL对基于Framebuffer的屏幕、鼠标的支持很完善,只需要提供设备节点即可。代码如下:

f5e5746c-d48c-11ef-9310-92fbcf53809c.png

13.5.3 创建初始界面

main函数里调用“lv_modbus_tool”,就开始创建界面了。它的代码在“demo_lv_modbus_toollv_100ask_modbus_toolsrclv_modbus_tool.c”中。

1.第1个区域的创建

第1个区域指:

f61339ba-d48c-11ef-9310-92fbcf53809c.png

第1步:以整个屏幕为parent,创建出控件1。

第2步:以控件1为parent,创建出左边的3个控件。

代码如下:

f61d7f9c-d48c-11ef-9310-92fbcf53809c.png

2.第2个区域的创建

第2个区域指:

f6336262-d48c-11ef-9310-92fbcf53809c.png

代码如下:

f64c05c4-d48c-11ef-9310-92fbcf53809c.png

3.“点”的创建

LVGL前台程序运行时,会使用RPC调用获得点的信息。对于每个点,都会创建出类似下面的控件:

f664c460-d48c-11ef-9310-92fbcf53809c.png

代码如下:

f671bb5c-d48c-11ef-9310-92fbcf53809c.png

add_new_item函数是核心代码,单独讲解。

13.5.4 add_new_item函数解析

1.代码里层级的注释

add_new_item函数里,创建了多层控件。在代码的注释里,怎么体现这些一层又一层的嵌套关系呢?使用类似“[0]、[1]”表示第1层,使用“[1-0]、[1-1]”表示第2层。

在使用“add_new_item”函数创建如下控件时,理解了注释里的数字,更容易理解代码:

f6914c7e-d48c-11ef-9310-92fbcf53809c.png

最底层,表示“点”的整个区域,它没有数字注释。比如下面的cont2_x,它对应下图红框的区域(忽略里面的内容):

f69f3f14-d48c-11ef-9310-92fbcf53809c.png

cont2_x作为parent,作为底层,在上面创建了4个“child”。这些“child”的代码注释是“[0]、[1]、[2]、[3]”,如下:

“[0]”对应的控件:

f6abad26-d48c-11ef-9310-92fbcf53809c.png

“[1]”对应的控件:

f6be8c02-d48c-11ef-9310-92fbcf53809c.png

“[1-0]”对应的控件:

f6df327c-d48c-11ef-9310-92fbcf53809c.png

2.代码分析

add_new_item函数非常庞大,把源码和图案进行对比,才容易理解。

第1步,划分区域得到cont2_x,如下:

f6fce344-d48c-11ef-9310-92fbcf53809c.png

第2步,在cont2_x里继续划分,得到cont2_x_1,如下:

f716bb16-d48c-11ef-9310-92fbcf53809c.png

第3步,在cont2_x_1里添加按钮、复选框,代码如下:

f72e9308-d48c-11ef-9310-92fbcf53809c.png

以后的操作是类似的,不再赘述。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2553

    文章

    51481

    浏览量

    757073
  • MODBUS
    +关注

    关注

    28

    文章

    1825

    浏览量

    77370
  • 程序开发
    +关注

    关注

    0

    文章

    30

    浏览量

    10342
  • LibModbus
    +关注

    关注

    0

    文章

    10

    浏览量

    7270
  • LVGL
    +关注

    关注

    1

    文章

    91

    浏览量

    3140

原文标题:LVGL前台程序开发相关操作 - RZ MPU工业控制教程连载(51)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HMI-Board开发板工程在添加新组件时LVGL组件会报错的解决办法

    在使用HMI-Board开发开发lvgl的GUI界面设计时,可以直接在官方提供的lvgl的demo中开发,这样就可以省去
    的头像 发表于 09-13 16:17 1652次阅读
    HMI-Board<b class='flag-5'>开发</b>板工程在添加新组件时<b class='flag-5'>LVGL</b>组件会报错的解决办法

    LVGL开发入门教程

    LVGL(Light and Versatile Graphics Library)是一个开源的嵌入式图形库,由Gábor Kiss-Vámosi于2016年创建,遵守MIT协议。目前由来自世界各地的志愿者共同维护和开发
    的头像 发表于 01-03 15:23 1976次阅读
    <b class='flag-5'>LVGL</b><b class='flag-5'>开发</b>入门教程

    开发第1个LVGL程序与实现按键操作

    开发第1个LVGL程序与实现按键操作
    的头像 发表于 01-07 13:49 899次阅读
    <b class='flag-5'>开发</b>第1个<b class='flag-5'>LVGL</b><b class='flag-5'>程序</b>与实现按键<b class='flag-5'>操作</b>

    前台运行和后台运行二者有何区别

    开发环境:DeepIn15.11 开发语言:C语言 测试软件:Final Shell3.0.10 目录分清你的程序前台运行还是后台运行,二者有何区别
    发表于 11-04 08:18

    LVGL的字体相关资料分享

    前言之前展示过Luatos在win32上运行LVGL的效果,今天带来LVGL的字体篇介绍LVGL字体支持很全,支持 UTF-8 编码的 Unicode 字符,分内部字体和外部字体,字体制作工具也很多
    发表于 12-03 07:01

    开源轻量级显示框架LVGL简介

    资源的支持;嵌入式应用程序开发和调试的跨操作系统支持的属性;完备的多窗口机制和消息传递机制。​优点支持多种嵌入式操作系统,可移植性强;可伸缩的系统架构,易于扩展;功能丰富,可灵活剪裁;
    发表于 03-14 09:28

    开源轻量级显示框架LVGL简介

    资源的支持;嵌入式应用程序开发和调试的跨操作系统支持的属性;完备的多窗口机制和消息传递机制。​优点支持多种嵌入式操作系统,可移植性强;可伸缩的系统架构,易于扩展;功能丰富,可灵活剪裁;
    发表于 03-31 18:49

    Purple Pi R1 LVGL使⽤参考

    LVGL是⼀个轻量级的,开源的图形库。本⽂详细介绍了如何在Purple Pi开发板上运⾏lvgl应⽤,同时介绍了如何使⽤著名的LVGL IDE⼯具GUI Guider来
    发表于 09-06 15:25

    基于eRPC的LVGL在线设计器相关资料分享

    它也帮了大忙。另外,笔者手头上有两块新唐的开发板(NUC970系列和N9H30系列),可以真机运行。  剩下的两者之间的控制部分,当然是 eRPC 实现喽。  笔者设想,任何能跑起来 LVGL 的平台
    发表于 09-20 15:57

    全面解读目前LVGL的应用小知识

    概述 本文介绍目前LVGL的应用小知识,希望对采用MCU设计UI界面的用户有所启发,开发出界面更友好的消费品或者工业产品,造福大众。 01. LVGL系统架构 LVGL系统框架 应用
    的头像 发表于 06-04 12:01 3.1w次阅读
    全面解读目前<b class='flag-5'>LVGL</b>的应用小知识

    LVGL 优化帧率技巧

    目录标题前文LVGL帧率限制代码优化等级前文LVGL——PC模拟器仿真模拟+VS2017f429 discovery开发LVGL移植(带操作
    发表于 12-07 13:21 16次下载
    <b class='flag-5'>LVGL</b> 优化帧率技巧

    【飞凌OKA40i-C开发板试用体验】LVGL移植与测评

    图形界面开发工具。不过对于简单的用户界面程序,Qt有点杀鸡用牛刀的意思。今天介绍一下轻量级的图形界面库LVGLLVGL的项目作者是来自匈牙利
    的头像 发表于 10-20 10:22 4163次阅读
    【飞凌OKA40i-C<b class='flag-5'>开发</b>板试用体验】<b class='flag-5'>LVGL</b>移植与测评

    如何在MDK中部署LVGL

    LVGL的刚刚完成了对LVGL8的维护更新,发布了v8.3.5版。相对master分支上正在开发LVGL9,该版本是一个吐血推荐的稳定版本。
    的头像 发表于 07-27 14:41 1412次阅读
    如何在MDK中部署<b class='flag-5'>LVGL</b>

    LVGL开发指南介绍

    电子发烧友网站提供《LVGL开发指南介绍.pdf》资料免费下载
    发表于 09-09 10:24 17次下载

    LVGL前台程序开发相关操作介绍

    点击“+”按钮时它的回调函数“add_new_item_event_handler”被调用,这个回调函数在“lv_modbus_tool”函数中被设置。
    的头像 发表于 01-23 13:47 228次阅读
    <b class='flag-5'>LVGL</b><b class='flag-5'>前台</b><b class='flag-5'>程序</b><b class='flag-5'>开发</b><b class='flag-5'>相关</b><b class='flag-5'>操作</b>介绍