|
|
|
|
@ -25,6 +25,7 @@
|
|
|
|
|
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using CFX;
|
|
|
|
|
using CFX.InformationSystem.UnitValidation;
|
|
|
|
|
using CFX.Production;
|
|
|
|
|
using CFX.ResourcePerformance;
|
|
|
|
|
using CFX.Structures;
|
|
|
|
|
@ -34,18 +35,25 @@ using Sln.Iot.CFX.RequestReceived;
|
|
|
|
|
namespace Sln.Iot.CFX;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
///
|
|
|
|
|
/// CFX 帮助类
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class CFXHelper
|
|
|
|
|
{
|
|
|
|
|
private readonly AmqpCFXEndpoint? _endpoint;
|
|
|
|
|
private static readonly Lazy<CFXHelper> lazy = new Lazy<CFXHelper>(() => new CFXHelper());
|
|
|
|
|
|
|
|
|
|
public CFXHelper(AmqpCFXEndpoint endpoint)
|
|
|
|
|
public static CFXHelper Instance
|
|
|
|
|
{
|
|
|
|
|
_endpoint = endpoint;
|
|
|
|
|
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return lazy.Value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// CFX通讯端点
|
|
|
|
|
/// </summary>
|
|
|
|
|
private readonly AmqpCFXEndpoint? _endpoint = new AmqpCFXEndpoint();
|
|
|
|
|
|
|
|
|
|
public void Init(string cfxHandle, Uri uri, string address)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
@ -77,30 +85,50 @@ public class CFXHelper
|
|
|
|
|
{
|
|
|
|
|
CFXMessage response = null;
|
|
|
|
|
|
|
|
|
|
if (request.MessageBody is AreYouThereRequest)
|
|
|
|
|
if (request.MessageBody is AreYouThereRequest) //存在性检测请求
|
|
|
|
|
{
|
|
|
|
|
AreYouThereRequestReceived.Handle(request.MessageBody as AreYouThereRequest, out response);
|
|
|
|
|
}
|
|
|
|
|
else if (request.MessageBody is GetEndpointInformationRequest)
|
|
|
|
|
else if (request.MessageBody is GetEndpointInformationRequest) //获取终端节点信息请求
|
|
|
|
|
{
|
|
|
|
|
GetEndpointInformationRequestReceived.Handle(request.MessageBody as GetEndpointInformationRequest, out response);
|
|
|
|
|
}
|
|
|
|
|
else if (request.MessageBody is WhoIsThereRequest)
|
|
|
|
|
else if (request.MessageBody is WhoIsThereRequest) //设备存在性查询请求
|
|
|
|
|
{
|
|
|
|
|
WhoIsThereRequestReceived.Handle(request.MessageBody as WhoIsThereRequest, out response);
|
|
|
|
|
}
|
|
|
|
|
else if (request.MessageBody is GetActiveRecipeRequest)
|
|
|
|
|
else if (request.MessageBody is GetActiveRecipeRequest) //获取当前激活配方请求
|
|
|
|
|
{
|
|
|
|
|
GetActiveRecipeRequestReceived.Handle(request.MessageBody as GetActiveRecipeRequest, out response);
|
|
|
|
|
}
|
|
|
|
|
else if (request.MessageBody is GetActiveFaultsRequest)
|
|
|
|
|
else if (request.MessageBody is GetActiveFaultsRequest) //获取当前错误状态请求
|
|
|
|
|
{
|
|
|
|
|
GetActiveFaultsRequestReceived.Handle(request.MessageBody as GetActiveFaultsRequest, out response);
|
|
|
|
|
}
|
|
|
|
|
else if (request.MessageBody is HandleFaultRequest)
|
|
|
|
|
else if (request.MessageBody is HandleFaultRequest) //处理错误请求
|
|
|
|
|
{
|
|
|
|
|
HandleFaultRequestReceived.Handle(request.MessageBody as HandleFaultRequest, out response);
|
|
|
|
|
}
|
|
|
|
|
else if (request.MessageBody is ModifyStationParametersRequest) //设备修改参数请求
|
|
|
|
|
{
|
|
|
|
|
ModifyStationParametersRequestReceived.Handle(request.MessageBody as ModifyStationParametersRequest, out response);
|
|
|
|
|
}
|
|
|
|
|
else if (request.MessageBody is ValidateUnitsRequest) //生产单元验证请求
|
|
|
|
|
{
|
|
|
|
|
ValidateUnitsRequestReceived.Handle(request.MessageBody as ValidateUnitsRequest, out response);
|
|
|
|
|
}
|
|
|
|
|
else //不支持的请求类型
|
|
|
|
|
{
|
|
|
|
|
response = new NotSupportedResponse()
|
|
|
|
|
{
|
|
|
|
|
RequestResult = new RequestResult()
|
|
|
|
|
{
|
|
|
|
|
Result = StatusResult.Failed,
|
|
|
|
|
ResultCode = 0,
|
|
|
|
|
Message = $"不支持的请求类型:{request.MessageBody.GetType().Name}"
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CFXEnvelope env = new CFXEnvelope(response);
|
|
|
|
|
return env;
|
|
|
|
|
|