91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LVGL前臺(tái)程序開(kāi)發(fā)相關(guān)操作

瑞薩嵌入式小百科 ? 來(lái)源:瑞薩MCU小百科 ? 2025-01-17 12:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

13.4.4 實(shí)現(xiàn)Modbus RTU讀操作

要使用libmodbus操作Modbus RTU傳感器,需要做的事情有2個(gè):

創(chuàng)建modbus_t:調(diào)用“modbus_new_rtu”、“modbus_connect”

調(diào)用“modbus_read_”、“modbus_write_”開(kāi)頭的函數(shù)

對(duì)于多個(gè)“點(diǎn)”,它們可能使用同一個(gè)“modbus_t”。所以需要先判斷:如果已經(jīng)有了對(duì)應(yīng)的“modbus_t”,就無(wú)法再次創(chuàng)建。

以“讀點(diǎn)”為例,代碼在“modbus_client.c”里,如下:

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

其中“get_modbus_ctx”函數(shù)如下:

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

13.4.5 實(shí)現(xiàn)Modbus RTU寫(xiě)操作

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

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

13.4.6 實(shí)現(xiàn)Modbus TCP操作

Modbus TCP的操作跟Modbus RTU的操作時(shí)同一套代碼,在如下函數(shù)中根據(jù)port_info確定是創(chuàng)建什么類(lèi)型的 modbus_t結(jié)構(gòu)體:

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

13.4.7 實(shí)現(xiàn)OTA升級(jí)

傳感器升級(jí)設(shè)計(jì)各個(gè)傳感器內(nèi)部的實(shí)現(xiàn),后臺(tái)程序(控制中心)只是給出了接口。

前臺(tái)程序在如下界面中,把如下信息:固件文件名、設(shè)置的端口信息、升級(jí)哪個(gè)設(shè)備,發(fā)送給后臺(tái)程序(控制中心):

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

發(fā)送的信息存為如下結(jié)構(gòu)體:

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

然后使用如下函數(shù)發(fā)起RPC調(diào)用:

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

后臺(tái)程序(控制中心)對(duì)應(yīng)的代碼如下:

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

在實(shí)現(xiàn)真正的傳感器升級(jí)時(shí),前臺(tái)程序要知道升級(jí)進(jìn)度,它可以調(diào)用如下函數(shù)發(fā)出RPC請(qǐng)求:

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

后臺(tái)程序(控制中心)對(duì)應(yīng)的代碼如下:

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

13.5 LVGL前臺(tái)程序開(kāi)發(fā)

源碼為:

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

我們要解析的代碼基本都在這個(gè)文件里:

“demo_lv_modbus_toollv_100ask_modbus_toolsrclv_modbus_tool.c”。

13.5.1 程序流程

LVGL前臺(tái)程序的源碼里,關(guān)鍵點(diǎn)有兩個(gè):

如何布局、創(chuàng)建各類(lèi)控件

它們的回調(diào)函數(shù)

1.布局的重要概念

布局、創(chuàng)建控件時(shí),有一個(gè)“parent”的概念??梢哉J(rèn)為“parent”是一個(gè)“容器”,在上面可以繼續(xù)創(chuàng)建各個(gè)控件。

比如下圖中,控件1對(duì)應(yīng)綠色背景的區(qū)域,控件2對(duì)應(yīng)大紅框的區(qū)域,控件1、控件2都是在同一個(gè)“parent”上創(chuàng)建處理的。這個(gè)“parent”是整個(gè)屏幕區(qū)域。

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

對(duì)于控件1,它也可以作為“parent”,在它上面有可以繼續(xù)創(chuàng)建按鈕:“+”按鈕、“Upgrade”按鈕、“MQTT Setting”按鈕:

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

對(duì)于控件2,它也可以作為“parent”,在它上面有可以繼續(xù)創(chuàng)建各類(lèi)控件:

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

表示一個(gè)點(diǎn)時(shí),界面如下。它本身又可以作為一個(gè) parent,在里面繼續(xù)繪制各類(lèi)控件:

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

