демон это программа работающая в фоновом режиме, определение не точное но смысл должен быть понятен. Вот выкладываю для мастера МодбасТСР слейв с адресом 2. Регистр №0 - часы, №1 - минуты и №3 - секунды.
import java.net.*
import java.util.*
import net.wimpi.modbus.*
import net.wimpi.modbus.net.*
import net.wimpi.modbus.io.*
import net.wimpi.modbus.msg.*
import net.wimpi.modbus.util.*
import net.wimpi.modbus.procimg.*
cal = new GregorianCalendar();
spi = new SimpleProcessImage();
def getSiPrIm() { return spi; }
def getGreg() { return cal; }
def mySlave() {
ModbusTCPListener listener = null;
getSiPrIm().addRegister(new SimpleRegister(0));
getSiPrIm().addRegister(new SimpleRegister(0));
getSiPrIm().addRegister(new SimpleRegister(0));
ModbusCoupler.getReference().setProcessImage(spi);
ModbusCoupler.getReference().setMaster(false);
ModbusCoupler.getReference().setUnitID(2);
listener = new ModbusTCPListener(3);
listener.setPort(Modbus.DEFAULT_PORT);
listener.start();
println listener.isListening()
}
tScript = new Thread(new Runnable() {
public void run() {
mySlave()
}
});
tScript.start();
tScript1 = new Thread(new Runnable() {
public void run() {
while(true) {
try{Thread.sleep(1000)}catch(Exception e){}
getGreg().setTime(new java.util.Date())
getSiPrIm().getRegister(0).setValue(getGreg().get( Calendar.HOUR_OF_DAY))
getSiPrIm().getRegister(1).setValue(getGreg().get( Calendar.MINUTE))
getSiPrIm().getRegister(2).setValue(getGreg().get( Calendar.SECOND))
}
}
});
tScript1.start();