AWTK MODBUS Client channel 模型

名称:modbus_client_channel

在这里插入图片描述

功能:通过 modbus 协议访问远程 slave 设备上的数据,需要配合 modbus_client模型一起使用。用于将 modbus client 中的 channel 包装成view_model或者view_model_array

一般来说不需要,直接使用modbus_client模型即可。只有在需要将通道中的数据当成多条记录,方便绑定到 ListView 时,才需要使用。

1. 参数

  • name 用于加载配置文件。路径为:design/default/data/<name>.json

modbus_client_channel必须在modbus_client模型之下创建。

示例:

<window v-model="modbus_client(name=modbus_demo,share=true)" name="home_page">
  <view x="0" y="0" w="100%" h="100%" v-model="modbus_client_channel(name=modbus_demo_input_register)">
  ...
  </view>
</window>  

这里配置文件路径为:design/default/data/modbus_demo_input_register.json

2. 配置文件格式

使用 JSON 文件描述配置。

2.1 基本配置

  • channel 通道的名字。在modbus_client模型的配置中必须存在。

  • items 通道中记录的个数。

items > 1 为数组模型,否则为非数组模型。为数组模型时,可以绑定到 ListView,每一项数据绑定到一个列表项中。
当 items > 1,整个通道的数据被分成 items 等份。每一份的长度为:通道总数据长度/items,数据访问的范围必须在一份数据的长度范围内。

示例:

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

2.3 变量定义

UI 可以直接绑定通道中的数据。为了提高可读性和灵活性,可以定义一些变量,将变量映射到通道地址。

  • 定义变量
  "variables": {
    "level": "byte[0].uint32",
    "time": "byte[4].uint32",
    "message": "byte[8].str[54]"
  }
  • 使用变量
  <progress_circle name="progress_circle" x="c" y="100" w="100" h="100" max="10000" v-data:value="{温度}" />
  <progress_circle name="progress_circle" x="c" y="220" w="100" h="100" max="10000" v-data:value="{湿度}" />

3. 访问通道中的数据。

格式:<通道数据类型>[offset].(bit_offset|<变量数据类型>)

详情 modbus client 中的 访问通道中的数据。不同之处是不需要指定通道名称前缀。

示例:

  • byte[0].uint32 从偏移为 0 的地址读取 32 位无符号整数。
  • byte[4].uint32 从偏移为 4 的地址读取 32 位无符号整数。
  • byte[8].str[54] 从偏移为 8 的地址读取最大长度为 54 字节的字符串。字符串本身必须于以空字符’\0’结束。

内置属性

属性类型说明
url字符串URL
connected布尔当前是否连接。
name字符串名称。

示例

  <label x="c" y="10" w="50%" h="40" v-data:tr_text="{url}" />
  <label x="c" y="60" w="50%" h="40" v-data:tr_text="{connected ? 'connected' : 'no connection'}" />

内置命令

命令参数说明
update更新通道数据 (read/write)

示例

<button x="c:-100" y="b:10" w="168" h="36" text="Update" v-on:click="{update}" />

完整示例

请参考:demo_modbus_client_channel_input_registers

注意

如果数据需要进行字节序转换,可以调用 fscript 函数,具体请参考:https://gitee.com/zlgopen/awtk/blob/master/docs/fscript_endian.md

  • 28
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值