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;
}
});
});
}
}
}