Socket/IStation.DataDockingSocket4NT/MsgHandle/HandleHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Socket/IStation.DataDockingSocket4NT/MsgHandle/MonitorMsgHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Socket/IStation.DataDockingSocket4NT/MsgHandle/ShunDownMsgHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Socket/IStation.DataDockingSocket4NT/MsgHandle/ShutDownMsgHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Socket/IStation.DataDockingSocket4NT/MsgHandle/StartUpMsgHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Socket/IStation.DataDockingSocket4NT/control/SendControlJobHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Socket/IStation.DataDockingSocket4NT/paras/eShutDownInstructionStatus.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Socket/IStation.DataDockingSocket4NT/paras/eStartUpInstructionStatus.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Untity/IStation.Untity/转换/BitTransfer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Socket/IStation.DataDockingSocket4NT/MsgHandle/HandleHelper.cs
@@ -11,7 +11,11 @@ { public class HandleHelper : IDataDockingSocket.IHandleHelper { static IMonitorDataDockingSession _session; public static IMonitorDataDockingSession GetLastSession() {//å ³æºç¨çæ¯å®æ¶å¨, 宿¶å¨éé¢éè¦è·åæè¿ç䏿¬¡é¾æ¥ return _session; } /// <summary> @@ -53,7 +57,7 @@ /// </summary> public void HandleHeartbeat(IMonitorDataDockingSession session) { _session = session; } /// <summary> @@ -75,9 +79,9 @@ { return; } if (MonitorMsgHelper.IsCurrentMsg(byteMessage)) { _session = session; if (MonitorMsgHelper.IsNeedHandle(byteMessage)) {//çæ§æä»¤ var receList = MonitorMsgHelper.HandleReceive(byteMessage); if (receList == null || receList.Count == 0) return; @@ -94,14 +98,16 @@ return;//æåå°±è¿åæ } //ä¸è¦å else if (ShunDownMsgHelper.InstructionStatus == eShutDownInstructionStatus.å ³æºæºæä»¤åé) if (ShutDownMsgHelper.IsNeedHandle(byteMessage)) { ShunDownMsgHelper.HandleReceive(session,byteMessage); if (ShutDownMsgHelper.HandleReceive(session, byteMessage)) return; } //ä¸è¦å else if (StartUpMsgHelper.IsCurrentMsg(byteMessage)) if (StartUpMsgHelper.IsNeedHandle(byteMessage)) { if (StartUpMsgHelper.HandleReceive(session, byteMessage)) return; } } Socket/IStation.DataDockingSocket4NT/MsgHandle/MonitorMsgHelper.cs
@@ -15,11 +15,11 @@ internal class MonitorMsgHelper { /// <summary> /// æ¯å¦æ¯å½åMSG /// æ¯å¦æ¯å½åMSG,表示éè¦å¤ç /// </summary> /// <param name="byteMessage"></param> /// <returns></returns> public static bool IsCurrentMsg(byte[] byteMessage) public static bool IsNeedHandle(byte[] byteMessage) { if (byteMessage[0] == 0x01 && byteMessage[1] == 0x03 && byteMessage[2] == 0x42) { Socket/IStation.DataDockingSocket4NT/MsgHandle/ShunDownMsgHelper.cs
ÎļþÒÑɾ³ý Socket/IStation.DataDockingSocket4NT/MsgHandle/ShutDownMsgHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,153 @@ using IStation.DataDockingSocket.MsgHandle; using IStation.Untity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.DataDockingSocket { internal class ShutDownMsgHelper { public static eShutDownInstructionStatus InstructionStatus = eShutDownInstructionStatus.æªåé; public static DateTime _lastSendTime ; /// <summary> /// å¼å§å ³æº /// </summary> /// <param name="session"></param> /// <returns></returns> public static bool StartJob(Model.IMonitorDataDockingSession session) { if (session != null) { NtLogHelper.Error($"å ³æº session:Close"); return false; } if (!session.IsConnected) { NtLogHelper.Error($"å ³æºæ¶ session:Not connected"); return false; } byte[] bts = GetControlMsg(); session.Send(bts, 0, bts.Length); InstructionStatus = eShutDownInstructionStatus.å ³æºæä»¤åé; _lastSendTime = DateTime.Now; NtLogHelper.Debug("å ³æºæä»¤åé:" + session.SessionName + ":" + BitTransfer.ToString(bts) ); return true; } /// <summary> /// èªå¨å ³é /// </summary> static System.Timers.Timer _timeAutoClose; public static void StartAutoClose(double second) { NtLogHelper.Info("å¼å¯èªå¨å ³æºæ¨¡å¼ æ¶é´:" + second+"s"); _timeAutoClose = new System.Timers.Timer(10000 * second);//å®ä¾åTimerç±»ï¼è®¾ç½®é´éæ¶é´ä¸º10000毫ç§ï¼ _timeAutoClose.Elapsed += new System.Timers.ElapsedEventHandler(ExecuteAutoClose);//å°è¾¾æ¶é´çæ¶åæ§è¡äºä»¶ï¼ _timeAutoClose.AutoReset = false;//è®¾ç½®æ¯æ§è¡ä¸æ¬¡ï¼falseï¼è¿æ¯ä¸ç´æ§è¡(true)ï¼ _timeAutoClose.Enabled = true;//æ¯å¦æ§è¡System.Timers.Timer.Elapsedäºä»¶ï¼ _timeAutoClose.Start(); //å¯å¨å®æ¶å¨ } private static void ExecuteAutoClose(object source, System.Timers.ElapsedEventArgs e) { if (_timeAutoClose == null) return; _timeAutoClose.Stop(); //å å ³é宿¶å¨ _timeAutoClose = null; //è¦æ§è¡çä¸å¡ä»£ç NtLogHelper.Info("æ£å¨èªå¨å ³æº...." ); ShutDownMsgHelper.StartJob(HandleHelper.GetLastSession()); // t.Start(); //æ§è¡å®æ¯ååå¼å¯å¨ } /// <summary> /// æ¯å¦æ¯æ§å¶æä»¤ /// </summary> /// <param name="byteMessage"></param> /// <returns></returns> public static bool IsControlMsg(byte[] byteMessage) { return false; } /// <summary> /// å ³æºæä»¤ /// </summary> static string ControlMsg = "01-06-00-10-00-01-49-CF"; /// <summary> /// è·åæ§å¶æä»¤(å ³æºæä»¤) /// </summary> /// <returns></returns> public static byte[] GetControlMsg() { // var appParas = AppParasHelper.GetInstance(); // if (appParas == null || appParas.InstructionStartUp == null || appParas.InstructionStartUp.Content == null) { return BitTransfer.FromString(ControlMsg); } // return BitTransfer.FromString(appParas.InstructionStartUp.Content); } /// <summary> /// æ¯å¦éè¦å½åç±»è¿è¡å¤ç /// </summary> /// <param name="byteMessage"></param> /// <returns></returns> public static bool IsNeedHandle(byte[] byteMessage) { if (InstructionStatus == eShutDownInstructionStatus.å ³æºæä»¤åé) return true ; return false; } /// <summary> /// 读åè¿åæ¶æ¯ å¤çæåè¿åæå, 䏿åæè ä¸éè¦å¤çè¿åfalse /// </summary> /// <param name="byteMessage"></param> public static bool HandleReceive(Model.IMonitorDataDockingSession session,byte[] byteMessage) { if (InstructionStatus == eShutDownInstructionStatus.æªåé) return false ; if (InstructionStatus == eShutDownInstructionStatus.å ³æºæä»¤åé) { if (byteMessage.Length >= ControlMsg.Length) { string strMessage = BitConverter.ToString(byteMessage, 0, byteMessage.Length); if (strMessage == ControlMsg) { InstructionStatus = eShutDownInstructionStatus.æªåé; NtLogHelper.Debug("å ³æºæä»¤è¿å:" + BitTransfer.ToString(byteMessage) ); if(_timeAutoClose != null) { _timeAutoClose.Stop(); //å å ³é宿¶å¨ _timeAutoClose = null; } return true ; } } //è¿å失败, ååé䏿¬¡å确认ä¸ä¸ if((DateTime.Now- _lastSendTime).TotalSeconds > 3) { StartJob(session); } } return false; } } } Socket/IStation.DataDockingSocket4NT/MsgHandle/StartUpMsgHelper.cs
@@ -1,69 +1,150 @@ using 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> /// 读åè¿åæ¶æ¯ å¤çæåè¿åæå, 䏿åæè ä¸éè¦å¤çè¿åfalse /// </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); } Socket/IStation.DataDockingSocket4NT/control/SendControlJobHelper.cs
@@ -56,7 +56,7 @@ { case Model.MonitorTestControlParas.eControlType.Stop: { ShunDownMsgHelper.StartJob(session); ShutDownMsgHelper.StartJob(session); } break; case Model.MonitorTestControlParas.eControlType.Start: @@ -66,16 +66,8 @@ var context = Model.MonitorTestControlParas.StartContext.ToModel(paras.Context); if (context == null) return default; switch (context.OperatingMode) { case Model.MonitorTestControlParas.eOperatingMode.Timing: break; case Model.MonitorTestControlParas.eOperatingMode.ConstantFlow: break; default: break; } // StartUpMsgHelper.StartJob(session); StartUpMsgHelper.StartJob(session, context); } break; default: Socket/IStation.DataDockingSocket4NT/paras/eShutDownInstructionStatus.cs
@@ -9,7 +9,7 @@ public enum eShutDownInstructionStatus { æªåé = 0, å ³æºæºæä»¤åé = 3, å ³æºæä»¤åé = 3, //å ³æºæä»¤è¿å = 4 } } Socket/IStation.DataDockingSocket4NT/paras/eStartUpInstructionStatus.cs
@@ -9,9 +9,7 @@ public enum eStartUpInstructionStatus { æªåé = 0, è°é¢æä»¤åé = 1, è°é¢æä»¤è¿å = 2, 弿ºæä»¤åé = 3, 弿ºæä»¤è¿å = 4 è°é¢æä»¤åé = 1, 弿ºæä»¤åé = 3, } } Untity/IStation.Untity/ת»»/BitTransfer.cs
@@ -26,14 +26,47 @@ { try { string[] strSplit = str.Split(spliter); return strSplit.Select(x => byte.Parse(x, System.Globalization.NumberStyles.AllowHexSpecifier)).ToArray(); string[] strSplit = str.Split(spliter); return strSplit.Select(x => byte.Parse(x, System.Globalization.NumberStyles.AllowHexSpecifier)).ToArray(); } catch { return default; } } /// <summary> /// å符串转16è¿å¶å符2 /// </summary> /// <param name="content">å符串</param> /// <param name="encode">ç¼ç æ ¼å¼</param> /// <returns></returns> private List<byte> FromString(string content, out string error_info) { //å»æç©ºæ ¼ string[] arr = content.Split(' '); if (arr.Length < 3) { arr = content.Split('-'); if (arr.Length < 3) { error_info = "åç¬¦æ æ³è§£æ"; return null; } } List<byte> result = new List<byte>(); for (int i = 0; i < arr.Length; i++) { if (string.IsNullOrWhiteSpace(arr[i])) continue; var dddd = Convert.ToByte(arr[i], 16); result.Add(dddd); } error_info = null; return result; } }