From b46e2c49fe245e9516dd282208fa5f9eebb0c850 Mon Sep 17 00:00:00 2001 From: "lisai17@sina.com" Date: Sun, 21 Feb 2021 21:19:37 +0800 Subject: [PATCH] . --- .../devicectrl/common/DeviceThread.java | 12 +++-- .../devicectrl/controllers/Controller.java | 46 ++++++++++++++++-- .../devicectrl/controllers/InController.java | 48 ++++++++++++------- .../devicectrl/controllers/OutController.java | 46 +++++++++++------- .../com/cowr/local/ssjygl/main/Config.java | 2 +- 5 files changed, 113 insertions(+), 41 deletions(-) diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/common/DeviceThread.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/common/DeviceThread.java index 742209e..68bd03b 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/common/DeviceThread.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/common/DeviceThread.java @@ -16,7 +16,10 @@ import com.jfinal.plugin.activerecord.Record; import java.io.File; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.locks.ReentrantLock; public class DeviceThread extends Thread { @@ -168,8 +171,11 @@ public class DeviceThread extends Thread { String which = device.getString("which"); String plcRod1Up = device.getString("plcRod1Up"); + String plcRod2Up = device.getString("plcRod2Up"); String plcSensor1Reset = device.getString("plcSensor1Reset"); + String plcSensor2Reset = device.getString("plcSensor2Reset"); String plcSensor1 = device.getString("plcSensor1"); + String plcSensor2 = device.getString("plcSensor2"); Integer scale_wait_time = device.getInteger("scale_wait_time"); JSONObject cameraconf = device.getJSONObject("camera"); JSONObject scaleconf = device.getJSONObject("scale"); @@ -223,9 +229,9 @@ public class DeviceThread extends Thread { } if (which.startsWith(Enums.CtrlFlowEnum.R.name())) { - controller = new InController(which, camera, scale, led, plc, scale_wait_time, plcRod1Up, plcSensor1Reset, plcSensor1); + controller = new InController(which, camera, scale, led, plc, scale_wait_time, plcRod1Up, plcRod2Up, plcSensor1Reset, plcSensor2Reset, plcSensor1, plcSensor2); } else if (which.startsWith(Enums.CtrlFlowEnum.C.name())) { - controller = new OutController(which, camera, scale, led, plc, scale_wait_time, plcRod1Up, plcSensor1Reset, plcSensor1); + controller = new OutController(which, camera, scale, led, plc, scale_wait_time, plcRod1Up, plcRod2Up, plcSensor1Reset, plcSensor2Reset, plcSensor1, plcSensor2); } else { log.error("which 值设置错误 %s ", config); return; diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/Controller.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/Controller.java index e385dc5..a4ac1d8 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/Controller.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/Controller.java @@ -1,9 +1,11 @@ package com.cowr.local.ssjygl.devicectrl.controllers; import com.alibaba.fastjson.JSONObject; -import com.cowr.local.ssjygl.devicectrl.device.*; +import com.cowr.local.ssjygl.devicectrl.device.AbsScale; +import com.cowr.local.ssjygl.devicectrl.device.Camera; +import com.cowr.local.ssjygl.devicectrl.device.LEDThread; +import com.cowr.local.ssjygl.devicectrl.device.PLC; import com.cowr.local.ssjygl.devicectrl.utils.LicenseJPGPair; -import com.cowr.local.ssjygl.main.CliCacheData; import com.cowr.local.ssjygl.transport.TransportDeviceService; import com.cowr.local.ssjygl.transport.TransportSyncService; import com.cowr.model.PostLicenseResult; @@ -37,8 +39,11 @@ public abstract class Controller implements Runnable { // plc 指令 private String rod1Up; // 抬前闸 + private String rod2Up; // 抬后闸 private String sensor1Reset; // 重置前地感状态 - private String sensor1; // 读地感状态 + private String sensor2Reset; // 重置后地感状态 + private String sensor1; // 读前地感状态 + private String sensor2; // 读后地感状态 private ReentrantLock ctrllock; // 同进同出互斥锁 @@ -60,7 +65,7 @@ public abstract class Controller implements Runnable { this.scaleWaitTime = scaleWaitTime; } - public Controller(String which, Camera camera, AbsScale scale, LEDThread led, PLC plc, int scaleWaitTime, String rod1Up, String sensor1Reset, String sensor1) { + public Controller(String which, Camera camera, AbsScale scale, LEDThread led, PLC plc, int scaleWaitTime, String rod1Up, String rod2Up, String sensor1Reset, String sensor2Reset, String sensor1, String sensor2) { log.info("%s 流程上磅等待时间 %s", which, scaleWaitTime); this.which = which; @@ -73,12 +78,21 @@ public abstract class Controller implements Runnable { if (StrKit.notBlank(rod1Up)) { this.rod1Up = rod1Up; } + if (StrKit.notBlank(rod2Up)) { + this.rod2Up = rod2Up; + } if (StrKit.notBlank(sensor1Reset)) { this.sensor1Reset = sensor1Reset; } + if (StrKit.notBlank(sensor2Reset)) { + this.sensor2Reset = sensor2Reset; + } if (StrKit.notBlank(sensor1)) { this.sensor1 = sensor1; } + if (StrKit.notBlank(sensor2)) { + this.sensor2 = sensor2; + } } public void onLicenseResult(String license, File file, boolean head, boolean delete) { @@ -307,6 +321,30 @@ public abstract class Controller implements Runnable { this.sensor1 = sensor1; } + public String getRod2Up() { + return rod2Up; + } + + public void setRod2Up(String rod2Up) { + this.rod2Up = rod2Up; + } + + public String getSensor2Reset() { + return sensor2Reset; + } + + public void setSensor2Reset(String sensor2Reset) { + this.sensor2Reset = sensor2Reset; + } + + public String getSensor2() { + return sensor2; + } + + public void setSensor2(String sensor2) { + this.sensor2 = sensor2; + } + public ReentrantLock getCtrllock() { return ctrllock; } diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/InController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/InController.java index 08671d0..cacf78a 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/InController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/InController.java @@ -1,9 +1,11 @@ package com.cowr.local.ssjygl.devicectrl.controllers; -import com.cowr.local.ssjygl.devicectrl.device.*; +import com.cowr.local.ssjygl.devicectrl.device.AbsScale; +import com.cowr.local.ssjygl.devicectrl.device.Camera; +import com.cowr.local.ssjygl.devicectrl.device.LEDThread; +import com.cowr.local.ssjygl.devicectrl.device.PLC; import com.cowr.local.ssjygl.devicectrl.utils.LicenseJPGPair; import com.cowr.local.ssjygl.main.CliCacheData; -import com.cowr.local.ssjygl.main.Config; import com.cowr.model.PostLicenseResult; import com.jfinal.kit.StrKit; import com.jfinal.log.Log; @@ -17,22 +19,34 @@ public class InController extends Controller implements Runnable { super(which, camera, scale, led, plc, scaleWaitTime); setRod1Up("rodIn1Up"); + setRod2Up("rodIn2Up"); setSensor1Reset("sensorIn1Reset"); + setSensor2Reset("sensorIn2Reset"); setSensor1("sensorIn1"); + setSensor2("sensorIn2"); } - public InController(String which, Camera camera, AbsScale scale, LEDThread led, PLC plc, int scaleWaitTime, String rod1Up, String sensor1Reset, String sensor1) { - super(which, camera, scale, led, plc, scaleWaitTime, rod1Up, sensor1Reset, sensor1); + public InController(String which, Camera camera, AbsScale scale, LEDThread led, PLC plc, int scaleWaitTime, String rod1Up, String rod2Up, String sensor1Reset, String sensor2Reset, String sensor1, String sensor2) { + super(which, camera, scale, led, plc, scaleWaitTime, rod1Up, rod2Up, sensor1Reset, sensor2Reset, sensor1, sensor2); if (StrKit.isBlank(rod1Up)) { setRod1Up("rodIn1Up"); } + if (StrKit.isBlank(rod2Up)) { + setRod1Up("rodIn2Up"); + } if (StrKit.isBlank(sensor1Reset)) { setSensor1Reset("sensorIn1Reset"); } + if (StrKit.isBlank(sensor2Reset)) { + setSensor1Reset("sensorIn2Reset"); + } if (StrKit.isBlank(sensor1)) { setSensor1("sensorIn1"); } + if (StrKit.isBlank(sensor2)) { + setSensor2("sensorIn2"); + } } public void run() { @@ -44,7 +58,7 @@ public class InController extends Controller implements Runnable { // 出现错位等情况时,需要重置流程,重新开始 if (getResetFlow()) { try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.error(e.getMessage(), e); } @@ -70,7 +84,7 @@ public class InController extends Controller implements Runnable { log.debug("%s 【%s】 重置流程", getWhich(), getCurrentLicense()); try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.error(e.getMessage(), e); } @@ -137,7 +151,7 @@ public class InController extends Controller implements Runnable { log.debug("%s 【%s】上磅,抬前闸", getWhich(), pair.license); try { - getPlc().write(getRod1Up()); // 抬闸 + getPlc().write(getRod1Up()); // 抬前闸 } catch (Exception e) { log.error(e.getMessage(), e); } @@ -145,7 +159,7 @@ public class InController extends Controller implements Runnable { log.debug("%s 【%s】上磅,重置地感线圈状态", getWhich(), pair.license); try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); @@ -154,7 +168,7 @@ public class InController extends Controller implements Runnable { log.debug("%s 【%s】上磅,等待地感线圈状态", getWhich(), pair.license); try { while (!getResetFlow()) { // 流程没有被重置,就一直等待地感线圈状态 - if (getPlc().read(getSensor1())) { // 读取地感状态 + if (getPlc().read(getSensor1())) { // 读取前地感状态 break; } } @@ -166,7 +180,7 @@ public class InController extends Controller implements Runnable { // 重置流程,这个位置要重置地感线圈状态 if (getResetFlow()) { try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.error(e.getMessage(), e); } @@ -218,7 +232,7 @@ public class InController extends Controller implements Runnable { // 重置流程 if (getResetFlow()) { try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.error(e.getMessage(), e); } @@ -262,7 +276,7 @@ public class InController extends Controller implements Runnable { if (weightPosted != null && weightPosted) { log.debug("%s 【%s】抬入场后闸", getWhich(), pair.license); try { - getPlc().write("rodIn2Up"); + getPlc().write(getRod2Up()); // 抬后闸 } catch (IOException e) { log.error(e.getMessage(), e); log.debug("%s 【%s】入场后闸,PLC连接失败", getWhich(), pair.license); @@ -273,7 +287,7 @@ public class InController extends Controller implements Runnable { } try { - getPlc().write("sensorIn2Reset"); + getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); @@ -282,7 +296,7 @@ public class InController extends Controller implements Runnable { log.debug("%s 【%s】下磅,等待地感线圈状态", getWhich(), pair.license); try { while (!getResetFlow()) { // 流程没有被重置,就一直等待地感线圈状态 - if (getPlc().read("sensorIn2")) { + if (getPlc().read(getSensor2())) { // 读取后地感状态 break; } } @@ -293,7 +307,7 @@ public class InController extends Controller implements Runnable { if (getResetFlow()) { try { - getPlc().write("sensorIn2Reset"); + getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); @@ -308,7 +322,7 @@ public class InController extends Controller implements Runnable { if (getResetFlow()) { try { - getPlc().write("sensorIn2Reset"); + getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); @@ -318,7 +332,7 @@ public class InController extends Controller implements Runnable { continue; } } finally { - if (getCtrllock() != null) { + if (getCtrllock() != null && getCtrllock().isLocked()) { getCtrllock().unlock(); log.debug("完成 %s 流程,释放资源", getWhich()); diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/OutController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/OutController.java index 125e0b0..8061d18 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/OutController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/OutController.java @@ -1,6 +1,9 @@ package com.cowr.local.ssjygl.devicectrl.controllers; -import com.cowr.local.ssjygl.devicectrl.device.*; +import com.cowr.local.ssjygl.devicectrl.device.AbsScale; +import com.cowr.local.ssjygl.devicectrl.device.Camera; +import com.cowr.local.ssjygl.devicectrl.device.LEDThread; +import com.cowr.local.ssjygl.devicectrl.device.PLC; import com.cowr.local.ssjygl.devicectrl.utils.LicenseJPGPair; import com.cowr.local.ssjygl.main.CliCacheData; import com.cowr.model.PostLicenseResult; @@ -18,22 +21,34 @@ public class OutController extends Controller implements Runnable { super(which, camera, scale, led, plc, scaleWaitTime); setRod1Up("rodOut1Up"); + setRod2Up("rodOut2Up"); setSensor1Reset("sensorOut1Reset"); + setSensor2Reset("sensorOut2Reset"); setSensor1("sensorOut1"); + setSensor2("sensorOut2"); } - public OutController(String which, Camera camera, AbsScale scale, LEDThread led, PLC plc, int scaleWaitTime, String rod1Up, String sensor1Reset, String sensor1) { - super(which, camera, scale, led, plc, scaleWaitTime, rod1Up, sensor1Reset, sensor1); + public OutController(String which, Camera camera, AbsScale scale, LEDThread led, PLC plc, int scaleWaitTime, String rod1Up, String rod2Up, String sensor1Reset, String sensor2Reset, String sensor1, String sensor2) { + super(which, camera, scale, led, plc, scaleWaitTime, rod1Up, rod2Up, sensor1Reset, sensor2Reset, sensor1, sensor2); if (StrKit.isBlank(rod1Up)) { setRod1Up("rodOut1Up"); } + if (StrKit.isBlank(rod2Up)) { + setRod2Up("rodOut2Up"); + } if (StrKit.isBlank(sensor1Reset)) { setSensor1Reset("sensorOut1Reset"); } + if (StrKit.isBlank(sensor2Reset)) { + setSensor2Reset("sensorOut2Reset"); + } if (StrKit.isBlank(sensor1)) { setSensor1("sensorOut1"); } + if (StrKit.isBlank(sensor2)) { + setSensor1("sensorOut2"); + } } public void run() { @@ -45,7 +60,7 @@ public class OutController extends Controller implements Runnable { // 出现错位等情况时,需要重置流程,重新开始 if (getResetFlow()) { try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.error(e.getMessage(), e); } @@ -71,7 +86,7 @@ public class OutController extends Controller implements Runnable { log.debug("%s 【%s】 重置流程", getWhich(), getCurrentLicense()); try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.error(e.getMessage(), e); } @@ -106,7 +121,6 @@ public class OutController extends Controller implements Runnable { } try { - PostLicenseResult postLicenseResult = postLicense(CliCacheData.SUP.getId(), pair.license, pair.file, getWhich()); if (postLicenseResult.isUploaded()) { @@ -139,7 +153,7 @@ public class OutController extends Controller implements Runnable { log.debug("%s 【%s】上磅,抬前闸", getWhich(), pair.license); try { - getPlc().write(getRod1Up()); // 抬闸 + getPlc().write(getRod1Up()); // 抬前闸 } catch (Exception e) { log.error(e.getMessage(), e); } @@ -147,7 +161,7 @@ public class OutController extends Controller implements Runnable { log.debug("%s 【%s】上磅,重置地感线圈状态", getWhich(), pair.license); try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); @@ -156,7 +170,7 @@ public class OutController extends Controller implements Runnable { log.debug("%s 【%s】上磅,等待地感线圈状态", getWhich(), pair.license); try { while (!getResetFlow()) { // 流程没有被重置,就一直等待地感线圈状态 - if (getPlc().read(getSensor1())) { // 读地感状态 + if (getPlc().read(getSensor1())) { // 读取前地感状态 break; } } @@ -168,7 +182,7 @@ public class OutController extends Controller implements Runnable { // 重置流程,这个位置要重置地感线圈状态 if (getResetFlow()) { try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.error(e.getMessage(), e); } @@ -220,7 +234,7 @@ public class OutController extends Controller implements Runnable { // 重置流程 if (getResetFlow()) { try { - getPlc().write(getSensor1Reset()); // 重置地感状态 + getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { log.error(e.getMessage(), e); } @@ -275,7 +289,7 @@ public class OutController extends Controller implements Runnable { } try { - getPlc().write("sensorOut2Reset"); + getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); @@ -284,7 +298,7 @@ public class OutController extends Controller implements Runnable { log.debug("%s 【%s】下磅,等待地感线圈状态", getWhich(), pair.license); try { while (!getResetFlow()) { // 流程没有被重置,就一直等待地感线圈状态 - if (getPlc().read("sensorOut2")) { + if (getPlc().read(getSensor2())) { // 读取后地感状态 break; } } @@ -295,7 +309,7 @@ public class OutController extends Controller implements Runnable { if (getResetFlow()) { try { - getPlc().write("sensorOut2Reset"); + getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); @@ -310,7 +324,7 @@ public class OutController extends Controller implements Runnable { if (getResetFlow()) { try { - getPlc().write("sensorOut2Reset"); + getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); @@ -320,7 +334,7 @@ public class OutController extends Controller implements Runnable { continue; } } finally { - if (getCtrllock() != null) { + if (getCtrllock() != null && getCtrllock().isLocked()) { getCtrllock().unlock(); log.debug("完成 %s 流程,释放资源", getWhich()); diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java index 639fb2b..62d29e4 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java @@ -95,7 +95,7 @@ public class Config extends JFinalConfig { public static DeviceThread deviceThread = new DeviceThread(); public static SocketIOService socketio = null; private static boolean client_run = true; - public static final String CLINET_VERSION = "20210201"; + public static final String CLINET_VERSION = "20210221"; public static String getRootPath() { return PathKit.getWebRootPath()