当前位置: 首页 > news >正文

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

在 AWTK 串口屏中,内置了 MODBUS Client 的模型,支持用 MODBUS 协议从远程设备获取数据。不用编写一行代码即可实现对远程设备数据的显示和修改。

1. 功能

不用编写代码,实现对远程设备数据的显示和修改。

2. 创建项目

从模板创建项目,将 hmi/template_app 拷贝 hmi/modbus_client_input_registers 即可。

第一个项目最好不要放到其它目录,因为放到其它目录需要修改配置文件中的路径,等熟悉之后再考虑放到其它目录。路径中也不要中文和空格,避免不必要的麻烦。

3. 制作界面

用 AWStudio 打开上面 modbus_client_input_registers 目录下的 project.json 文件。里面有一个空的窗口,做出类似下面的界面。

在这里插入图片描述

4. 添加绑定规则

4.1 URL

绑定属性绑定规则说明
v-data:value{url}url 表示远程设备的 URL

4.2 连接状态

绑定属性绑定规则说明
v-data:value{connected ? ‘connected’ : ‘no connection’}connected 表示当前是否连接

4.3 湿度

绑定属性绑定规则说明
v-data:value{湿度}湿度 在配置文件中定义,参考后面的配置

4.4 温度

绑定属性绑定规则说明
v-data:value{温度}温度 在配置文件中定义,参考后面的配置

4.5 窗口模型

  • 指定窗口的模型为
绑定属性绑定规则说明
v-modelmodbus_client(name=modbus_demo)配置文件名对应于 modbus_demo.json

modbus_client 是内置的模型,name 是配置文件的名称,不需要加后缀。

5. 配置文件

配置文件路径 design/default/data/modbus_demo.json

{"url":"tcp://localhost:502","channels" : [{"update_interval" : 3000,"name" : "read_input_registers","access_type" : 4,"read" : {"offset" : 0,"length" : 4}}],"variables": {"温度": "read_input_registers.word[0]","湿度": "read_input_registers.word[1]"}
}
  • url: 远程设备的 URL
  • update_interval: 更新间隔,单位毫秒
  • channels: 通道列表
    • name: 通道名称
    • access_type: 访问类型
    • read: 读取配置
      • offset: 偏移
      • length: 长度
  • variables: 变量列表
    • 温度: 映射到 modbus 通道的 word[0]
    • 湿度: 映射到 modbus 通道的 word[1]

6. 描述需要持久化的数据

7. 编译运行

运行 bin 目录下的 demo 程序:

在这里插入图片描述

点击 Update 按钮,可以手工刷新数据

8. 注意

  • 本项目并没有编写界面相关的代码,AWStudio 在 src/pages 目录下生成了一些代码框架,这些代码并没有用到,可以删除也可以不用管它,但是不能加入编译。

  • 完整示例请参考:demo_modbus_client_input_registers

  • 使用TCP协议时,如果使用modbus slave工具配套测试,需要将unit id设置为255

相关文章:

  • 【微服务】认识Dubbo+基本环境搭建
  • 【QT学习】1.qt初识,创建qt工程,使用按钮,第一个交互按钮
  • Kafka开机自启脚本
  • 数据结构:单调栈和单调队列
  • 【pytest】测试数据存储在 Excel 或 TXT 文件中,如何参数化
  • MongoDB聚合运算符:$linearFill
  • 深入理解数据结构第一弹——二叉树(1)——堆
  • 【动态规划】1223. 掷骰子模拟
  • Linux 环境安装 Elasticsearch 8.X
  • 【医学嵌入模型】中文医疗文本处理大模型 PCL-MedBERT
  • Redis Scan指令解析与使用示例
  • 再见 mysql_upgrade
  • CentOS 7 安装python 3.7 需要必要的依赖。
  • 《Effective C++》《构造/析构/赋值运算——7、为多态基类声明virtual析构函数》
  • SpringBoot实现RabbitMQ的定向交换机(SpringAMQP 实现Direct定向交换机)
  • Apache Pulsar 2.1 重磅发布
  • HTTP--网络协议分层,http历史(二)
  • IDEA 插件开发入门教程
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • MobX
  • Nodejs和JavaWeb协助开发
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Spring核心 Bean的高级装配
  • text-decoration与color属性
  • Vue实战(四)登录/注册页的实现
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 从PHP迁移至Golang - 基础篇
  • - 概述 - 《设计模式(极简c++版)》
  • 记一次删除Git记录中的大文件的过程
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端代码风格自动化系列(二)之Commitlint
  • 嵌入式文件系统
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 事件委托的小应用
  • 思考 CSS 架构
  • Prometheus VS InfluxDB
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​ArcGIS Pro 如何批量删除字段
  • ​TypeScript都不会用,也敢说会前端?
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4)(4.6) Triducer
  • (a /b)*c的值
  • (SpringBoot)第二章:Spring创建和使用
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (独孤九剑)--文件系统
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十三)Maven插件解析运行机制
  • (转载)从 Java 代码到 Java 堆
  • ***监测系统的构建(chkrootkit )
  • ... 是什么 ?... 有什么用处?