图 1 AWTK-HMI工作原理
从官方的Gitee下载awtk-hmi仓库到本地目录,可以在mcu/sdk/hmi目录中浏览MCU SDK的API。如果是低资源平台则可以浏览mcu/mini-sdk/hmi目录的代码文件。下载链接:
首先讲述一下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对象。
下图是一段在STM32平台上简单的示例代码,主要逻辑是在程序主循环中检测按键并设置串口屏变量值,并且不断检测串口屏的事件,分发到MCU端程序中:
https://gitee.com/zlgopen/awtk-hmi/blob/master/docs/mcu_sdk.md
arm-zlgmcu-linux-uclibcgnueabi-gcc -c hmi.c -I../../../awtk/src -DLINUX
arm-zlgmcu-linux-uclibcgnueabi-ar rcs libhmi.a ./hmi.o
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库文件拷贝到板子上运行即可
下图是使用Keil编译现有的MCU端移植工程到STM32F429平台的工程文件结构以及编译输出信息:
图 4 Keil工程中加入AWTK与MCU SDK代码文件
运行awtk-hmi目录中的“prepare.bat”下载最新版awtk与awtk-mvvm仓库,接着在mcu/simulator目录下执行以下命令便可运行模拟程序:
scons
python ./scripts/update.py all
./bin/mcu_sim.exe
【AWTK开源智能串口屏方案】方案介绍和工作原理
【AWTK开源智能串口屏方案】HMI端程序移植编译及运行
更多往期文章,请点击“ 阅读原文 ”。