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

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

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

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

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

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

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

最底層:

“[0]”表示第1層的第0個控件:

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

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

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

配置界面如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

-
程序
+關(guān)注
關(guān)注
117文章
3846瀏覽量
85244 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67516 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73977 -
LVGL
+關(guān)注
關(guān)注
2文章
124瀏覽量
4567
發(fā)布評論請先 登錄
HMI-Board開發(fā)板工程在添加新組件時LVGL組件會報錯的解決辦法
LVGL開發(fā)入門教程
前臺運(yùn)行和后臺運(yùn)行二者有何區(qū)別
LVGL的字體相關(guān)資料分享
LVGL工具使用
Purple Pi R1 LVGL使?參考
全面解讀目前LVGL的應(yīng)用小知識
LuatOS之LVGL字體篇
LVGL系列(二)之二 LVGL常見問題解答 整理自官方文檔
LVGL 優(yōu)化幀率技巧
如何配置和操作Linux驅(qū)動程序開發(fā)板
【飛凌OKA40i-C開發(fā)板試用體驗】LVGL移植與測評
LVGL前臺程序開發(fā)相關(guān)操作介紹
評論