Browse Source

preset current value command change

shjung 2 năm trước cách đây
mục cha
commit
9b3cbaae78

+ 16 - 5
src/main/java/com/its/cctv/api/service/CctvControlService.java

@@ -224,6 +224,7 @@ public class CctvControlService {
 
         synchronized (cctv.getParamVal()) {
             try {
+                cctv.getParamVal().setRequest(true);
                 cctv.getParamVal().setCompleted(false);
                 ByteBuffer sendBuffer = cctv.getReqParam().getByteBuffer();
                 if (cctv.sendData(sendBuffer, 0, "cctv_ParamReq")) {
@@ -241,6 +242,7 @@ public class CctvControlService {
             } catch (InterruptedException e) {
                 result.setResult(9, "CCTV PARAMETER 값조회 명령 전송 중 오류가 발생하였습니다.");
             }
+            cctv.getParamVal().setRequest(false);
         }
         return result;
     }
@@ -261,14 +263,16 @@ public class CctvControlService {
         }
 
         CctvPresetControlDto.CctvPresetValueRes result = new CctvPresetControlDto.CctvPresetValueRes(0, "success");
-
         synchronized (cctv.getPsetVal()) {
             try {
                 cctv.getPsetVal().setCompleted(false);
-                CctvReqPresetQry pkt = new CctvReqPresetQry(cctv.getAddress());
-                pkt.setValue((byte)0x00);
-                ByteBuffer sendBuffer = pkt.getByteBuffer();
-                if (cctv.sendData(sendBuffer, 0, "cctv_PresetQry")) {
+                cctv.getPsetVal().setRequest(true);
+//                CctvReqPresetQry pkt = new CctvReqPresetQry(cctv.getAddress());
+//                pkt.setValue((byte)0x00);
+//                ByteBuffer sendBuffer = pkt.getByteBuffer();
+//                if (cctv.sendData(sendBuffer, 0, "cctv_PresetQry")) {
+                ByteBuffer sendBuffer = cctv.getReqState().getByteBuffer();
+                if (cctv.sendData(sendBuffer, 0, "cctv_StateReq")) {
                     log.info("PRESET QRY send success.");
                     cctv.getPsetVal().wait(5000);
                     if (cctv.getPsetVal().isCompleted()) {
@@ -283,6 +287,7 @@ public class CctvControlService {
             } catch (InterruptedException e) {
                 result.setResult(6, "CCTV PRESET 값조회 명령 전송 중 오류가 발생하였습니다.");
             }
+            cctv.getPsetVal().setRequest(false);
         }
         return result;
     }
@@ -382,6 +387,12 @@ public class CctvControlService {
         return result;
     }
 
+    /**
+     * CCTV 제어기 리셋
+     * @param id
+     * @param req
+     * @return
+     */
     public CctvControlDto.CctvControlResetRes controlReset(Long id, CctvControlDto.CctvControlResetReq req) {
         log.info("controlReset: {}, {}", id, req);
         TbCctvCtlr cctv = this.requireOne(id);

+ 1 - 0
src/main/java/com/its/cctv/entity/CctvParamValue.java

@@ -15,6 +15,7 @@ public class CctvParamValue implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private boolean isCompleted = false;
+    private boolean isRequest = false;
     private Integer fanOnTmpr;
     private Integer fanOffTmpr;
     private Integer hetrOnTmpr;

+ 1 - 0
src/main/java/com/its/cctv/entity/CctvPresetValue.java

@@ -15,6 +15,7 @@ public class CctvPresetValue implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private boolean isCompleted = false;
+    private boolean isRequest = false;
     private Short pan;
     private Short tilt;
     private Short zoom;

+ 11 - 0
src/main/java/com/its/cctv/xnettcp/cctv/process/Job_StateRes.java

@@ -48,6 +48,17 @@ public class Job_StateRes implements JobProtocol {
 //			obj.sendData(sendBuffer, 0, "cctv_ParamReq");
 //			obj.setParamRequest(false);
 //		}
+		synchronized (obj.getPsetVal()) {
+			if (obj.getPsetVal().isRequest()) {
+				try {
+					obj.getPsetVal().setValue(pan, tilt, zoom, focus);
+					obj.getPsetVal().setCompleted(true);
+					obj.getPsetVal().notifyAll();
+				} catch (Exception ignored) {
+				}
+				obj.getPsetVal().setRequest(false);
+			}
+		}
 
 		MainUI mainUI = MainUI.getInstance();
 		if (mainUI != null) {