using IStation.Untity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.DataDockingSocket { /// /// 发送控制指令辅助类 /// public class SendControlJobHelper { private static RabbitMqExChangeHelper _queueHelper = null; /// /// 开始任务 /// public static Task StartJob(Model.IMonitorDataDockingSession session) { //已经开启就关闭 if (_queueHelper != null) { _queueHelper.Close(); _queueHelper = null; } //会话结束后关闭 session.SessionClosedEvent += () => { if (_queueHelper != null) { _queueHelper.Close(); _queueHelper = null; } }; _queueHelper = new RabbitMqExChangeHelper(); return Task.Run(() => { _queueHelper.Receive("NTTEST", (paras) => { try { if (paras == null) { NtLogHelper.Info("南通控制命令,数据序列化失败"); return true; } byte[] bts = null; switch (paras.ControlType) { case 0: bts = MsgDataHelper.GetControlMsg关机(); NtLogHelper.Info("关机"); break;//从辅助类中获取 关闭 case 1: bts = MsgDataHelper.GetControlMsg开机(); NtLogHelper.Info("开机"); break;//从辅助类中获取 开启 case -1: { if (string.IsNullOrEmpty(paras.Context)) { NtLogHelper.Error($"[调频]参数: null"); return false; } if (!double.TryParse(paras.Context, out double value)) { NtLogHelper.Error($"[调频]参数异常:{paras.Context}"); return false; } bts = MsgDataHelper.GetControlMsg调频(value); NtLogHelper.Info($"[调频]参数:{paras.Context}"); } break;//从辅助类中获取 变频 default: return false; } if (bts != null) { if (session != null) { if (session.IsConnected) { session.Send(bts, 0, bts.Length); NtLogHelper.Info(session.SessionName + ":" + BitTransfer.ToString(bts) + ", 发送一条请求控制指令"); } else { NtLogHelper.Error($"session:Not connected"); return false; } } else { NtLogHelper.Error($"session:Close"); return false; } } return true; } catch (Exception ex) { NtLogHelper.Error("南通控制命令,数据消息队列出错,自动跳过", ex); return true; } }); }); } } }