更新记录

1.3.0(2023-05-18)

增加检测连接是否正常的方法

1.2.1(2023-01-10)

1、优化连接的返回信息 2、连接时可自定义unitId

1.2.0(2022-11-29)

  1. 支持连接多个IP
  2. 优化返回值的格式
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


Modbus TCP通讯插件

介绍

本插件支持Modbus通讯协议定义的四种常用的寄存器,分别为:

  1. 线圈状态(coil) 对应的方法为readCoil、readCoils、writeCoil和writeCoils
  2. 离散输入状态(discrete) 对应的方法为readInputDiscrete和readInputDiscretes
  3. 保持寄存器(holding) 对应的方法为readRegister、readRegisters、writeRegister和writeRegisters
  4. 输入寄存器(input) 对应的方法为readInputRegister和readInputRegisters

使用说明

  1. 引用插件
    const testModbus = uni.requireNativePlugin("firefly-modbus")
  2. 连接
    const host = '127.0.0.1';
    const port = 502;
    const useRTU = false;
    // 自动重连间隔(单位毫秒,0表示不自动重连)
    const reconnectInterval = 0
    testModbus.connect(
        {
            'clientId' : 2,      // 客户端ID,1-255,默认为1
            'unitId' : 1,        // Modbus模块的设备id,默认为1
            'host' : host,
            'port' : port,
            'useRTU' : useRTU,
            'reconnectInterval' : reconnectInterval,
        }, 
        (result) => {
            modal.toast({
                message: result.msg,
                duration: 2
            });
        }
    );
  3. 读数据
    // 读取线圈状态
    var coilAddr = 1;
    testModbus.readCoil(coilAddr, (result) => {
        if (result.code == 0) {
            modal.toast({
                message: result.msg + ", 数据为" + result.data,
                duration: 2
            });
        } else {
            modal.toast({
                message: result.msg,
                duration: 2
            });
        }
    });
    // 或者 指定clientId读取线圈状态
    testModbus.readCoilByClientId(1, coilAddr, (result) => {
        if (result.code == 0) {
            modal.toast({
                message: result.msg + ", 数据为" + result.data,
                duration: 2
            });
        } else {
            modal.toast({
                message: result.msg,
                duration: 2
            });
        }
    });
  4. 写数据
    // 写入线圈状态
    var coilAddr = 1;
    // 往线圈状态地址中写入的值
    var coilVal = 1;
    testModbus.writeCoil(coilAddr, coilVal, (result) => {
        modal.toast({
            message: result.msg,
            duration: 2
        });
    });
    // 或者 指定clientId写入线圈状态
    testModbus.writeCoilByClientId(1, coilAddr, coilVal, (result) => {
        modal.toast({
            message: result.msg,
            duration: 2
        });
    });
  5. 断开连接
    // 断开连接,默认断开clientId=1的连接
    testModbus.disconnect();
    // 或者 指定clientId,断开连接
    testModbus.disconnectByClientId(1);
  6. 检测连接是否正常
    // 每隔5秒钟检测一次连接是否正常
    setInterval(() => {
        // 第一个参数是clientId
        // 第二个参数是要读取的保持寄存器的地址
        testModbus.checkConnection(1, 0, (result) => {
            console.log(result.msg)
            if (result.code != 0) {
                modal.toast({
                    message: result.msg,
                    duration: 2
                });
            }
        })
    }, 5000);

