// Path: src/com/dn9x/modbus/procimg/UnityRegister.java
// public class UnityRegister implements Register {
// 
// 	protected byte[] m_Register = new byte[2];
// 
// 	public UnityRegister() {
// 		m_Register = null;
// 	}
// 
// 
// 	public UnityRegister(byte b1, byte b2) {
// 		m_Register[0] = b1;
// 		m_Register[1] = b2;
// 	}
// 	
// 	public UnityRegister(int value) {
// 		setValue(value);
// 	}
// 
// 	@Override
// 	public int getValue() {
// 		return ((m_Register[0] & 0xff) << 8 | (m_Register[1] & 0xff));
// 	}
// 
// 	@Override
// 	public int toUnsignedShort() {
// 		return ((m_Register[0] & 0xff) << 8 | (m_Register[1] & 0xff));
// 	}
// 
// 	@Override
// 	public short toShort() {
// 		return (short) ((m_Register[0] << 8) | (m_Register[1] & 0xff));
// 	}
// 
// 	@Override
// 	public byte[] toBytes() {
// 		return m_Register;
// 	}
// 
// 	@Override
// 	public void setValue(int v) {
// 		setValue((short) v);
// 	}
// 
// 	@Override
// 	public void setValue(short s) {
// 		if (m_Register == null) {
// 			m_Register = new byte[2];
// 		}
// 		m_Register[0] = (byte) (0xff & (s >> 8));
// 		m_Register[1] = (byte) (0xff & s);
// 		
// 		onChanged();
// 	}
// 
// 	@Override
// 	public void setValue(byte[] bytes) {
// 		if (bytes.length < 2) {
// 			throw new IllegalArgumentException();
// 		} else {
// 			m_Register[0] = bytes[0];
// 			m_Register[1] = bytes[1];
// 		}
// 		
// 		onChanged();
// 	}
// 	
// 	
// 	public void onChanged(){
// 		System.out.println(">>>>>>>>>>>>UnityRegister:这里set了值：" + m_Register);
// 	}
// 
// }


import java.net.InetAddress;
import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.ModbusException;
import net.wimpi.modbus.ModbusIOException;
import net.wimpi.modbus.ModbusSlaveException;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadCoilsRequest;
import net.wimpi.modbus.msg.ReadCoilsResponse;
import net.wimpi.modbus.msg.ReadInputDiscretesRequest;
import net.wimpi.modbus.msg.ReadInputDiscretesResponse;
import net.wimpi.modbus.msg.ReadInputRegistersRequest;
import net.wimpi.modbus.msg.ReadInputRegistersResponse;
import net.wimpi.modbus.msg.ReadMultipleRegistersRequest;
import net.wimpi.modbus.msg.ReadMultipleRegistersResponse;
import net.wimpi.modbus.msg.WriteCoilRequest;
import net.wimpi.modbus.msg.WriteSingleRegisterRequest;
import net.wimpi.modbus.net.TCPMasterConnection;
import com.dn9x.modbus.procimg.UnityRegister;

			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return data;
	}

	/**
	 * 写入数据到真机，数据类型是RE
	 * 
	 * @param ip
	 * @param port
	 * @param slaveId
	 * @param address
	 * @param value
	 */
	public static void writeRegister(String ip, int port, int slaveId,
			int address, int value) {

		try {
			InetAddress addr = InetAddress.getByName(ip);

			TCPMasterConnection connection = new TCPMasterConnection(addr);
			connection.setPort(port);
			connection.connect();

			ModbusTCPTransaction trans = new ModbusTCPTransaction(connection);

// Path: src/com/dn9x/modbus/procimg/UnityRegister.java
// public class UnityRegister implements Register {
// 
// 	protected byte[] m_Register = new byte[2];
// 
// 	public UnityRegister() {
// 		m_Register = null;
// 	}
// 
// 
// 	public UnityRegister(byte b1, byte b2) {
// 		m_Register[0] = b1;
// 		m_Register[1] = b2;
// 	}
// 	
// 	public UnityRegister(int value) {
// 		setValue(value);
// 	}
// 
// 	@Override
// 	public int getValue() {
// 		return ((m_Register[0] & 0xff) << 8 | (m_Register[1] & 0xff));
// 	}
// 
// 	@Override
// 	public int toUnsignedShort() {
// 		return ((m_Register[0] & 0xff) << 8 | (m_Register[1] & 0xff));
// 	}
// 
// 	@Override
// 	public short toShort() {
// 		return (short) ((m_Register[0] << 8) | (m_Register[1] & 0xff));
// 	}
// 
// 	@Override
// 	public byte[] toBytes() {
// 		return m_Register;
// 	}
// 
// 	@Override
// 	public void setValue(int v) {
// 		setValue((short) v);
// 	}
// 
// 	@Override
// 	public void setValue(short s) {
// 		if (m_Register == null) {
// 			m_Register = new byte[2];
// 		}
// 		m_Register[0] = (byte) (0xff & (s >> 8));
// 		m_Register[1] = (byte) (0xff & s);
// 		
// 		onChanged();
// 	}
// 
// 	@Override
// 	public void setValue(byte[] bytes) {
// 		if (bytes.length < 2) {
// 			throw new IllegalArgumentException();
// 		} else {
// 			m_Register[0] = bytes[0];
// 			m_Register[1] = bytes[1];
// 		}
// 		
// 		onChanged();
// 	}
// 	
// 	
// 	public void onChanged(){
// 		System.out.println(">>>>>>>>>>>>UnityRegister:这里set了值：" + m_Register);
// 	}
// 
// }


// Path: src/com/dn9x/modbus/util/ModbusUtil.java
import java.net.InetAddress;
import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.ModbusException;
import net.wimpi.modbus.ModbusIOException;
import net.wimpi.modbus.ModbusSlaveException;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadCoilsRequest;
import net.wimpi.modbus.msg.ReadCoilsResponse;
import net.wimpi.modbus.msg.ReadInputDiscretesRequest;
import net.wimpi.modbus.msg.ReadInputDiscretesResponse;
import net.wimpi.modbus.msg.ReadInputRegistersRequest;
import net.wimpi.modbus.msg.ReadInputRegistersResponse;
import net.wimpi.modbus.msg.ReadMultipleRegistersRequest;
import net.wimpi.modbus.msg.ReadMultipleRegistersResponse;
import net.wimpi.modbus.msg.WriteCoilRequest;
import net.wimpi.modbus.msg.WriteSingleRegisterRequest;
import net.wimpi.modbus.net.TCPMasterConnection;
import com.dn9x.modbus.procimg.UnityRegister;


			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return data;
	}

	/**
	 * 写入数据到真机，数据类型是RE
	 * 
	 * @param ip
	 * @param port
	 * @param slaveId
	 * @param address
	 * @param value
	 */
	public static void writeRegister(String ip, int port, int slaveId,
			int address, int value) {

		try {
			InetAddress addr = InetAddress.getByName(ip);

			TCPMasterConnection connection = new TCPMasterConnection(addr);
			connection.setPort(port);
			connection.connect();

			ModbusTCPTransaction trans = new ModbusTCPTransaction(connection);

			UnityRegister register = new UnityRegister(value);