Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 套接字被中断-Modbus-J2Mod_Java_Sockets_Udp_Communication_Modbus - Fatal编程技术网

Java 套接字被中断-Modbus-J2Mod

Java 套接字被中断-Modbus-J2Mod,java,sockets,udp,communication,modbus,Java,Sockets,Udp,Communication,Modbus,我正在用Java开发一个modbus UDP实现[J2Mod(2.3.4)]。我几乎没有找到有用的文档。我写了一个奴隶,如下所示 它基本上是创建一个UDP从站,并为unitId=0和unitId=1添加processImage。然后它写出数字输入和数字输出 public class Slave { private SimpleProcessImage image; private ModbusSlave slave; public Slave(){ ima

我正在用Java开发一个modbus UDP实现[J2Mod(2.3.4)]。我几乎没有找到有用的文档。我写了一个奴隶,如下所示

它基本上是创建一个UDP从站,并为unitId=0和unitId=1添加processImage。然后它写出数字输入和数字输出

public class Slave {
    private SimpleProcessImage image;
    private ModbusSlave slave;
    public Slave(){
        image = new SimpleProcessImage();
        for (int i = 0; i < 62000; i++) {
            image.addDigitalOut(i, new SimpleDigitalOut(false));
            image.addDigitalIn(i, new SimpleDigitalIn(false));
         }
         (new Timer()).scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                    read();
            }
        }, 10000, 10000);
        startServer();
    }

private void read() {
        System.out.print("Read In : ");
        for (int i = 0; i < interSize; i++) {
            System.out.print((image.getDigitalIn(i).isSet() ? 1 : 0) + " ");
        }
        System.out.print("Read Out: ");
        for (int i = 0; i < interSize; i++) {
            System.out.print((image.getDigitalOut(i).isSet() ? 1 : 0) + " ");
        }
}
    public void startServer() {
        try {
            slave = ModbusSlaveFactory.createUDPSlave(502);
            slave.addProcessImage(0, image);
            slave.addProcessImage(1, image);
            slave.open();
        } catch (ModbusException e) {
            e.printStackTrace();
        }
    }
}
10:42:30.611 [Timer-1] ERROR c.g.j.m.io.ModbusUDPTransaction - Cannot send UDP message
com.ghgande.j2mod.modbus.ModbusIOException: Socket was interrupted
    at com.ghgande.j2mod.modbus.io.ModbusUDPTransport.readResponse(ModbusUDPTransport.java:132) ~[j2mod-2.3.4.jar:2.3.4]
    at com.ghgande.j2mod.modbus.io.ModbusUDPTransaction.execute(ModbusUDPTransaction.java:129) ~[j2mod-2.3.4.jar:2.3.4]
    at com.ghgande.j2mod.modbus.facade.AbstractModbusMaster.readCoils(AbstractModbusMaster.java:97) [j2mod-2.3.4.jar:2.3.4]
    at gov.tubitak.ys03.railcore.request.RailModbusUDPMaster.readCoils(RailModbusUDPMaster.java:42) [railcore-0.0.26.jar:na]
    at gov.tubitak.ys03.railcore.service.strategy.ILReaderSchedule.run(ILReaderSchedule.java:67) [railcore-0.0.26.jar:na]
    at java.util.TimerThread.mainLoop(Unknown Source) [na:1.8.0_121]
    at java.util.TimerThread.run(Unknown Source) [na:1.8.0_121]
Caused by: java.net.SocketTimeoutException: Receive timed out
    at java.net.TwoStacksPlainDatagramSocketImpl.receive0(Native Method) ~[na:1.8.0_121]
    at java.net.TwoStacksPlainDatagramSocketImpl.receive(Unknown Source) ~[na:1.8.0_121]
    at java.net.DatagramSocket.receive(Unknown Source) ~[na:1.8.0_121]
    at com.ghgande.j2mod.modbus.net.UDPMasterTerminal.receiveMessage(UDPMasterTerminal.java:100) ~[j2mod-2.3.4.jar:2.3.4]
    at com.ghgande.j2mod.modbus.io.ModbusUDPTransport.readResponse(ModbusUDPTransport.java:122) ~[j2mod-2.3.4.jar:2.3.4]
    ... 6 common frames omitted