方法说明

  1. readCoil(addr, callback):读取单个线圈状态

    参数名 说明 示例
    addr 线圈状态地址 101
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": 1, "msg": "读取成功"}
  2. writeCoil(addr, val, callback):写入单个线圈状态

    参数名 说明 示例
    addr 线圈状态地址 101
    val 要写入线圈状态的值 1或者0
    callback 回调方法,(result) => {} result格式: {"code": 0, "msg": "写入成功"
  3. readCoils(addr, count, callback):读取多个线圈状态

    参数名 说明 示例
    addr 线圈状态地址 101
    count 从addr开始,线圈状态地址的偏移个数 2
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": [0,1], "msg": "读取成功"}
  4. writeCoils(addr, vals, callback):写入多个线圈状态

    参数名 说明 示例
    addr 线圈状态地址 101
    vals 要写入线圈状态的值,数组格式 [1,0]
    callback 回调方法,(result) => {} result格式: {"code": 0, "msg": "写入成功"
  5. readRegister(addr, callback):读取单个保持寄存器中的数据

    参数名 说明 示例
    addr 保持寄存器地址 400007
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": 128, "msg": "读取成功"}
  6. writeRegister(addr, val, callback):写入单个保持寄存器中的数据

    参数名 说明 示例
    addr 保持寄存器地址 101
    val 要写入保持寄存器的值 122
    callback 回调方法,(result) => {} result格式: {"code": 0, "msg": "写入成功"
  7. readRegisters(addr, count, callback):读取多个保持寄存器中的数据

    参数名 说明 示例
    addr 保持寄存器地址 400007
    count 从addr开始,保持寄存器地址的偏移个数 2
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": [21,16], "msg": "读取成功"}
  8. writeRegisters(addr, vals, callback):写入多个保持寄存器中的数据

    参数名 说明 示例
    addr 保持寄存器地址 101
    vals 要写入保持寄存器的值,数组格式 [112,123]
    callback 回调方法,(result) => {} result格式: {"code": 0, "msg": "写入成功"
  9. readInputRegister(addr, callback):读取单个输入寄存器中的数据

    参数名 说明 示例
    addr 输入寄存器地址 300007
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": 128, "msg": "读取成功"}
  10. readInputRegisters(addr, count, callback):读取多个输入寄存器中的数据

    参数名 说明 示例
    addr 输入寄存器地址 300007
    count 从addr开始,输入寄存器地址的偏移个数 2
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": [121,116], "msg": "读取成功"}
  11. readInputDiscrete(addr, callback):读取单个离散输入状态

    参数名 说明 示例
    addr 离散输入状态地址 100001
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": 1, "msg": "读取成功"}
  12. readInputDiscretes(addr, count, callback):读取多个离散输入状态

    参数名 说明 示例
    addr 离散输入状态地址 100001
    count 从addr开始,离散输入状态地址的偏移个数 2
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": [0,1], "msg": "读取成功"}
  13. readCoilByClientId(clientId, addr, callback):读取单个线圈状态

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 线圈状态地址 101
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": 1, "msg": "读取成功"}
  14. writeCoilByClientId(clientId, addr, val, callback):写入单个线圈状态

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 线圈状态地址 101
    val 要写入线圈状态的值 1或者0
    callback 回调方法,(result) => {} result格式: {"code": 0, "msg": "写入成功"
  15. readCoilsByClientId(clientId, addr, count, callback):读取多个线圈状态

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 线圈状态地址 101
    count 从addr开始,线圈状态地址的偏移个数 2
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": [0,1], "msg": "读取成功"}
  16. writeCoilsByClientId(clientId, addr, vals, callback):写入多个线圈状态

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 线圈状态地址 101
    vals 要写入线圈状态的值,数组格式 [1,0]
    callback 回调方法,(result) => {} result格式: {"code": 0, "msg": "写入成功"
  17. readRegisterByClientId(clientId, addr, callback):读取单个保持寄存器中的数据

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 保持寄存器地址 400007
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": 128, "msg": "读取成功"}
  18. writeRegisterByClientId(clientId, addr, val, callback):写入单个保持寄存器中的数据

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 保持寄存器地址 101
    val 要写入保持寄存器的值 122
    callback 回调方法,(result) => {} result格式: {"code": 0, "msg": "写入成功"
  19. readRegistersByClientId(clientId, addr, count, callback):读取多个保持寄存器中的数据

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 保持寄存器地址 400007
    count 从addr开始,保持寄存器地址的偏移个数 2
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": [21,16], "msg": "读取成功"}
  20. writeRegistersByClientId(clientId, addr, vals, callback):写入多个保持寄存器中的数据

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 保持寄存器地址 101
    vals 要写入保持寄存器的值,数组格式 [112,123]
    callback 回调方法,(result) => {} result格式: {"code": 0, "msg": "写入成功"
  21. readInputRegisterByClientId(clientId, addr, callback):读取单个输入寄存器中的数据

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 输入寄存器地址 300007
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": 128, "msg": "读取成功"}
  22. readInputRegistersByClientId(clientId, addr, count, callback):读取多个输入寄存器中的数据

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 输入寄存器地址 300007
    count 从addr开始,输入寄存器地址的偏移个数 2
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": [121,116], "msg": "读取成功"}
  23. readInputDiscreteByClientId(clientId, addr, callback):读取单个离散输入状态

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 离散输入状态地址 100001
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": 1, "msg": "读取成功"}
  24. readInputDiscretesByClientId(clientId, addr, count, callback):读取多个离散输入状态

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    addr 离散输入状态地址 100001
    count 从addr开始,离散输入状态地址的偏移个数 2
    callback 回调方法,(result) => {} result格式: {"code": 0, "data": [0,1], "msg": "读取成功"}
  25. checkConnection(clientId, regAddr, callback):检测连接是否正常

    参数名 说明 示例
    clientId 客户端ID,1-255 1
    regAddr 保持寄存器地址 100001
    callback 回调方法,(result) => {} ,result.code为0表示连接正常,-3表示连接未找到,-4表示连接已断开 result格式: {"code": 0, "msg": "连接正常"}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问