JLibModbusRead.java 3.62 KB
package com.huaheng.api.dianqi;


import java.net.InetAddress;

import com.intelligt.modbus.jlibmodbus.Modbus;
import com.intelligt.modbus.jlibmodbus.exception.ModbusIOException;
import com.intelligt.modbus.jlibmodbus.exception.ModbusNumberException;
import com.intelligt.modbus.jlibmodbus.exception.ModbusProtocolException;
import com.intelligt.modbus.jlibmodbus.master.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;


/**
 * Hello world!
 *
 */
public class JLibModbusRead {
    public static void main(String[] args) {
        try {
            // 设置主机TCP参数
            TcpParameters tcpParameters = new TcpParameters();
            // 设置TCP的ip地址
            InetAddress address = InetAddress.getByName("127.0.0.1");
            // TCP参数设置ip地址
            // tcpParameters.setHost(InetAddress.getLocalHost());
            tcpParameters.setHost(address);
            // TCP设置长连接
            tcpParameters.setKeepAlive(true);
            // TCP设置端口,这里设置是默认端口502
            tcpParameters.setPort(Modbus.TCP_PORT);
            // 创建一个主机
            ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParameters);
            Modbus.setAutoIncrementTransactionId(true);
            int slaveId = 1;//从机地址
            int offset = 9;//寄存器读取开始地址
            int quantity = 1;//读取的寄存器数量
            try {
                if (!master.isConnected()) {
                    master.connect();// 开启连接
                }
//                 * 读线圈:  ON=1,OFF=0
//                 * 读离散量     ON=1,OFF=0
//                 * 读保存寄存器    指定数据类型(可以是Float)
//                 * 读输入寄存器    指定数据类型(可以是Float)
              //  boolean[] readCoils = master.readCoils(slaveId, offset, quantity);
              //  boolean[] discreteInputs = master.readDiscreteInputs(slaveId, offset, quantity);
              //  int[] readHoldingRegisters = master.readHoldingRegisters(slaveId, offset, quantity);
                int[] readInputRegisters = master.readHoldingRegisters(slaveId, offset, quantity);

//                for (boolean value : readCoils) {
//                    System.out.println("readCoils:Address: " + offset++ + ", Value: " + value);
//                }
//
//                for (boolean value : discreteInputs) {
//                    System.out.println("discreteInputs:Address: " + offset++ + ", Value: " + value);
//                }
//
//                for (int value : readHoldingRegisters) {
//                    System.out.println("readHoldingRegisters:Address: " + offset++ + ", Value: " + value);
//                }

                // 控制台输出
                for (int value : readInputRegisters) {
                    System.out.println("readInputRegisters:Address: " + offset++ + ", Value: " + value);
                   // byte[] bytes = toHH(value);
                }




            } catch (ModbusProtocolException e) {
                e.printStackTrace();
            } catch (ModbusNumberException e) {
                e.printStackTrace();
            } catch (ModbusIOException e) {
                e.printStackTrace();
            } finally {
                try {
                    master.disconnect();
                } catch (ModbusIOException e) {
                    e.printStackTrace();
                }
            }
        } catch (RuntimeException e) {
            throw e;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }



}