0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【AWTK开源智能串口屏方案】MCU SDK使用与编译运行

ZLG致远电子 2024-02-19 12:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本篇文章将介绍AWTK-HMI中的MCU端开发方法,包括MCU SDK常用API的说明、使用流程及如何编译到LinuxSTM32平台。引言:AWTK-HMI是基于AWTK与AWTK-MVVM开发的低代码智能串口屏方案,本系列文章介绍如何从零开发HMI程序,包括搭建开发环境、创建HMI运行时工程、修改应用界面以及开发MCU程序。


MCU端简介

相对于HMI端(串口屏端),MCU端工程是用户自己的主控程序,通过调用MCU SDK的API,可以与HMI端通过串口或网口通信。MCU端程序本身也是支持跨平台,且不受硬件与系统限制的。

e605edf8-cedc-11ee-9118-92fbcf53809c.png

图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端程序中:

e612ada4-cedc-11ee-9118-92fbcf53809c.png

图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库文件拷贝到板子上运行即可

e61caba6-cedc-11ee-9118-92fbcf53809c.png

图3编译得到的libhmi.a库和test程序

在STM32或其它硬件平台使用MCU SDK

如果想将MCU端编译到STM32平台运行,相对比较简单,只需将AWTK部分代码文件以及MCU SDK所有代码文件加入到现有的keil工程中进行编译,具体操作可以参考mcu/stm32的README.md《STM32移植指南》介绍。

下图是使用Keil编译现有的MCU端移植工程到STM32F429平台的工程文件结构以及编译输出信息:

e6260a34-cedc-11ee-9118-92fbcf53809c.png

图4Keil工程中加入AWTK与MCU SDK代码文件

e6349ea0-cedc-11ee-9118-92fbcf53809c.png图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

