| | |
| | | ModbusTcp modbusTcp; |
| | | ModbusTcp modbusTcpLink = null; |
| | | String temp = Constant.YN_N; |
| | | int addrExe = 65535; |
| | | for (ExeDevice exeDevice : deviceList) { |
| | | device = deviceService.getCacheDeviceById(exeDevice.getCompanyId(), exeDevice.getId()); |
| | | |
| | |
| | | |
| | | if (null == modbusTcpLink) { |
| | | //根据设备目标状态,调用MODBUS执行 |
| | | addrExe = Integer.valueOf(temp) - 1; |
| | | modbusTcp.setAddrExe(addrExe); |
| | | modbusTcp.setAddrExe(this.getAddrExe(temp)); |
| | | doWriteExe(modbusTcp, device.getTargetStatus()); |
| | | continue; |
| | | } |
| | |
| | | |
| | | //先开窗口 |
| | | temp = modbusTcp.getAddrOpen(); |
| | | addrExe = Integer.valueOf(temp) - 1; |
| | | modbusTcp.setAddrExe(addrExe); |
| | | modbusTcp.setAddrExe(this.getAddrExe(temp)); |
| | | |
| | | doWriteExe(modbusTcp, DeviceStatus.OPEN.getCode()); |
| | | |
| | |
| | | |
| | | //再开风机 |
| | | temp = modbusTcpLink.getAddrOpen(); |
| | | addrExe = Integer.valueOf(temp) - 1; |
| | | modbusTcpLink.setAddrExe(addrExe); |
| | | modbusTcpLink.setAddrExe(this.getAddrExe(temp)); |
| | | |
| | | doWriteExe(modbusTcpLink, DeviceStatus.OPEN.getCode()); |
| | | } |
| | |
| | | //如果关风机 |
| | | if (DeviceStatus.F_CLOSE.equals(device.getTargetStatus())) { |
| | | temp = modbusTcpLink.getAddrClose(); |
| | | addrExe = Integer.valueOf(temp) - 1; |
| | | modbusTcpLink.setAddrExe(addrExe); |
| | | modbusTcpLink.setAddrExe(this.getAddrExe(temp)); |
| | | |
| | | doWriteExe(modbusTcpLink, DeviceStatus.CLOSE.getCode()); |
| | | } |
| | |
| | | //如果开窗 |
| | | if (DeviceStatus.W_OPEN.equals(device.getTargetStatus())) { |
| | | temp = modbusTcp.getAddrOpen(); |
| | | addrExe = Integer.valueOf(temp) - 1; |
| | | modbusTcp.setAddrExe(addrExe); |
| | | modbusTcp.setAddrExe(this.getAddrExe(temp)); |
| | | |
| | | doWriteExe(modbusTcp, device.getTargetStatus()); |
| | | } |
| | |
| | | |
| | | //先关风机 |
| | | temp = modbusTcpLink.getAddrClose(); |
| | | addrExe = Integer.valueOf(temp) - 1; |
| | | modbusTcpLink.setAddrExe(addrExe); |
| | | modbusTcpLink.setAddrExe(this.getAddrExe(temp)); |
| | | doWriteExe(modbusTcpLink, DeviceStatus.CLOSE.getCode()); |
| | | |
| | | Thread.sleep(300); |
| | | |
| | | //在关窗户 |
| | | temp = modbusTcp.getAddrClose(); |
| | | addrExe = Integer.valueOf(temp) - 1; |
| | | modbusTcp.setAddrExe(addrExe); |
| | | modbusTcp.setAddrExe(this.getAddrExe(temp)); |
| | | |
| | | doWriteExe(modbusTcp, DeviceStatus.CLOSE.getCode()); |
| | | } |
| | |
| | | return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS); |
| | | } |
| | | |
| | | private int getAddrExe(String temp) { |
| | | if (Constant.YN_N.equals(temp)) return 65535; |
| | | if (temp.length() > 4) { |
| | | temp = temp.substring(temp.length() - 4); |
| | | } |
| | | return Integer.valueOf(temp) - 1; |
| | | } |
| | | |
| | | private void doWriteExe(ModbusTcp modbusTcp, String targetStatus) throws Exception { |
| | | boolean exeResult = modbusUtil.writeValue05(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), true); |
| | | if (exeResult) { |