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
    +关注

    关注

    146

    文章

    16977

    浏览量

    350208
  • 串口屏
    +关注

    关注

    8

    文章

    530

    浏览量

    37304
  • awtk
    +关注

    关注

    0

    文章

    42

    浏览量

    216
收藏 人收藏

    评论

    相关推荐

    AWTK使用经验】如何更换AWTK SDK与渲染模式

    AWTK是基于C语言开发的跨平台GUI框架。《AWTK使用经验》系列文章将介绍开发AWTK过程中一些常见问题与解决方案,例如:如何播放摄像头画面?如何更换
    的头像 发表于 08-01 08:25 1008次阅读
    【<b class='flag-5'>AWTK</b>使用经验】如何更换<b class='flag-5'>AWTK</b> <b class='flag-5'>SDK</b>与渲染模式

    AWTK 开源串口开发(16) - 提供 MODBUS 服务

    AWTK串口内置MODBUS从站模型,不用编写一行代码即可让串口提供MODBUS服务,让远程设备通过MODBUS协议访问
    的头像 发表于 04-13 08:24 404次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>开源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(16) - 提供 MODBUS 服务

    AWTK 开源串口开发(15) - 通过 MODBUS 访问远程数据

    AWTK串口内置MODBUSClient模型,支持用MODBUS协议从远程设备获取数据。不用编写代码即可实现对远程设备数据的显示和修改。在AWTK
    的头像 发表于 03-30 08:23 373次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>开源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(15) - 通过 MODBUS 访问远程数据

    AWTK 开源串口开发(12) - 记事本应用

    记事本是一个常用的应用程序,在AWTK串口中,内置文件模型和文件选择对话框,无需编写一行传统的代码,即可实现一个简单的记事本应用程序。记事本是一个很常用的应用,用来编辑和查看文本文件非常方便。在
    的头像 发表于 03-09 08:23 321次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>开源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(12) - 记事本应用

    AWTK 开源串口开发(11) - 天气预报

    AWTK串口内置了XML/JSON/INI等各种数据文件的模型,并支持用HTTP/HTTPS从网络获取数据。不用编写一行代码,即可实现天气预报、股票行情、航班查询和快递查询等功能。天气预报是一个很
    的头像 发表于 03-05 08:24 365次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>开源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(11) - 天气预报

    AWTK开源智能串口方案】设计UI界面并上传到串口

    本篇文章将介绍如何使用AWStudio设计串口端的UI界面和添加绑定规则,以及怎么将资源文件上传到串口端。引言:AWTK-HMI是基于
    的头像 发表于 02-22 08:24 662次阅读
    【<b class='flag-5'>AWTK</b><b class='flag-5'>开源</b><b class='flag-5'>智能</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>方案</b>】设计UI界面并上传到<b class='flag-5'>串口</b><b class='flag-5'>屏</b>

    AWTK 开源串口开发(9) - 用户和权限管理

    AWTK串口中,内置用户管理和权限控制的模型,无需编码即可实现登录、登出、修改密码、权限控制、创建用户、删除用户等功能,本文介绍一下用户管理和权限控制的基本用法。用户管理和权限控制是一个常用
    的头像 发表于 02-19 12:10 469次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>开源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(9) - 用户和权限管理

    AWTK开源智能串口方案】HMI端程序移植编译运行

    本篇文章介绍一下AWTK开源智能串口方案串口
    的头像 发表于 01-18 08:24 852次阅读
    【<b class='flag-5'>AWTK</b><b class='flag-5'>开源</b><b class='flag-5'>智能</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>方案</b>】HMI端程序移植<b class='flag-5'>编译</b>及<b class='flag-5'>运行</b>

    AWTK 开源串口开发(6) - 定时器的用法

    定时器是个常用的功能,AWTK串口提供了丰富的定时器函数,用于定时器的启动、停止、暂停、恢复、修改和重置等功能,本文以计时器的例子来介绍定时器的基本用法。定时器也是一个常用的功能,在AWTK
    的头像 发表于 01-13 08:24 534次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>开源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(6) - 定时器的用法

    AWTK 串口开发(5) - MCUSDK 用法

    AWTK开源智能串口,不但开放了串口端全部源码,
    的头像 发表于 01-06 08:24 391次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(5) - <b class='flag-5'>MCU</b>端 <b class='flag-5'>SDK</b> 用法

    AWTK 串口开发(4) - 数据采集

    数据采用是一个常用的功能。在AWTK开源串口中,内置数据采样模型,只需设计用户界面即可实现采样数据的显示和管理。1.功能数据采集是一个常用的功能,
    的头像 发表于 12-30 08:24 375次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(4) - 数据采集

    AWTK 串口开发(3) - 告警信息

    告警信息是一个常用的功能。在AWTK开源串口中,内置告警信息模型,只需设计用户界面即可实现告警信息的显示和管理。1.功能告警信息是一个常用的功能,
    的头像 发表于 12-23 08:24 420次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b>开发(3) - 告警信息

    ​【AWTK开源智能串口方案方案介绍和工作原理

    串口方案,本系列文章介绍如何从零开发HMI程序,包括搭建开发环境、创建HMI运行时工程、修改应用界面以及开发MCU程序。
    的头像 发表于 12-21 08:24 939次阅读
    ​【<b class='flag-5'>AWTK</b><b class='flag-5'>开源</b><b class='flag-5'>智能</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>方案</b>】<b class='flag-5'>方案</b>介绍和工作原理

    【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台运行

    。搭建Linux平台交叉编译环境在上一篇文章我们介绍了使用AWTK开发简单的应用并在PC上模拟运行,本篇文章就来介绍一下怎么让应用程序运行在嵌入式Linux平台上。1
    的头像 发表于 12-07 12:08 668次阅读
    【从0开始创建<b class='flag-5'>AWTK</b>应用程序】<b class='flag-5'>编译</b>应用到嵌入式Linux平台<b class='flag-5'>运行</b>

    AWTK 开源智能串口方案

    AWTK开源智能串口方案发布,旨在解决传统串口
    的头像 发表于 12-02 08:24 877次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>开源</b><b class='flag-5'>智能</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>方案</b>