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) { LogHelper.Info("南通控制命令,数据序列化失败"); return true; } byte[] bts = null; switch (paras.Type) { case 0:bts = null; break;//从辅助类中获取 关闭 case 1: bts = null; break;//从辅助类中获取 开启 case -1:bts = null;break;//从辅助类中获取 变频 default: break; } if (bts != null) { if (session != null) { if (session.IsConnected) { session.Send(bts, 0, bts.Length); LogHelper.Info(session.SessionName + ":" + BitTransfer.ToString(bts) + ", 发送一条请求控制指令"); } } } return true; } catch (Exception ex) { LogHelper.Error("南通控制命令,数据消息队列出错,自动跳过", ex); return true; } }); }); } } }