add - 添加 CFX 接口调用

master
WenJY 2 months ago
parent a2c0114635
commit 871523b1e7

@ -1,34 +0,0 @@
using CFX;
using CFX.Transport;
namespace Sln.Iot.CFX
{
/// <summary>
/// CFX接口连接类
/// </summary>
public class CFXConnect
{
public AmqpCFXEndpoint Endpoint;
public CFXConnect()
{
OpenEndpoint();
}
public void OpenEndpoint()
{
try
{
Endpoint = new AmqpCFXEndpoint();
Endpoint.Open("CFX.S00.OT23022701", new Uri("amqp://"));
Endpoint.AddPublishChannel(new Uri("amqp://"), "eventAddress");
}
catch (Exception e)
{
}
}
}
}

@ -0,0 +1,120 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX
* B906AE83-E238-4BF5-A269-1A48D38158CC
*
* WenJY
*
* 2025-10-24 15:26:56
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using System.Diagnostics;
using CFX;
using CFX.Production;
using CFX.ResourcePerformance;
using CFX.Structures;
using CFX.Transport;
using Sln.Iot.CFX.RequestReceived;
namespace Sln.Iot.CFX;
/// <summary>
///
/// </summary>
public class CFXHelper
{
private readonly AmqpCFXEndpoint? _endpoint;
public CFXHelper(AmqpCFXEndpoint endpoint)
{
_endpoint = endpoint;
}
public void Init(string cfxHandle,Uri uri,string address)
{
try
{
if (_endpoint == null)
{
throw new ArgumentNullException($"AmqpCFXEndpoint is null");
}
_endpoint.Open(cfxHandle, uri);
_endpoint.AddPublishChannel(uri, address);
_endpoint.OnRequestReceived -= Endpoint_OnRequestReceived;
_endpoint.OnRequestReceived += Endpoint_OnRequestReceived;
}
catch (Exception e)
{
throw new InvalidOperationException($"CFX 接口初始化异常:{ e.Message}");
}
}
private CFXEnvelope Endpoint_OnRequestReceived(CFXEnvelope request)
{
CFXMessage response = null;
if (request.MessageBody is AreYouThereRequest)
{
AreYouThereRequestReceived.Handle(request.MessageBody as AreYouThereRequest,out response);
}else if (request.MessageBody is GetEndpointInformationRequest)
{
GetEndpointInformationRequestReceived.Handle(request.MessageBody as GetEndpointInformationRequest,out response);
}else if (request.MessageBody is WhoIsThereRequest)
{
WhoIsThereRequestReceived.Handle(request.MessageBody as WhoIsThereRequest,out response);
}else if (request.MessageBody is GetActiveRecipeRequest)
{
GetActiveRecipeRequestReceived.Handle(request.MessageBody as GetActiveRecipeRequest,out response);
}else if (request.MessageBody is GetActiveFaultsRequest)
{
GetActiveFaultsRequestReceived.Handle(request.MessageBody as GetActiveFaultsRequest,out response);
}else if (request.MessageBody is HandleFaultRequest)
{
HandleFaultRequestReceived.Handle(request.MessageBody as HandleFaultRequest,out response);
}
CFXEnvelope env = new CFXEnvelope(response);
return env;
}
/// <summary>
/// 主动推送事件
/// </summary>
/// <param name="env"></param>
public void PublishEvent(CFXEnvelope env)
{
try
{
if (_endpoint == null)
{
throw new ArgumentNullException($"AmqpCFXEndpoint is null");
}
_endpoint.Publish(env);
}
catch (Exception e)
{
throw new InvalidOperationException($"推送事件异常:{ e.Message}");
}
}
}

@ -0,0 +1,75 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX.CoreCommunications
* 8D142D51-E08D-42FC-8C59-4551A1B36306
*
* WenJY
*
* 2025-10-24 14:58:25
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.Structures;
namespace Sln.Iot.CFX.RequestReceived;
/// <summary>
/// 5.4.1.1-端点在位查询请求
/// AreYouThereRequest/Response
/// </summary>
public class AreYouThereRequestReceived
{
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="response"></param>
public static void Handle(AreYouThereRequest request,out CFXMessage response)
{
//
try
{
response = new AreYouThereResponse()
{
Result = new RequestResult()
{
Result = StatusResult.Success,
ResultCode = 0,
Message = "",
},
CFXHandle = "CFX.S07.E022012702",
RequestNetworkUri = "amqp://host33/",
RequestTargetAddress = "/queue/SN23123",
};
}
catch (Exception e)
{
//无法响应时上传NotSupportedResponse
response = new NotSupportedResponse()
{
RequestResult = new RequestResult()
{
Result = StatusResult.Failed,
ResultCode = 0,
Message = e.Message
}
};
}
}
}

