加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

【技术分享】AWTK 开源串口屏开发(17) - 通过 MODBUS 访问数组数据

04/27 09:25
1299
阅读需 8 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在 AWTK 串口屏中,内置 MODBUS 客户端通道模型,不用编写代码即可实现在 ListView 中显示远程设备上的数组数据。

1. 功能

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

2. 创建项目

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

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

3. 制作界面

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

4. 添加绑定规则

第一次用到列表视图,有几点需要特别说明一下:列表视图中的滚动视图需要指定 v-for-items 属性。

属性 说明
v-for-items true 它保证其下的列表项,会根据数据自动生成|

4.1 几个特殊的变量

      • index 特指序数。item 特指当前的数据。比如在这里 ‘item.level’ 表示告警级别,‘item.time’ 表示时间,‘item.device’ 表示设备,‘item.message’ 表示告警信息。selected_index 表示当前选中的序数(可在

    列表视图

      • 之外绑定)。items 表示当前列表视图中的数据个数(可在

    列表视图

      之外绑定)。

4.2 序数

绑定属性 绑定规则 说明
v-data:value {index} index 特指序数。

4.3 告警级别前面提到告警级别是正数,可以通过 item.level 来获取它。它的意义对应为:调试 (0); 信息 (1); 警告 (2); 错误 (3),我们需要用 one_of 函数将它转换为对应的字符串。

绑定属性 绑定规则 说明
v-data:value {one_of(‘调试;信息;警告;错误’, item.level)} 这里的 one_of 的功能是从指定的字符串数组中取出对应的子串。

4.4 时间时间是整数(秒数),可以通过 item.time 来获取。

绑定属性 绑定规则 说明
v-data:value {date_time_format(item.time, 'Y-M-D h:m:s')} 需要用 date_time_format 将 epoch 时间转换成人类可读的时间。

4.5 告警信息告警信息是一个字符串,可以通过 item.message 来获取。

绑定属性 绑定规则 说明
v-data:value {item.message}  

_

4.6 URL

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

4.7 连接状态

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

4.8 窗口模型

指定窗口的模型为:

绑定属性 绑定规则 说明
v-model modbus_client(name=modbus_demo) 配置文件名对应于 modbus_demo.json

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

4.9 视图模型

为了使用 channel 的模型,还需要在窗口的下一级控件指定 modbus_client_channel 模型。

绑定属性 绑定规则 说明
v-model modbus_client_channel(name=modbus_demo_input_register) 配置文件名对应于 modbus_demo_input_register.json

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

5. 配置文件

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

 

{  "url":"tcp://localhost:502",  "channels" : [    {      "update_interval" : 5000,      "name" : "read_input_registers",      "access_type" : 4,      "read" : {        "offset" : 0,        "length" : 3200      }    }  ]}

在上面的配置中,定义了通道 read_input_registers,长度为 3200 个 registers,共 6400 字节。

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

{  "channel":"read_input_registers",  "items": 100,  "variables": {    "level": "byte[0].uint32",    "time": "byte[4].uint32",    "message": "byte[8].str[56]"  }}

在上面的配置中,将通道 read_input_registers 中的数据,分成 100 等份,也就是看作 100 元素的数组,每个元素 64 字节。这 64 字节的数据为三个成员:

level: 4 字节,无符号整数;

time: 4 字节,无符号整数;

message: 56 字节,字符串。

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

7. 编译运行

运行 bin 目录下的 demo 程序:

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

8. 注意

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

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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
DP83848IVV/NOPB 1 National Semiconductor Corporation IC DATACOM, ETHERNET TRANSCEIVER, PQFP48, 7 X 7 MM, GREEN, LQFP-48, Network Interface
$4.95 查看
USB3320C-EZK 1 SMSC Interface Circuit, 5 X 5 MM, 0.90 MM HEIGHT, ROHS COMPLIANT, QFN-32
$2.09 查看
KSZ9477STXI 1 Microchip Technology Inc IC ETHERNET SWITCH 7PORT 128TQFP

ECAD模型

下载ECAD模型
$18.04 查看
致远电子

致远电子

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。收起

查看更多

相关推荐

电子产业图谱