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