LVGL前台程序开发相关操作
13.4.4 完成Modbus RTU读操作。
要运用libmodbus操作Modbus RTU。传感器。,需求做的工作有2个:
创立modbus_t:调用“modbus_new_rtu”、“modbus_connect”。
调用“modbus_re。ad。_”、“modbus_wri。te。_”最初的函数。
关于多个“点”,它们或许运用同一个“modbus_t”。所以需求先判别:假如已经有了对应的“modbus_t”,就无法再次创立。
以“读点”为例,代码在“modbus_client.c”里,如下:
其间“get_modbus_ctx”函数如下:
13.4.5 完成Modbus RTU写操作。
代码在“modbus_client.c”里,如下:
13.4.6 完成Modbus TCP操作。
Modbus TCP的操作跟Modbus RTU的操作时同一套代码,在如下函数中依据port_info确定是创立什么类型的 modbus_t结构体:
13.4.7 完成OTA晋级。
传感器晋级规划各个传感器内部的完成,后台程序(操控。中心。)仅仅给出了。接口。。
前台程序在如下界面中,把如下。信息。:固件文件名、设置的。端口。信息、晋级哪个设备,发送给后台程序(操控中心):
发送的信息存为如下结构体:
然后运用如下函数建议RPC调用:
后台程序(操控中心)对应的代码如下:
在完成真实的传感器晋级时,前台程序要知道晋级进展,它能够调用如下函数宣布RPC恳求:
后台程序(操控中心)对应的代码如下:
13.5。 LVGL。前台程序开发。
源码为:
咱们要解析的代码根本都在这个文件里:
“demo_lv_modbus_toollv_100ask_modbus_toolsrclv_modbus_tool.c”。
13.5.1 程序流程。
LVGL前台程序的源码里,要害点有两个:
怎样布局、创立各类控件。
它们的回调函数。
1.布局的重要概念。
布局、创立控件时,有一个“parent”的概念。能够以为“parent”是一个“容器”,在上面能够持续创立各个控件。
比方下图中,控件1对应绿色布景的区域,控件2对应大红框的区域,控件1、控件2都是在同一个“parent”上创立处理的。这个“parent”是整个屏幕区域。
关于控件1,它也能够作为“parent”,在它上面有能够持续创立按钮:“+”按钮、“Upgrade”按钮、“MQTT Set。ti。ng”按钮:
关于控件2,它也能够作为“parent”,在它上面有能够持续创立各类控件:
表明一个点时,界面如下。它本身又能够作为一个 parent,在里边持续制作各类控件:
2.控件的回调函数。
当咱们点击某个按钮时,会有对应的函数被调用,这便是它的回调函数。在回调函数里,咱们能够弹出对话框,能够运用RPC读写传感器。
3.main函数。
main函数在“demo_lv_modbus_toolmain.c”中,代码如下:
13.5.2 运用屏幕和鼠标。
LVGL对根据Framebuffer的屏幕、鼠标的支撑很完善,只需求供给设备节点即可。代码如下:
13.5.3 创立初始界面。
main函数里调用“lv_modbus_tool”,就开端创立界面了。它的代码在“demo_lv_modbus_toollv_100ask_modbus_toolsrclv_modbus_tool.c”中。
1.第1个区域的创立。
第1个区域指:
第1步:以整个屏幕为parent,创立出控件1。
第2步:以控件1为parent,创立出左面的3个控件。
代码如下:
2.第2个区域的创立。
第2个区域指:
代码如下:
3.“点”的创立。
LVGL前台程序运行时,会运用RPC调用获得点的信息。关于每个点,都会创立出相似下面的控件:
代码如下:
add_new_item函数是中心代码,独自解说。
13.5.4 add_new_item函数解析。
1.代码里层级的注释。
add_new_item函数里,创立了多层控件。在代码的注释里,怎样表现这些一层又一层的嵌套联系呢?运用相似“[0]、[1]”表明第1层,运用“[1-0]、[1-1]”表明第2层。
在运用“add_new_item”函数创立如下控件时,了解了注释里的数字,更简单了解代码:
最底层,表明“点”的整个区域,它没有数字注释。比方下面的cont2_x,它对应下图红框的区域(疏忽里边的内容):
cont2_x作为parent,作为底层,在上面创立了4个“child”。这些“child”的代码注释是“[0]、[1]、[2]、[3]”,如下:
“[0]”对应的控件:
“[1]”对应的控件:
“[1-0]”对应的控件:
2.代码剖析。
add_new_item函数十分巨大,把源码和图画进行比照,才简单了解。
第1步,区分区域得到cont2_x,如下:
第2步,在cont2_x里持续区分,得到cont2_x_1,如下:
第3步,在cont2_x_1里增加按钮、复选框,代码如下:
今后的操作是相似的,不再赘述。
内容来源:https://fastrans.nhobethoi.com/app-1/kết quả xổ số miền bắc tra cứu,http://chatbotjud-teste.saude.mg.gov.br/app-1/terceiroz
本文地址:http://w.21nx.com/news/12252389-87a21999693.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。