本篇文章將介紹AWTK-HMI中的MCU端開發方法,包括MCU SDK常用API的說明、使用流程及如何編譯到Linux和STM32平臺。引言:AWTK-HMI是基于AWTK與AWTK-MVVM開發的低代碼智能串口屏方案,本系列文章介紹如何從零開發HMI程序,包括搭建開發環境、創建HMI運行時工程、修改應用界面以及開發MCU程序。
MCU端簡介
相對于HMI端(串口屏端),MCU端工程是用戶自己的主控程序,通過調用MCU SDK的API,可以與HMI端通過串口或網口通信。MCU端程序本身也是支持跨平臺,且不受硬件與系統限制的。
圖1AWTK-HMI工作原理
從官方的Gitee下載awtk-hmi倉庫到本地目錄,可以在mcu/sdk/hmi目錄中瀏覽MCU SDK的API。如果是低資源平臺則可以瀏覽mcu/mini-sdk/hmi目錄的代碼文件。
MCU開發基本流程
在使用API前需要把MCU SDK加入到目標平臺編譯成庫或者直接放到項目中進行編譯,才可以在業務邏輯中調用這些API,關于如何編譯文章后面章節會進行詳細介紹。
MCU SDK常用API
首先講述一下MCU SDK實際開發中常用的API,通過這些API,MCU端可以主動獲取、設置串口屏的變量值,或接收串口屏的事件,實現雙向交互。
1、hmi_create或hmi_create_with_serial,這一步是創建一個hmi_t對象用于跟串口屏端進行通信。若需要使用網口通信可以先調用tk_stream_factory_create_iostream并根據函數說明傳進去正確的url參數,接著再將返回的tk_iostream_t對象作為hmi_create函數的參數;
2、hmi_set_prop,通過MCU端設置串口屏某個綁定變量值,如:設置空調開關或溫度值;
3、hmi_get_prop,通過MCU端獲取串口屏某個綁定變量值;
4、hmi_dispatch,用于獲取了串口屏事件后分發到MCU端程序中,如:監聽到串口屏發生了EVT_PROP_CHANGED事件,MCU端程序接收到該事件后輸出對應的日志信息;
5、hmi_destroy用于MCU端與串口屏端斷開連接時銷毀hmi_t對象。
MCU SDK開發示例
下圖是一段在STM32平臺上簡單的示例代碼,主要邏輯是在程序主循環中檢測按鍵并設置串口屏變量值,并且不斷檢測串口屏的事件,分發到MCU端程序中:
圖2MCU SDK使用示例除了上面所展示的API和例子,更多API說明和示例可以參考《MCU SDK》,完整示例工程可以瀏覽mcu/stm32目錄中的幾個STM32工程。
在嵌入式Linux平臺使用MCU SDK
接下來介紹如何將MCU SDK編譯到嵌入式Linux平臺。編譯環境需要準備交叉編譯工具鏈、MCU SDK代碼文件最新版awtk與awtk-linux-fb,awtk與awtk-linux-fb放在awtk-hmi目錄中,詳細的操作步驟如下:1. 參考《【從0開始創建AWTK應用程序】編譯應用到嵌入式Linux平臺》文章在awtk-linux-fb內配置交叉編譯工具并編譯awtk;2. 進入到awtk-hmi/mcu/sdk/hmi目錄中,使用交叉編譯工具編譯得到hmi.o目標文件,下面為示例命令(宏定義可自己添加):
arm-zlgmcu-linux-uclibcgnueabi-gcc -c hmi.c -I../../../awtk/src -DLINUX
3. 將hmi.o目標文件打包成庫文件
arm-zlgmcu-linux-uclibcgnueabi-ar rcs libhmi.a ./hmi.o
4. 編譯test示例程序命令如下:
arm-zlgmcu-linux-uclibcgnueabi-gcc test.c -o test -I./ -I../../../awtk/src -L./ -L../../../awtk-linux-fb/bin -lawtk -lhmi
最終可以得到test示例程序,將該程序以及awtk-linux-fb/bin目錄下的libawtk.so庫文件拷貝到板子上運行即可
圖3編譯得到的libhmi.a庫和test程序
在STM32或其它硬件平臺使用MCU SDK
如果想將MCU端編譯到STM32平臺運行,相對比較簡單,只需將AWTK部分代碼文件以及MCU SDK所有代碼文件加入到現有的keil工程中進行編譯,具體操作可以參考mcu/stm32的README.md《STM32移植指南》介紹。
下圖是使用Keil編譯現有的MCU端移植工程到STM32F429平臺的工程文件結構以及編譯輸出信息:
圖4Keil工程中加入AWTK與MCU SDK代碼文件
圖5編譯MCU端到STM32平臺其它的硬件平臺和RTOS平臺移植方法也是大同小異,將AWTK編譯后再將MCU SDK編譯成庫文件,最后配置好SDK庫與AWTK庫路徑以及鏈接選項,編譯可執行程序即可。
在Windows平臺使用MCU端模擬程序
在mcu/simulator目錄下有一個MCU端模擬器例程,可以模擬發送和接收數據,該模擬程序支持通過串口或網口的方式與串口屏連接,并支持收發串口屏消息。具體如何啟動HMI端程序并與模擬器通信可以看系列上一篇文章。
運行awtk-hmi目錄中的“prepare.bat”下載最新版awtk與awtk-mvvm倉庫,接著在mcu/simulator目錄下執行以下命令便可運行模擬程序:
sconspython ./scripts/update.py all./bin/mcu_sim.exe
圖6Windows運行MCU端模擬程序
-
mcu
+關注
關注
146文章
17199瀏覽量
351918 -
串口屏
+關注
關注
8文章
540瀏覽量
37496 -
awtk
+關注
關注
0文章
45瀏覽量
237
發布評論請先 登錄
相關推薦
評論