public static void main(String[] args) throwsException {
String commPortId= "COM2";int baudRate = 9600;int flowControlIn = 0;int flowControlOut = 0;int dataBits = 8;int stopBits = 1;int parity = 0;
SerialPortWrapperImpl wrapper= newSerialPortWrapperImpl(commPortId, baudRate, flowControlIn, flowControlOut, dataBits, stopBits, parity);
ModbusFactory modbusFactory= newModbusFactory();final ModbusSlaveSet listener =modbusFactory.createRtuSlave(wrapper);//Add a few slave process images to the listener.
listener.addProcessImage(getModscanProcessImage(1));new Thread(newRunnable() {
@Overridepublic voidrun() {try{
listener.start();
}catch(ModbusInitException e) {
e.printStackTrace();
}
}
}).start();
}static class BasicProcessImageListener implementsProcessImageListener {@Overridepublic void holdingRegisterWrite(int offset, short oldValue, shortnewValue) {
System.out.println("HR at " + offset + " was set from " + oldValue + " to " +newValue);
}
}static BasicProcessImage getModscanProcessImage(intslaveId) {//创建10个可读写的数字类型,与主机对应
BasicProcessImage processImage = newBasicProcessImage(slaveId);
processImage.setInvalidAddressValue(Short.MIN_VALUE);
processImage.setHoldingRegister(0,(short) 8);
processImage.setHoldingRegister(1,(short) 8);
processImage.setHoldingRegister(2,(short) 8);
processImage.setHoldingRegister(3,(short) 8);
processImage.setHoldingRegister(4,(short) 8);
processImage.setHoldingRegister(5,(short) 8);
processImage.setHoldingRegister(6,(short) 8);
processImage.setHoldingRegister(7,(short) 8);
processImage.setHoldingRegister(8,(short) 8);
processImage.setHoldingRegister(9,(short) 8);//Add an image listener.
processImage.addListener(newBasicProcessImageListener());returnprocessImage;
}