2.控件的回調(diào)函數(shù)

當(dāng)我們點(diǎn)擊某個(gè)按鈕時(shí),會(huì)有對(duì)應(yīng)的函數(shù)被調(diào)用,這就是它的回調(diào)函數(shù)。在回調(diào)函數(shù)里,我們可以彈出對(duì)話框,可以使用RPC讀寫(xiě)傳感器。

3.main函數(shù)

main函數(shù)在“demo_lv_modbus_toolmain.c”中,代碼如下:

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

13.5.2 使用屏幕和鼠標(biāo)

LVGL對(duì)基于Framebuffer的屏幕、鼠標(biāo)的支持很完善,只需要提供設(shè)備節(jié)點(diǎn)即可。代碼如下:

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

13.5.3 創(chuàng)建初始界面

main函數(shù)里調(diào)用“l(fā)v_modbus_tool”,就開(kāi)始創(chuàng)建界面了。它的代碼在“demo_lv_modbus_toollv_100ask_modbus_toolsrclv_modbus_tool.c”中。

1.第1個(gè)區(qū)域的創(chuàng)建

第1個(gè)區(qū)域指:

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

第1步:以整個(gè)屏幕為parent,創(chuàng)建出控件1。

第2步:以控件1為parent,創(chuàng)建出左邊的3個(gè)控件。

代碼如下:

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

2.第2個(gè)區(qū)域的創(chuàng)建

第2個(gè)區(qū)域指:

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

代碼如下:

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

3.“點(diǎn)”的創(chuàng)建

LVGL前臺(tái)程序運(yùn)行時(shí),會(huì)使用RPC調(diào)用獲得點(diǎn)的信息。對(duì)于每個(gè)點(diǎn),都會(huì)創(chuàng)建出類(lèi)似下面的控件:

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

代碼如下:

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

add_new_item函數(shù)是核心代碼,單獨(dú)講解。

13.5.4 add_new_item函數(shù)解析

1.代碼里層級(jí)的注釋

add_new_item函數(shù)里,創(chuàng)建了多層控件。在代碼的注釋里,怎么體現(xiàn)這些一層又一層的嵌套關(guān)系呢?使用類(lèi)似“[0]、[1]”表示第1層,使用“[1-0]、[1-1]”表示第2層。

在使用“add_new_item”函數(shù)創(chuàng)建如下控件時(shí),理解了注釋里的數(shù)字,更容易理解代碼:

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

最底層,表示“點(diǎn)”的整個(gè)區(qū)域,它沒(méi)有數(shù)字注釋。比如下面的cont2_x,它對(duì)應(yīng)下圖紅框的區(qū)域(忽略里面的內(nèi)容):

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

cont2_x作為parent,作為底層,在上面創(chuàng)建了4個(gè)“child”。這些“child”的代碼注釋是“[0]、[1]、[2]、[3]”,如下:

“[0]”對(duì)應(yīng)的控件:

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

“[1]”對(duì)應(yīng)的控件:

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

“[1-0]”對(duì)應(yīng)的控件:

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

2.代碼分析

add_new_item函數(shù)非常龐大,把源碼和圖案進(jìn)行對(duì)比,才容易理解。

第1步,劃分區(qū)域得到cont2_x,如下:

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

第2步,在cont2_x里繼續(xù)劃分,得到cont2_x_1,如下:

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

第3步,在cont2_x_1里添加按鈕、復(fù)選框,代碼如下:

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

