From 7e7e1c9dd1c39b2c38b0a758f3cc9faa0921b808 Mon Sep 17 00:00:00 2001
From: tangxu <76880903@qq.com>
Date: 星期四, 27 十月 2022 15:20:55 +0800
Subject: [PATCH] 添加自动关闭

---
 Socket/IStation.DataDockingSocket4NT/MsgHandle/StartUpMsgHelper.cs |  127 ++++++++++++++++++++++++++++++++++-------
 1 files changed, 104 insertions(+), 23 deletions(-)

diff --git a/Socket/IStation.DataDockingSocket4NT/MsgHandle/StartUpMsgHelper.cs b/Socket/IStation.DataDockingSocket4NT/MsgHandle/StartUpMsgHelper.cs
index 68b2fc7..fd927e0 100644
--- a/Socket/IStation.DataDockingSocket4NT/MsgHandle/StartUpMsgHelper.cs
+++ b/Socket/IStation.DataDockingSocket4NT/MsgHandle/StartUpMsgHelper.cs
@@ -1,69 +1,150 @@
 锘縰sing IStation.DataDockingSocket.MsgHandle;
+using IStation.Model;
 using IStation.Untity;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using static System.Collections.Specialized.BitVector32;
 
 namespace IStation.DataDockingSocket 
 {
     internal class StartUpMsgHelper
     {
-        public static eStartUpInstructionStatus ShutUpInstructionStatus = eStartUpInstructionStatus.鏈彂閫�;
+        public static eStartUpInstructionStatus InstructionStatus = eStartUpInstructionStatus.鏈彂閫�;
+        public static DateTime _lastHzSendTime;
+        public static DateTime _lastOpenSendTime;
+        public static MonitorTestControlParas.StartContext _lastParas = null;
 
         /// <summary>
         /// 寮�鏈�
         /// </summary>
         /// <param name="session"></param>
         /// <returns></returns>
-        public static bool StartJob(Model.IMonitorDataDockingSession session)
+        public static bool StartJob(Model.IMonitorDataDockingSession session, MonitorTestControlParas.StartContext paras)
         {
             if (session != null)
             {
                 NtLogHelper.Error($"寮�鏈� session:Close");
                 return false;
             }
-
-            if (session.IsConnected)
+            if(paras == null)
             {
-                byte[] bts = GetControlMsg寮�鏈�();
-
-                session.Send(bts, 0, bts.Length);
-                ShutUpInstructionStatus = eStartUpInstructionStatus.璋冮鎸囦护鍙戦��;
-                NtLogHelper.Info("寮�鏈�" + session.SessionName + ":" + BitTransfer.ToString(bts) + ", 鍙戦�佷竴鏉¤姹傛帶鍒舵寚浠�");
-
-                return true;
+                NtLogHelper.Error($"寮�鏈哄弬鏁颁负绌�");
+                return false;
             }
-            else
+
+            if (!session.IsConnected)
             {
                 NtLogHelper.Error($"寮�鏈烘椂 session:Not connected");
                 return false;
             }
+            if (paras.HZ <= 10)
+            {
+                NtLogHelper.Error($"寮�鏈烘椂 璁剧疆鐨勮皟棰戦鐜囪繃浣�!");
+                return false;
+            }
+            _lastParas = paras;
 
+            //switch (context.OperatingMode)
+            //{
+            //    case Model.MonitorTestControlParas.eOperatingMode.Timing:
+            //        break;
+            //    case Model.MonitorTestControlParas.eOperatingMode.ConstantFlow:
+            //        break;
+            //    default:
+            //        break;
+            //}
+
+            byte[] bts = GetControlMsg璋冮(paras.HZ);
+
+
+            session.Send(bts, 0, bts.Length);
+            InstructionStatus = eStartUpInstructionStatus.璋冮鎸囦护鍙戦��;
+            _lastHzSendTime = DateTime.Now;
+
+            NtLogHelper.Info("寮�鏈烘寚浠�: 璋冮 " + BitTransfer.ToString(bts) + ", HZ:"+ paras.HZ);
+
+            return true;
         }
 
-
         /// <summary>
-        /// 
+        /// 鏄惁闇�瑕佸綋鍓嶇被杩涜澶勭悊
         /// </summary>
         /// <param name="byteMessage"></param>
         /// <returns></returns>
-        public static bool IsCurrentMsg(byte[] byteMessage)
+        public static bool IsNeedHandle(byte[] byteMessage)
         {
-            if(byteMessage.Length == 8)
+            if(InstructionStatus != eStartUpInstructionStatus.鏈彂閫�)
+                return true;
+            else
+                return false;
+        }
+        /// <summary>
+        /// 鍏虫満鎸囦护
+        /// </summary>
+        static string ControlMsgOpen = "01-06-00-0F-00-01-78-09";
+        /// <summary>
+        /// 璇诲彇杩斿洖娑堟伅 澶勭悊鎴愬姛杩斿洖鎴愬姛, 涓嶆垚鍔熸垨鑰呬笉闇�瑕佸鐞嗚繑鍥瀎alse
+        /// </summary>
+        /// <param name="byteMessage"></param>
+        public static bool HandleReceive(Model.IMonitorDataDockingSession session, byte[] byteMessage)
+        {
+            if (InstructionStatus == eStartUpInstructionStatus.鏈彂閫�)
+                return false;
+            if (InstructionStatus == eStartUpInstructionStatus.寮�鏈烘寚浠ゅ彂閫�)
             {
-                if (byteMessage[0] == 0x01 && byteMessage[1] == 0x06 && byteMessage[2] == 0x00
-    && byteMessage[3] == 0x0F && byteMessage[4] == 0x00 && byteMessage[5] == 0x01
-    && byteMessage[6] == 0x78 && byteMessage[7] == 0x09)
-                {//01-06-00-0F-00-01-78-09
-                    return true;
+                if (byteMessage.Length >= ControlMsgOpen.Length)
+                {
+                    string strMessage = BitConverter.ToString(byteMessage, 0, byteMessage.Length);
+                    if (strMessage == ControlMsgOpen)
+                    {//01-06-00-0F-00-01-78-09
+                        InstructionStatus = eStartUpInstructionStatus.鏈彂閫�;
+
+                        NtLogHelper.Debug("寮�鏈烘寚浠よ繑鍥�:" + BitTransfer.ToString(byteMessage));
+                        //寮�鍚嚜鍔ㄥ叧闂�
+                        ShutDownMsgHelper.StartAutoClose(_lastParas.OperatingValue);
+                        return true;
+                    }
+                }
+                //杩斿洖澶辫触, 鍐嶅彂閫佷竴娆″啀纭涓�涓�
+                if ((DateTime.Now - _lastOpenSendTime).TotalSeconds > 5)
+                {
+                    SendOpenMsg(session);
                 }
             }
-      
+            if (InstructionStatus == eStartUpInstructionStatus.璋冮鎸囦护鍙戦��)
+            {
+                //闇�瑕佸垽鏂槸鍚︽槸璋冮鎸囦护:浠ュ悗鍐嶈ˉ鍏�
+                {
+                    SendOpenMsg(session);
+                }
+
+
+                //杩斿洖澶辫触, 鍐嶅彂閫佷竴娆″啀纭涓�涓�
+                if ((DateTime.Now - _lastHzSendTime).TotalSeconds > 5)
+                {
+                    StartJob(session, _lastParas);
+                }
+            }
+
             return false;
         }
 
+        private static  void SendOpenMsg(Model.IMonitorDataDockingSession session)
+        {
+            byte[] bts = GetControlMsg寮�鏈�();
+
+
+            session.Send(bts, 0, bts.Length);
+            InstructionStatus = eStartUpInstructionStatus.寮�鏈烘寚浠ゅ彂閫�;
+            _lastOpenSendTime = DateTime.Now;
+
+            NtLogHelper.Info("寮�鏈烘寚浠�: 寮�鏈� " + BitTransfer.ToString(bts) + ",  ");
+        }
+
+ 
         /// <summary>
         /// 鑾峰彇鎺у埗鎸囦护(寮�鏈�)
         /// </summary>
@@ -73,7 +154,7 @@
             //var appParas = AppParasHelper.GetInstance();
             //if (appParas == null || appParas.InstructionStartUp == null || appParas.InstructionStartUp.Content == null)
             {
-                return BitTransfer.FromString("01-06-00-0F-00-01-78-09");
+                return BitTransfer.FromString(ControlMsgOpen);
             }
             //return BitTransfer.FromString(appParas.InstructionStartUp.Content);
         }

--
Gitblit v1.9.3