增加可选择安全订阅,以加快订阅速度

Signed-off-by: youthalan <youthalan@126.com>
This commit is contained in:
youthalan
2023-10-16 00:26:59 +00:00
committed by Gitee
parent 7719b8f6d7
commit d5b523479f
2 changed files with 10 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
#region copyright
#region copyright
//------------------------------------------------------------------------------
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
// 此代码版权除特别声明外的代码归作者本人Diego所有
@@ -70,6 +70,10 @@ public class OPCNode
/// </summary>
[Description("安全策略")]
public bool IsUseSecurity { get; set; } = false;
/// <summary>
/// 使用安全订阅
/// </summary>
public bool IsSafed { get; set; } = true;
/// <inheritdoc/>
public override string ToString()
{

View File

@@ -1,4 +1,4 @@
#region copyright
#region copyright
//------------------------------------------------------------------------------
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
// 此代码版权除特别声明外的代码归作者本人Diego所有
@@ -200,7 +200,7 @@ public class OPCUAClient : IDisposable
/// <summary>
/// 新增订阅需要指定订阅组名称订阅的tag名数组
/// </summary>
public async Task AddSubscriptionAsync(string subscriptionName, string[] items)
public async Task AddSubscriptionAsync(string subscriptionName, string[] items, bool isSafed = true)
{
Subscription m_subscription = new(m_session.DefaultSubscription)
{
@@ -213,14 +213,14 @@ public class OPCUAClient : IDisposable
DisplayName = subscriptionName
};
List<MonitoredItem> monitoredItems = new();
var variableNodes = await ReadNodesAsync(items);
var variableNodes = isSafed ? await ReadNodesAsync(items) : null;
for (int i = 0; i < items.Length; i++)
{
try
{
var item = new MonitoredItem
{
StartNodeId = variableNodes[i].NodeId,
StartNodeId = isSafed ? variableNodes[i].NodeId : items[i],
AttributeId = Attributes.Value,
DisplayName = items[i],
Filter = OPCNode.DeadBand == 0 ? null : new DataChangeFilter() { DeadbandValue = OPCNode.DeadBand, DeadbandType = (int)DeadbandType.Absolute, Trigger = DataChangeTrigger.StatusValue },
@@ -532,7 +532,7 @@ public class OPCUAClient : IDisposable
//如果是订阅模式,连接时添加订阅组
if (OPCNode.ActiveSubscribe)
await AddSubscriptionAsync(Guid.NewGuid().ToString(), Variables.ToArray());
await AddSubscriptionAsync(Guid.NewGuid().ToString(), Variables.ToArray(), OPCNode.IsSafed);
return m_session;
}