e641b7ac-cedc-11ee-9118-92fbcf53809c.png图6Windows运行MCU端模拟程序

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18618

    浏览量

    387376
  • 串口屏
    +关注

    关注

    8

    文章

    599

    浏览量

    39226
  • awtk
    +关注

    关注

    0

    文章

    50

    浏览量

    490
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MCU单片机串口数据记录仪方案

    在工业控制、环境监测、物流追踪等众多领域,如何可靠、便捷地记录设备串口数据成为不少工程师关注的焦点。基于MCU单片机的串口数据记录仪方案,正以其高效集成、灵活存储和简便操作的特点,成为
    的头像 发表于 11-27 15:02 111次阅读

    开源鸿蒙技术大会2025丨编译器与编程语言分论坛:语言驱动系统创新,编译赋能生态繁荣

    在万物智联的时代背景下,操作系统底层能力的构建离不开编程语言与编译器的关键支撑。作为开源鸿蒙生态的核心技术,语言设计与编译器、虚拟机实现的进步直接关系到开发效率、运行性能与系统安全。本
    的头像 发表于 11-20 17:24 500次阅读
    <b class='flag-5'>开源</b>鸿蒙技术大会2025丨<b class='flag-5'>编译</b>器与编程语言分论坛:语言驱动系统创新,<b class='flag-5'>编译</b>赋能生态繁荣

    充电桩行业串口的实际应用。

    串口(又称UART智能串口)因其开发简便、稳定性高、成本可控等特点,已成为充电桩人机交互
    发表于 09-02 10:43

    基于兆易创新GD32系列MCU的GUI智能显解决方案

    随着人机交互需求的不断提升,图形用户界面(GUI)已成为各类智能设备的核心组成部分。兆易创新GD32系列MCU凭借其丰富的外设接口和强大的处理能力,为用户们提供了全面的GUI显解决方案
    的头像 发表于 08-19 14:49 1339次阅读
    基于兆易创新GD32系列<b class='flag-5'>MCU</b>的GUI<b class='flag-5'>智能</b><b class='flag-5'>屏</b>显解决<b class='flag-5'>方案</b>

    开源获奖案例】AI智能交互新方案:基于T5L智能的AI DeepSeek大模型

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——AI智能交互新方案:基于T5L智能的AIDeepSeek大模型。该
    的头像 发表于 07-12 09:02 751次阅读
    【<b class='flag-5'>开源</b>获奖案例】AI<b class='flag-5'>智能</b>交互新<b class='flag-5'>方案</b>:基于T5L<b class='flag-5'>智能</b><b class='flag-5'>屏</b>的AI DeepSeek大模型

    大彩讲堂:串口工程下载及问题诊断

    一、适合范围适合大彩协议串口产品。二、工程下载M系列:打开VisualTFT软件,在菜单栏→文件→‘创建新工程’,创建的工程必须以实体为准,可通过屏幕背面贴纸查看具体型号。以
    的头像 发表于 06-24 16:27 1223次阅读
    大彩讲堂:<b class='flag-5'>串口</b><b class='flag-5'>屏</b>工程下载及问题诊断

    开源获奖案例】基于T5L智能的音乐播放与歌词显示方案

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的音乐播放与歌词显示方案。该方案通过T5L
    的头像 发表于 05-08 09:52 643次阅读
    【<b class='flag-5'>开源</b>获奖案例】基于T5L<b class='flag-5'>智能</b><b class='flag-5'>屏</b>的音乐播放与歌词显示<b class='flag-5'>方案</b>

    启明智显4.3寸SC07智能串口储能设备HMI解决方案

    。因此,启明智显提出将ESP32-S3方案4.3寸智能串口SC07应用于储能设备。强大性能,稳定运行NO.1ESP32-S3芯片具备强大运
    的头像 发表于 04-25 18:04 423次阅读
    启明智显4.3寸SC07<b class='flag-5'>智能</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b>储能设备HMI解决<b class='flag-5'>方案</b>

    DIY开源智能马桶

    []()【开源福利!电子学子专属】某品牌智能马桶:家庭实用与二次开发的绝佳之选 各位电子类专业的同学们,想不想拥有一个既可以用于家庭日常使用,又能作为超棒的二次开发练习平台的神器?今天给大家带来某
    发表于 04-13 21:56

    开源获奖案例】基于T5L智能的FM收音机

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的FM收音机。该方案基于T5L智能
    的头像 发表于 03-28 15:39 741次阅读
    【<b class='flag-5'>开源</b>获奖案例】基于T5L<b class='flag-5'>智能</b><b class='flag-5'>屏</b>的FM收音机

    串口十大高频问题:花屏、通信失败、触控漂移全解决

    在工业控制、智能设备等领域,串口以其便捷的交互性、简单的通信方式,成为了信息展示与操作的重要窗口。然而,在实际使用过程中,串口也常出现一
    的头像 发表于 03-27 11:51 1107次阅读
    <b class='flag-5'>串口</b><b class='flag-5'>屏</b>十大高频问题:花屏、通信失败、触控漂移全解决

    使用keil编译下载usb_cdc_vcom freertos例程sdk2.15版本无法正常检测到串口,怎么解决?

    使用keil编译下载usb_cdc_vcom freertos例程sdk2.15版本无法正常检测到串口但是sdk2.4.1的例程可以...怎么检查问题
    发表于 03-27 08:00

    如何选择国产串口

    在工业控制、智能设备等众多领域,串口作为重要的人机交互界面,发挥着关键作用。随着国内技术的飞速发展,国产串口以其出色的性能、丰富的功能和
    的头像 发表于 03-26 18:02 636次阅读
    如何选择国产<b class='flag-5'>串口</b><b class='flag-5'>屏</b>

    串口与安卓到底有什么区别?

    不管是哪个领域,最重要的是找到最适合的技术路径,让屏幕成为功能实现的智慧窗口。串口与安卓也并非非此即彼的选择,关键在于与应用场景的适配度。启明智显致力于为企业打造高性价比的智慧显示方案
    的头像 发表于 03-26 17:48 730次阅读
    <b class='flag-5'>串口</b><b class='flag-5'>屏</b>与安卓<b class='flag-5'>屏</b>到底有什么区别?

    3.5英寸高清智能串口 8位MCU并口通信的COG裸 或带驱动板232串口通信的智能

    3.5英寸高清智能串口 8位MCU并口通信的COG裸 或带驱动板232串口通信的
    的头像 发表于 02-18 14:49 766次阅读
    3.5英寸高清<b class='flag-5'>智能</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b> 8位<b class='flag-5'>MCU</b>并口通信的COG裸<b class='flag-5'>屏</b> 或带驱动板232<b class='flag-5'>串口</b>通信的<b class='flag-5'>智能</b><b class='flag-5'>屏</b>