13.5.5 “+”按鈕的操作
1.“+”按鈕的回調(diào)函數(shù)
點(diǎn)擊如下按鈕時(shí),會(huì)增加“點(diǎn)”:

在界面里會(huì)得到如下圖所示的新控件:

點(diǎn)擊“+”按鈕時(shí)它的回調(diào)函數(shù)“add_new_item_event_handler”被調(diào)用,這個(gè)回調(diào)函數(shù)在“l(fā)v_modbus_tool”函數(shù)中被設(shè)置,代碼如下:

“add_new_item_event_handler”函數(shù)代碼如下:

它調(diào)用“add_new_item”函數(shù)為“點(diǎn)”創(chuàng)建控件,此函數(shù)在前面分析過(guò),不再贅述。
2.通過(guò)RPC通知后臺(tái)程序添加點(diǎn)
上圖中第2個(gè)參數(shù)為“-1”,表示要?jiǎng)?chuàng)建一個(gè)新點(diǎn):這會(huì)導(dǎo)致“rpc_add_point”函數(shù)被調(diào)用,代碼如下:

13.5.6 “Setting”按鈕的操作
1.創(chuàng)建配置界面
點(diǎn)擊“Setting”按鈕,會(huì)彈出一個(gè)配件界面:

可以在配置界面里設(shè)置“點(diǎn)”的信息:使用哪個(gè)串口、串口參數(shù)設(shè)置、設(shè)備地址、寄存器地址、寄存器類別。
這個(gè)配置界面在何時(shí)被創(chuàng)建?在“add_new_item”函數(shù)中創(chuàng)建:

最底層:

“[0]”表示第1層的第0個(gè)控件:

“[0-0]”表示第2層的第0個(gè)控件:

其他代碼都是類似的,不再贅述。
2.顯示配置界面
點(diǎn)擊“Setting”按鈕時(shí)它的回調(diào)函數(shù)“show_conf_event_handler”被調(diào)用,這個(gè)回調(diào)函數(shù)在“add_new_item”函數(shù)中被設(shè)置,代碼如下:

“show_conf_event_handler”函數(shù)代碼如下:

配置界面如下:

3.配件界面的“OK”按鈕的回調(diào)函數(shù)
當(dāng)設(shè)置好各類參數(shù)后,點(diǎn)擊“OK”按鈕將會(huì)調(diào)用它的回調(diào)函數(shù)“com_conf_opt_btn_event_handler”,這個(gè)回調(diào)函數(shù)在“配置頁(yè)面的創(chuàng)建函數(shù)com_or_ip_conf_page_init”中被設(shè)置,代碼如下:

“com_conf_opt_btn_event_handler”回調(diào)函數(shù)代碼如下,它僅僅是發(fā)出一個(gè)事件:

上圖第1124、1126、1128行,一層一層地找到“Send”按鈕,如下圖:
先在cont2_x中找到它的第2個(gè)child,就是“add_new_item”中給某個(gè)點(diǎn)創(chuàng)建的、占據(jù)66%高度的控件cont2_x_2,對(duì)應(yīng)注釋“[2]”。
再在cont2_x_2中找打它的第6個(gè)child,即控件 cont2_x_2_x,對(duì)應(yīng)“add_new_item”函數(shù)中的注釋“[2-6]”。
最后在cont2_x_2_x中找打它的第1個(gè)child,對(duì)應(yīng)“add_new_item”函數(shù)中的注釋“[2-6-1]”,它就是“Send”按鍵
就可以給“Send”按鍵發(fā)送“MY_LV_EVENT_UPDATE_RPC”事件了。

4.“Send”按鈕回調(diào)函數(shù)
對(duì)于“點(diǎn)”,有如下界面:

上圖界面是使用“add_new_item”函數(shù)創(chuàng)建的,里面的“Send”按鈕回調(diào)函數(shù),如下圖所示:

在“Setting”界面點(diǎn)擊“OK”按鈕時(shí),會(huì)給“Send”按鈕發(fā)送“MY_LV_EVENT_UPDATE_RPC”事件。導(dǎo)致“btn_send_event_handler”函數(shù)被調(diào)用,這個(gè)函數(shù)最終會(huì)使用RPC接口修改點(diǎn)的信息,調(diào)用關(guān)系如下圖所示:

13.5.7 寫“點(diǎn)”的操作
在如下界面寫入數(shù)值后,點(diǎn)擊“Send”,會(huì)調(diào)用RPC接口寫傳感器:

“Send”按鈕的回調(diào)函數(shù)“btn_send_event_handler”被調(diào)用,它的代碼如下:

對(duì)于“0x”、“4x”的寄存器,先寫入數(shù)據(jù),再讀出來(lái)。
13.5.8 讀“點(diǎn)”的操作
在如下界面勾選“Period”前面的復(fù)選框,會(huì)周期性地讀點(diǎn):

創(chuàng)建這個(gè)復(fù)選框時(shí)的代碼如下:

當(dāng)勾選“Period”前面的復(fù)選框時(shí),“cb_send_period_event_handler”函數(shù)被調(diào)用:

在定時(shí)器的函數(shù)里,向“Send”按鈕發(fā)送“MY_LV_EVENT_READ_PERIOD”事件,代碼如下:

“Send”函數(shù)的回調(diào)函數(shù)“btn_send_event_handler”被調(diào)用,它會(huì)使用RPC調(diào)用讀取點(diǎn)的數(shù)值,代碼如下:

-
程序
+關(guān)注
關(guān)注
117文章
3848瀏覽量
85457 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4421瀏覽量
67822 -
代碼
+關(guān)注
關(guān)注
30文章
4976瀏覽量
74360 -
LVGL
+關(guān)注
關(guān)注
3文章
127瀏覽量
4666
發(fā)布評(píng)論請(qǐng)先 登錄
HMI-Board開發(fā)板工程在添加新組件時(shí)LVGL組件會(huì)報(bào)錯(cuò)的解決辦法
LVGL開發(fā)入門教程
前臺(tái)運(yùn)行和后臺(tái)運(yùn)行二者有何區(qū)別
LVGL的字體相關(guān)資料分享
LVGL工具使用
Purple Pi R1 LVGL使?參考
全面解讀目前LVGL的應(yīng)用小知識(shí)
LVGL系列(二)之二 LVGL常見問(wèn)題解答 整理自官方文檔
LVGL 優(yōu)化幀率技巧
如何配置和操作Linux驅(qū)動(dòng)程序開發(fā)板
【飛凌OKA40i-C開發(fā)板試用體驗(yàn)】LVGL移植與測(cè)評(píng)
如何在MDK中部署LVGL
LVGL前臺(tái)程序開發(fā)相關(guān)操作介紹
評(píng)論