android modbus协议之 (二)modbus-TCP/IP通信(安卓系统作为主站完善代码)

至此modbus_TCPmast管理类基本已经写完并做了一个测试的APP大家可以试一试稍后我把APP的源代码上传上去

上一节使用jamod库做了一个简单的读取,在完善代码的过程中其中写入多寄存器的时候碰到了点问题我把代码贴出来大家注意一下

在写入保持寄存器时需要用到这个请求的方法
public WriteSingleRegisterRequest(int ref, Register registers)
但是Register是个抽象类 new不出来 所以各种搜索,弄不好,突然发现jamod里面竟然有demo瞬间明白了,真正的类在这里呢
public class SimpleRegister extends SynchronizedAbstractRegister implements Register

jamod demo存放的地方大家有时间看一下

在这里插入图片描述
在这里插入图片描述

  /**
     * @函数名称: write_F06_4x(写入 功能码6 4x区)
     * @功能:   功能码06  写入4x分区(保持寄存器) 单个寄存器数据 此部分的寄存器可读可写 03功能码读取 06写入 16写入多个
     * @输入参数: 寄存器起始地址  需要设置的值
     * @输出类型:无
     * @作者: 腾飞
     * function code 06 write single register
     */
    public void write_F06_4x(final  int register_addr,final int value){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                  connect_device();
                    //准备请求

                    SimpleRegister new_out = new SimpleRegister(value);
                    WriteSingleRegisterRequest req=new WriteSingleRegisterRequest(register_addr,new_out); //写入单个寄存器
                    req.setUnitID(unitID);//

                    //准备处理
                    ModbusTCPTransaction trans = new ModbusTCPTransaction(mconnection);//开始处理
                    trans.setRequest(req);//设置地址
                    trans.execute();

                    WriteSingleRegisterResponse res=(WriteSingleRegisterResponse) trans.getResponse();//获取获取写入线圈请求响应

                    modbus_callback.mcallback(6,false,"function code 06 write single register");
                }catch (Exception e){

                    modbus_callback.mcallback(6,false,e.getMessage());
                }

            }
        }).start();

    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值