以后的操作是類(lèi)似的,不再贅述。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2576

    文章

    55032

    瀏覽量

    791252
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    2457

    瀏覽量

    83193
  • 程序開(kāi)發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    10942
  • LibModbus
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    7628
  • LVGL
    +關(guān)注

    關(guān)注

    2

    文章

    124

    瀏覽量

    4555
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    HMI-Board開(kāi)發(fā)板工程在添加新組件時(shí)LVGL組件會(huì)報(bào)錯(cuò)的解決辦法

    在使用HMI-Board開(kāi)發(fā)開(kāi)發(fā)lvgl的GUI界面設(shè)計(jì)時(shí),可以直接在官方提供的lvgl的demo中開(kāi)發(fā),這樣就可以省去
    的頭像 發(fā)表于 09-13 16:17 ?3056次閱讀
    HMI-Board<b class='flag-5'>開(kāi)發(fā)</b>板工程在添加新組件時(shí)<b class='flag-5'>LVGL</b>組件會(huì)報(bào)錯(cuò)的解決辦法

    LVGL開(kāi)發(fā)入門(mén)教程

    LVGL(Light and Versatile Graphics Library)是一個(gè)開(kāi)源的嵌入式圖形庫(kù),由Gábor Kiss-Vámosi于2016年創(chuàng)建,遵守MIT協(xié)議。目前由來(lái)自世界各地的志愿者共同維護(hù)和開(kāi)發(fā)
    的頭像 發(fā)表于 01-03 15:23 ?4548次閱讀
    <b class='flag-5'>LVGL</b><b class='flag-5'>開(kāi)發(fā)</b>入門(mén)教程

    開(kāi)發(fā)第1個(gè)LVGL程序與實(shí)現(xiàn)按鍵操作

    開(kāi)發(fā)第1個(gè)LVGL程序與實(shí)現(xiàn)按鍵操作
    的頭像 發(fā)表于 01-07 13:49 ?4784次閱讀
    <b class='flag-5'>開(kāi)發(fā)</b>第1個(gè)<b class='flag-5'>LVGL</b><b class='flag-5'>程序</b>與實(shí)現(xiàn)按鍵<b class='flag-5'>操作</b>

    前臺(tái)運(yùn)行和后臺(tái)運(yùn)行二者有何區(qū)別

    開(kāi)發(fā)環(huán)境:DeepIn15.11 開(kāi)發(fā)語(yǔ)言:C語(yǔ)言 測(cè)試軟件:Final Shell3.0.10 目錄分清你的程序前臺(tái)運(yùn)行還是后臺(tái)運(yùn)行,二者有何區(qū)別
    發(fā)表于 11-04 08:18

    LVGL的字體相關(guān)資料分享

    前言之前展示過(guò)Luatos在win32上運(yùn)行LVGL的效果,今天帶來(lái)LVGL的字體篇介紹LVGL字體支持很全,支持 UTF-8 編碼的 Unicode 字符,分內(nèi)部字體和外部字體,字體制作工具也很多
    發(fā)表于 12-03 07:01

    開(kāi)源輕量級(jí)顯示框架LVGL簡(jiǎn)介

    資源的支持;嵌入式應(yīng)用程序開(kāi)發(fā)和調(diào)試的跨操作系統(tǒng)支持的屬性;完備的多窗口機(jī)制和消息傳遞機(jī)制。?優(yōu)點(diǎn)支持多種嵌入式操作系統(tǒng),可移植性強(qiáng);可伸縮的系統(tǒng)架構(gòu),易于擴(kuò)展;功能豐富,可靈活剪裁;
    發(fā)表于 03-14 09:28

    開(kāi)源輕量級(jí)顯示框架LVGL簡(jiǎn)介

    資源的支持;嵌入式應(yīng)用程序開(kāi)發(fā)和調(diào)試的跨操作系統(tǒng)支持的屬性;完備的多窗口機(jī)制和消息傳遞機(jī)制。?優(yōu)點(diǎn)支持多種嵌入式操作系統(tǒng),可移植性強(qiáng);可伸縮的系統(tǒng)架構(gòu),易于擴(kuò)展;功能豐富,可靈活剪裁;
    發(fā)表于 03-31 18:49

    Purple Pi R1 LVGL使?參考

    LVGL是?個(gè)輕量級(jí)的,開(kāi)源的圖形庫(kù)。本?詳細(xì)介紹了如何在Purple Pi開(kāi)發(fā)板上運(yùn)?lvgl應(yīng)?,同時(shí)介紹了如何使?著名的LVGL IDE?具GUI Guider來(lái)
    發(fā)表于 09-06 15:25

    全面解讀目前LVGL的應(yīng)用小知識(shí)

    概述 本文介紹目前LVGL的應(yīng)用小知識(shí),希望對(duì)采用MCU設(shè)計(jì)UI界面的用戶有所啟發(fā),開(kāi)發(fā)出界面更友好的消費(fèi)品或者工業(yè)產(chǎn)品,造福大眾。 01. LVGL系統(tǒng)架構(gòu) LVGL系統(tǒng)框架 應(yīng)用
    的頭像 發(fā)表于 06-04 12:01 ?3.3w次閱讀
    全面解讀目前<b class='flag-5'>LVGL</b>的應(yīng)用小知識(shí)

    LVGL 優(yōu)化幀率技巧

    目錄標(biāo)題前文LVGL幀率限制代碼優(yōu)化等級(jí)前文LVGL——PC模擬器仿真模擬+VS2017f429 discovery開(kāi)發(fā)LVGL移植(帶操作
    發(fā)表于 12-07 13:21 ?17次下載
    <b class='flag-5'>LVGL</b> 優(yōu)化幀率技巧

    【飛凌OKA40i-C開(kāi)發(fā)板試用體驗(yàn)】LVGL移植與測(cè)評(píng)

    圖形界面開(kāi)發(fā)工具。不過(guò)對(duì)于簡(jiǎn)單的用戶界面程序,Qt有點(diǎn)殺雞用牛刀的意思。今天介紹一下輕量級(jí)的圖形界面庫(kù)LVGL。LVGL的項(xiàng)目作者是來(lái)自匈牙利
    的頭像 發(fā)表于 10-20 10:22 ?5415次閱讀
    【飛凌OKA40i-C<b class='flag-5'>開(kāi)發(fā)</b>板試用體驗(yàn)】<b class='flag-5'>LVGL</b>移植與測(cè)評(píng)

    如何在MDK中部署LVGL

    LVGL的剛剛完成了對(duì)LVGL8的維護(hù)更新,發(fā)布了v8.3.5版。相對(duì)master分支上正在開(kāi)發(fā)LVGL9,該版本是一個(gè)吐血推薦的穩(wěn)定版本。
    的頭像 發(fā)表于 07-27 14:41 ?2572次閱讀
    如何在MDK中部署<b class='flag-5'>LVGL</b>

    LVGL開(kāi)發(fā)指南介紹

    電子發(fā)燒友網(wǎng)站提供《LVGL開(kāi)發(fā)指南介紹.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 10:24 ?34次下載

    LVGL前臺(tái)程序開(kāi)發(fā)相關(guān)操作介紹

    點(diǎn)擊“+”按鈕時(shí)它的回調(diào)函數(shù)“add_new_item_event_handler”被調(diào)用,這個(gè)回調(diào)函數(shù)在“l(fā)v_modbus_tool”函數(shù)中被設(shè)置。
    的頭像 發(fā)表于 01-23 13:47 ?1588次閱讀
    <b class='flag-5'>LVGL</b><b class='flag-5'>前臺(tái)</b><b class='flag-5'>程序</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>相關(guān)</b><b class='flag-5'>操作</b>介紹

    RK3506開(kāi)發(fā)板2秒啟動(dòng)LVGL顯示方案

    占用很少資源的前提下,實(shí)現(xiàn)絲滑的動(dòng)畫(huà)效果和平滑滾動(dòng)的高級(jí)圖形,具有輕量化、跨平臺(tái)可用性、易于移植、操作友好以及免費(fèi)使用等諸多優(yōu)勢(shì)。 OK3506J-S開(kāi)發(fā)板移植了最新9.2版本的LVGL,支持多種屏幕構(gòu)件以及鼠標(biāo)、鍵盤(pán)、觸摸等多
    的頭像 發(fā)表于 02-25 16:53 ?1233次閱讀
    RK3506<b class='flag-5'>開(kāi)發(fā)</b>板2秒啟動(dòng)<b class='flag-5'>LVGL</b>顯示方案