Исключение бросается, когда я пытаюсь закрыть раб ModbusJAVA

Программисты JAVA общаются здесь
Anonymous
Исключение бросается, когда я пытаюсь закрыть раб Modbus

Сообщение Anonymous »

Я использую библиотеку Modbus J2Mod 3.1.1 с Java 8. В моем приложении Javafx я создал класс обертки, чтобы справиться с взаимодействием с экземпляром Slave Modbus. Класс обертки реализует запускаемый интерфейс, чтобы не заморозить пользовательский интерфейс при открытии и закрытии рабов. Но я получаю исключение, когда пытаюсь закрыть раба. Как я могу это исправить? Ниже приведен фрагмент класса обертки и журналы после того, как я вызовут method .
@Slf4j
public class ModbusSlaveWrapper implements Runnable {
// Private fields
private volatile boolean running = true;

void createSlave() {
try {
slave = ModbusSlaveFactory.createUDPSlave(InetAddress.getByName(ipAddress), port);
int unitId = 1;
slave.addProcessImage(unitId, processImage);
log.info("Slave created and process image is added");
slave.open();
log.info("Slave is listening");
} catch (Exception e) {
log.error(e.getMessage());
}
}

public void closeSlave() {
log.info("Closing the slave");
running = false;
}

@Override
public void run() {
while (running) {
if (slave == null) {
createSlave();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
log.error(e.getMessage());
}
}
try {
ModbusSlaveFactory.close();
} catch (Exception e) {
log.error(e.getMessage());
} finally {
log.info("Closed the slave");
}

// Other methods
}
< /code>

1:07:46.015 [Thread -9] Информация G.T.R.C.W.T.M.ModbusslaveWrapper - Создано и процессовое изображение. />11:07:51.682 [Тема приложения Javafx] Информация G.T.R.C.W.T.M.ModbusslaveWrapper - Закрытие раба
11:07:57.219 [Thread -9] Info G.T.R.C.W.M.ModbusslaveWrapper - Закрыт Slave
Слушатель [порт: 502]] Ошибка C.G.J.Modbus.net.modbusudplistener - Исключение произошло перед EOF при обработке запроса
com.ghgande.j2mod.modbus.modbusioexcept com.ghgande.j2mod.modbus.io.modbusudptransport.readrequest (modbusudptransport.java:104) ~ [J2Mod-3.1.1.jar: 3.1.1]
at com.ghgande.j2mod.modbus.net.abstractmodbuslistener.handlerequest (Abstractmodbuslistener.java:155) ~ [j2mod-3.1.1.jar: 3.1.1]
at com.ghgande.j2mod.modbus.net.modbusudplistener.run (modbusudplistener.java:107) ~ [j2mod-3.1.1.jar: 3.1.1]
at java.lang.thread.run (Thread.java:745) [Na: 1,8.0_121]. java.lang.illegalmonitorstateexception: null
at java.util.concurrent.locks.reentrantlock $ sync.treleas java.util.concurrent.locks.abstractqueudsynchronizer.release (Abstractqueudsynchronizer.java:1261) ~ [Na: 1.8.0_121]
at java.util.concurrent.locks.reentrantlock.unlock (reentrantlock.java:457) ~ ~ ~ [1.8.0111111111 />at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:449) ~[na:1.8.0_121]
at com.ghgande.j2mod.modbus.net.UDPSlaveTerminal.receiveMessage(UDPSlaveTerminal.java:122) ~ [j2mod-3.1.1.jar: 3.1.1]
at com.ghgande.j2mod.modbus.io.modbusudptransport.readrequest (modbusudptransport.java:94) ~ [j2mod-3.1.jar: 3.1.1]
... 3. /> < /blockquote>

Подробнее здесь: https://stackoverflow.com/questions/794 ... dbus-slave

Вернуться в «JAVA»