@ -0,0 +1,66 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX
* CB14024A-08C4-4FF4-BD6C-8E8667D00263
*
* WenJY
*
* 2025-10-24 15:23:00
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.ResourcePerformance;
using CFX.Structures;
namespace Sln.Iot.CFX.RequestReceived;
/// <summary>
/// 5.4.4.1.5 - 查询当前有无错误
/// GetActiveFaultsRequest/Response
/// </summary>
public class GetActiveFaultsRequestReceived
{
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="response"></param>
public static void Handle(GetActiveFaultsRequest request, out CFXMessage response)
{
try
{
response = new GetActiveFaultsResponse()
{
};
}
catch (Exception e)
{
//无法响应时上传NotSupportedResponse
response = new NotSupportedResponse()
{
RequestResult = new RequestResult()
{
Result = StatusResult.Failed,
ResultCode = 0,
Message = e.Message
}
};
}
}
}

@ -0,0 +1,66 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX
* 686D7EAB-9E42-43B2-B990-AF162E76F781
*
* WenJY
*
* 2025-10-24 15:18:38
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.Production;
using CFX.Structures;
namespace Sln.Iot.CFX.RequestReceived;
/// <summary>
/// 5.4.3.1.3 - 获取激活配方请求
/// GetActiveRecipeRequest/Response
/// </summary>
public class GetActiveRecipeRequestReceived
{
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="response"></param>
public static void Handle(GetActiveRecipeRequest request, out CFXMessage response)
{
try
{
response = new GetActiveRecipeResponse()
{
};
}
catch (Exception e)
{
//无法响应时上传NotSupportedResponse
response = new NotSupportedResponse()
{
RequestResult = new RequestResult()
{
Result = StatusResult.Failed,
ResultCode = 0,
Message = e.Message
}
};
}
}
}

@ -0,0 +1,65 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX.CoreCommunications
* 4063233D-BE40-415F-B28C-EBA14C47EA52
*
* WenJY
*
* 2025-10-24 15:00:21
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.Structures;
namespace Sln.Iot.CFX.RequestReceived;
/// <summary>
/// 5.4.1.4 - 获取端点信息请求
/// GetEndpointInformationRequest/Response
/// </summary>
public class GetEndpointInformationRequestReceived
{
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="response"></param>
public static void Handle(GetEndpointInformationRequest request, out CFXMessage response)
{
try
{
response = new GetEndpointInformationResponse()
{
};
}
catch (Exception e)
{
//无法响应时上传NotSupportedResponse
response = new NotSupportedResponse()
{
RequestResult = new RequestResult()
{
Result = StatusResult.Failed,
ResultCode = 0,
Message = e.Message
}
};
}
}
}

@ -0,0 +1,66 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX
* F3C2C0B6-F8E7-4869-B396-291233785B23
*
* WenJY
*
* 2025-10-24 15:20:11
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.ResourcePerformance;
using CFX.Structures;
namespace Sln.Iot.CFX.RequestReceived;
/// <summary>
/// 5.4.4.1.4 - 处理故障请求
/// HandleFaultRequest/Response
/// </summary>
public class HandleFaultRequestReceived
{
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="response"></param>
public static void Handle(HandleFaultRequest request, out CFXMessage response)
{
try
{
response = new HandleFaultResponse()
{
};
}
catch (Exception e)
{
//无法响应时上传NotSupportedResponse
response = new NotSupportedResponse()
{
RequestResult = new RequestResult()
{
Result = StatusResult.Failed,
ResultCode = 0,
Message = e.Message
}
};
}
}
}

@ -0,0 +1,65 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX.CoreCommunications
* 8E7C0E19-8462-42CA-AC22-F89BF2927C6A
*
* WenJY
*
* 2025-10-24 15:00:54
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.Structures;
namespace Sln.Iot.CFX.RequestReceived;
/// <summary>
/// 5.4.1.5 - 广播查询请求
/// WhoIsThereRequest/Response
/// </summary>
public class WhoIsThereRequestReceived
{
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <param name="response"></param>
public static void Handle(WhoIsThereRequest request, out CFXMessage response)
{
try
{
response = new WhoIsThereResponse()
{
};
}
catch (Exception e)
{
//无法响应时上传NotSupportedResponse
response = new NotSupportedResponse()
{
RequestResult = new RequestResult()
{
Result = StatusResult.Failed,
ResultCode = 0,
Message = e.Message
}
};
}
}
}
Loading…
Cancel
Save