From 01c42a2b35a4dd375f3ce464a209e23a3ee7d4e4 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sun, 27 Jul 2025 11:03:22 +0800 Subject: [PATCH 01/24] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=20OpcUa=20?= =?UTF-8?q?=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BootstrapBlazor.Extensions.sln | 14 +++++++++++++ .../BootstrapBlazor.OpcUa.csproj | 21 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/components/BootstrapBlazor.OpcUa/BootstrapBlazor.OpcUa.csproj diff --git a/BootstrapBlazor.Extensions.sln b/BootstrapBlazor.Extensions.sln index cabf9f51..dcf47454 100644 --- a/BootstrapBlazor.Extensions.sln +++ b/BootstrapBlazor.Extensions.sln @@ -198,6 +198,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestSvgIcon", "test\Uni EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BootstrapBlazor.FluentSystemIcon", "src\components\BootstrapBlazor.FluentSystemIcon\BootstrapBlazor.FluentSystemIcon.csproj", "{30449D30-0B4E-40FD-85BE-C9BAAC820162}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BootstrapBlazor.OpcUa", "src\components\BootstrapBlazor.OpcUa\BootstrapBlazor.OpcUa.csproj", "{6114A9DF-9DF5-474E-A5B0-25CDF0268B52}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestOpcUa", "test\UnitTestOpcUa\UnitTestOpcUa.csproj", "{98373A64-E224-4715-AE02-A8C6DAFF3338}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -540,6 +544,14 @@ Global {30449D30-0B4E-40FD-85BE-C9BAAC820162}.Debug|Any CPU.Build.0 = Debug|Any CPU {30449D30-0B4E-40FD-85BE-C9BAAC820162}.Release|Any CPU.ActiveCfg = Release|Any CPU {30449D30-0B4E-40FD-85BE-C9BAAC820162}.Release|Any CPU.Build.0 = Release|Any CPU + {6114A9DF-9DF5-474E-A5B0-25CDF0268B52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6114A9DF-9DF5-474E-A5B0-25CDF0268B52}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6114A9DF-9DF5-474E-A5B0-25CDF0268B52}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6114A9DF-9DF5-474E-A5B0-25CDF0268B52}.Release|Any CPU.Build.0 = Release|Any CPU + {98373A64-E224-4715-AE02-A8C6DAFF3338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98373A64-E224-4715-AE02-A8C6DAFF3338}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98373A64-E224-4715-AE02-A8C6DAFF3338}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98373A64-E224-4715-AE02-A8C6DAFF3338}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -633,6 +645,8 @@ Global {10D35EE5-FA31-4C80-B113-CD7A0FB76B4E} = {B6A98ADE-D26A-4D0B-8978-AB7AC915F5AE} {7CAD5915-CE3E-31ED-B1AC-15C61C3ED8C3} = {B6A98ADE-D26A-4D0B-8978-AB7AC915F5AE} {30449D30-0B4E-40FD-85BE-C9BAAC820162} = {FF1089BE-C704-4374-B629-C57C08E1798F} + {6114A9DF-9DF5-474E-A5B0-25CDF0268B52} = {FF1089BE-C704-4374-B629-C57C08E1798F} + {98373A64-E224-4715-AE02-A8C6DAFF3338} = {B6A98ADE-D26A-4D0B-8978-AB7AC915F5AE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D5EB1960-6F30-4CE1-B375-EAE1F787D6FF} diff --git a/src/components/BootstrapBlazor.OpcUa/BootstrapBlazor.OpcUa.csproj b/src/components/BootstrapBlazor.OpcUa/BootstrapBlazor.OpcUa.csproj new file mode 100644 index 00000000..2d083627 --- /dev/null +++ b/src/components/BootstrapBlazor.OpcUa/BootstrapBlazor.OpcUa.csproj @@ -0,0 +1,21 @@ + + + + 9.0.1 + + + + Bootstrap Blazor WebAssembly wasm UI Components Opc Ua Client + Bootstrap UI components extensions of OpcUa + + + + + + + + + + + + From 38fc7e9e9c7f0c72a8cc925c3bbc2b1936ded52d Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sun, 27 Jul 2025 11:03:37 +0800 Subject: [PATCH 02/24] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/ServiceCollectionExtensions.cs | 21 +++++++++++++++++++ .../BootstrapBlazor.OpcUa/_Imports.razor | 1 + 2 files changed, 22 insertions(+) create mode 100644 src/components/BootstrapBlazor.OpcUa/Extensions/ServiceCollectionExtensions.cs create mode 100644 src/components/BootstrapBlazor.OpcUa/_Imports.razor diff --git a/src/components/BootstrapBlazor.OpcUa/Extensions/ServiceCollectionExtensions.cs b/src/components/BootstrapBlazor.OpcUa/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 00000000..48acecf7 --- /dev/null +++ b/src/components/BootstrapBlazor.OpcUa/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,21 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace Microsoft.Extensions.DependencyInjection; + +/// +/// OpcUa 服务扩展类 +/// +public static class ServiceCollectionExtensions +{ + /// + /// 增加 OpcUa 数据服务 + /// + /// + /// + public static IServiceCollection AddBootstrapBlazorOpcUaService(this IServiceCollection services) + { + return services; + } +} diff --git a/src/components/BootstrapBlazor.OpcUa/_Imports.razor b/src/components/BootstrapBlazor.OpcUa/_Imports.razor new file mode 100644 index 00000000..77285129 --- /dev/null +++ b/src/components/BootstrapBlazor.OpcUa/_Imports.razor @@ -0,0 +1 @@ +@using Microsoft.AspNetCore.Components.Web From 18eb88084bf584fc41993569f1175a9b4361d2e0 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sun, 27 Jul 2025 11:03:52 +0800 Subject: [PATCH 03/24] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTestOpcUa/UnitTest1.cs | 83 +++++++++++++++++++++++++ test/UnitTestOpcUa/UnitTestOpcUa.csproj | 25 ++++++++ 2 files changed, 108 insertions(+) create mode 100644 test/UnitTestOpcUa/UnitTest1.cs create mode 100644 test/UnitTestOpcUa/UnitTestOpcUa.csproj diff --git a/test/UnitTestOpcUa/UnitTest1.cs b/test/UnitTestOpcUa/UnitTest1.cs new file mode 100644 index 00000000..8d10f677 --- /dev/null +++ b/test/UnitTestOpcUa/UnitTest1.cs @@ -0,0 +1,83 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +using Microsoft.Extensions.Configuration; +using Opc.Ua; +using Opc.Ua.Client; +using Opc.Ua.Configuration; + +namespace UnitTestOpcUa; + +public class UnitTest1 +{ + [Fact] + public async Task Connect_Ok() + { + var config = new ApplicationConfiguration() + { + ApplicationName = "KEPServerEX Client", + ApplicationType = ApplicationType.Client, + ApplicationUri = "urn:" + Utils.GetHostName() + ":KEPServerEXClient", + SecurityConfiguration = new SecurityConfiguration + { + ApplicationCertificate = new CertificateIdentifier { StoreType = "X509Store", StorePath = "CurrentUser\\My" }, + TrustedPeerCertificates = new CertificateTrustList { StoreType = "Directory", StorePath = "OPC Foundation/CertificateStores/UA Applications" }, + RejectedCertificateStore = new CertificateTrustList { StoreType = "Directory", StorePath = "OPC Foundation/CertificateStores/RejectedCertificates" }, + AutoAcceptUntrustedCertificates = true // 仅用于测试环境 + }, + TransportConfigurations = new TransportConfigurationCollection(), + TransportQuotas = new TransportQuotas { OperationTimeout = 15000 }, + ClientConfiguration = new ClientConfiguration { DefaultSessionTimeout = 60000 } + }; + + //await config.Validate(ApplicationType.Client); + + // 创建端点描述 + var endpointDescription = CoreClientUtils.SelectEndpoint("opc.tcp://127.0.0.1:49320", false); + var endpointConfiguration = EndpointConfiguration.Create(config); + var endpoint = new ConfiguredEndpoint(null, endpointDescription, endpointConfiguration); + + // 创建会话 + var identity = new UserIdentity(); // 匿名登录,或提供用户名密码 + var session = await Session.Create( + config, + endpoint, + false, + false, + config.ApplicationName, + 60000, + identity, + null); + } + + [Fact] + public async Task FindServersAsync() + { + // 配置与连接过程同前述基本客户端 + var application = new ApplicationInstance + { + ApplicationName = "OPC UA Basic Client", + ApplicationType = ApplicationType.Client + }; + var applicationConfiguration = new ApplicationConfiguration + { + ApplicationName = application.ApplicationName, + ApplicationType = application.ApplicationType, + ClientConfiguration = new ClientConfiguration() + }; + var endpointURL = "opc.tcp://127.0.0.1:49320"; + var endpointDescription = CoreClientUtils.SelectEndpoint(applicationConfiguration, endpointURL, false); + var endpointConfiguration = EndpointConfiguration.Create(); + var endpoint = new ConfiguredEndpoint(null, endpointDescription, endpointConfiguration); + + var session = await Session.Create( + configuration: applicationConfiguration, + endpoint: endpoint, + updateBeforeConnect: false, + sessionName: "Opc.Session.BootstrapBlazor", + sessionTimeout: 60000, + identity: null, + preferredLocales: null); + } +} diff --git a/test/UnitTestOpcUa/UnitTestOpcUa.csproj b/test/UnitTestOpcUa/UnitTestOpcUa.csproj new file mode 100644 index 00000000..bcd56af9 --- /dev/null +++ b/test/UnitTestOpcUa/UnitTestOpcUa.csproj @@ -0,0 +1,25 @@ + + + + net9.0 + enable + enable + false + + + + + + + + + + + + + + + + + + From f07957c60a4fcf665d194d4abd8490125d380dcd Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 29 Jul 2025 11:45:46 +0800 Subject: [PATCH 04/24] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTestOpcDa/UnitTest1.cs | 35 +++++++++++++++++++++++++ test/UnitTestOpcDa/UnitTestOpcDa.csproj | 31 ++++++++++++++++++++++ test/UnitTestOpcUa/UnitTest1.cs | 32 +++++++++++++++++++++- 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 test/UnitTestOpcDa/UnitTest1.cs create mode 100644 test/UnitTestOpcDa/UnitTestOpcDa.csproj diff --git a/test/UnitTestOpcDa/UnitTest1.cs b/test/UnitTestOpcDa/UnitTest1.cs new file mode 100644 index 00000000..bd2923a3 --- /dev/null +++ b/test/UnitTestOpcDa/UnitTest1.cs @@ -0,0 +1,35 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace UnitTestOpcDa; + +using BootstrapBlazor.OpcDa; +using Opc.Da; + +public class UnitTest1 +{ + [Fact] + public async Task Test_Ok() + { + var server = new OpcServer(); + var ret = await server.Connect("opcda://localhost/Kepware.KEPServerEX.V6", CancellationToken.None); + Assert.True(ret); + Assert.True(server.IsConnected); + + var items = new Item[] + { + new() { ItemName = "Simulation Examples.Functions.Ramp1", SamplingRate = 1000, ClientHandle = 1 }, + new() { ItemName = "Simulation Examples.Functions.Ramp2", SamplingRate = 1000, ClientHandle = 2 } + }; + + var values = server.Read("Simulation Examples.Functions.Ramp1", "Simulation Examples.Functions.Ramp2"); + Assert.Equal(2, values.Count); + Assert.All(values, v => Assert.Equal(qualityBits.good, v.Quality.QualityBits)); + + server.Disconnect(); + Assert.False(server.IsConnected); + + server.Dispose(); + } +} diff --git a/test/UnitTestOpcDa/UnitTestOpcDa.csproj b/test/UnitTestOpcDa/UnitTestOpcDa.csproj new file mode 100644 index 00000000..2a0bea64 --- /dev/null +++ b/test/UnitTestOpcDa/UnitTestOpcDa.csproj @@ -0,0 +1,31 @@ + + + + net9.0 + enable + enable + false + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/UnitTestOpcUa/UnitTest1.cs b/test/UnitTestOpcUa/UnitTest1.cs index 8d10f677..3ae5feb3 100644 --- a/test/UnitTestOpcUa/UnitTest1.cs +++ b/test/UnitTestOpcUa/UnitTest1.cs @@ -39,7 +39,7 @@ public async Task Connect_Ok() var endpoint = new ConfiguredEndpoint(null, endpointDescription, endpointConfiguration); // 创建会话 - var identity = new UserIdentity(); // 匿名登录,或提供用户名密码 + var identity = new UserIdentity("BB", "123456@163.com"); // 匿名登录,或提供用户名密码 var session = await Session.Create( config, endpoint, @@ -79,5 +79,35 @@ public async Task FindServersAsync() sessionTimeout: 60000, identity: null, preferredLocales: null); + + // Browser + var browser = new Browser(session) + { + BrowseDirection = BrowseDirection.Forward, + NodeClassMask = (int)NodeClass.Variable | (int)NodeClass.Object | (int)NodeClass.Method, + ReferenceTypeId = ReferenceTypeIds.HierarchicalReferences, + IncludeSubtypes = true, + MaxReferencesReturned = 1000 + }; + + // 浏览节点 + var references = browser.Browse(ObjectIds.ObjectsFolder); + + var readValueId = new ReadValueId + { + NodeId = new NodeId("ns=2;s=Simulation Examples.Functions.Ramp1"), + AttributeId = Attributes.Value + }; + + var readValues = new ReadValueIdCollection { readValueId }; + + // 读取节点值 + var resp = await session.ReadAsync( + null, + 0, + TimestampsToReturn.Both, + readValues, CancellationToken.None); + + await session.CloseAsync(); } } From e040600e8917ab8bce8d3585adf1a4e3a0df47df Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 29 Jul 2025 11:46:04 +0800 Subject: [PATCH 05/24] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=9F=BA?= =?UTF-8?q?=E9=87=91=E4=BC=9A=20OpcDa=20=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazor.OpcDa.csproj | 23 +++ .../Extensions/ISubscriptionExtensions.cs | 20 ++ .../BootstrapBlazor.OpcDa/OpcItem.cs | 18 ++ .../BootstrapBlazor.OpcDa/OpcServer.cs | 195 ++++++++++++++++++ 4 files changed, 256 insertions(+) create mode 100644 src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj create mode 100644 src/extensions/BootstrapBlazor.OpcDa/Extensions/ISubscriptionExtensions.cs create mode 100644 src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs create mode 100644 src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs diff --git a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj new file mode 100644 index 00000000..dd43e91b --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj @@ -0,0 +1,23 @@ + + + + 9.0.0 + + + + Bootstrap Blazor WebAssembly wasm UI Components SqlSugar + Bootstrap UI components extensions of SqlSugar + + + + + + + + + + + + + + diff --git a/src/extensions/BootstrapBlazor.OpcDa/Extensions/ISubscriptionExtensions.cs b/src/extensions/BootstrapBlazor.OpcDa/Extensions/ISubscriptionExtensions.cs new file mode 100644 index 00000000..f1f38fc4 --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/Extensions/ISubscriptionExtensions.cs @@ -0,0 +1,20 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +/// +/// 扩展方法类 +/// +public static class ISubscriptionExtensions +{ + /// + /// + /// + /// + public static List Read(this Opc.Da.ISubscription subscription) + { + return []; + } +} diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs new file mode 100644 index 00000000..79d3b736 --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs @@ -0,0 +1,18 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +using Opc.Da; + +/// +/// OPC Item 配置实体类 +/// +public record struct OpcItem(string Name, Quality Quality, DateTime Timestamp, object? Value) +{ + /// + /// 获得 Opc Item 上次值 + /// + public object? LastValue { get; set; } +} diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs new file mode 100644 index 00000000..8d6c27b4 --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs @@ -0,0 +1,195 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +using Opc; +using Opc.Da; +using System.Collections.Concurrent; + +namespace BootstrapBlazor.OpcDa; + +/// +/// OPC Server 操作类 +/// +public partial class OpcServer : IDisposable +{ + private Opc.Da.Server? _server = null; + private readonly ConcurrentDictionary> _valuesCache = []; + private readonly TaskCompletionSource _readTask = new(); + + /// + /// 获得 OPC Server 名称 + /// + public string? ServerName { get; private set; } + + /// + /// 获得 OPC Server 状态 + /// + public bool IsConnected => _server?.IsConnected ?? false; + + /// + /// 连接到 OPCServer 方法 + /// + /// 服务器名称 + /// + /// opcda://localhost/Kepware.KEPServerEX.V6 + /// 成功时返回真 + public async Task Connect(string serverName, CancellationToken? token = null) + { + ServerName = serverName; + + try + { + // 如果已经连接则先断开 + Disconnect(); + + await Task.Run(() => + { + _server = new Opc.Da.Server(new OpcCom.Factory(), new URL(serverName)); + _server.Connect(); + }, token ?? CancellationToken.None); + } + catch (OperationCanceledException) + { + + } + return IsConnected; + } + + /// + /// 断开连接方法 + /// + /// + public void Disconnect() + { + ServerName = string.Empty; + + if (_server != null && _server.IsConnected) + { + foreach (Subscription sub in _server.Subscriptions) + { + _server.CancelSubscription(sub); + } + _server.Disconnect(); + _server = null; + } + } + + /// + /// 创建订阅方法 + /// + /// 订阅名称 + /// + /// + /// + /// + public ISubscription CreateSubscription(string name, int updateRate, bool active = true, Item[]? items = null) + { + var server = GetOpcServer(); + var subscription = server.CreateSubscription(new SubscriptionState + { + Name = name, + Active = active, + UpdateRate = updateRate, + Deadband = 0 + }); + + if (items is { Length: > 0 }) + { + subscription.AddItems(items); + subscription.DataChanged += (subscriptionHandle, requestHandle, values) => + { + foreach (var value in values) + { + _valuesCache.AddOrUpdate(name, key => AddFactory(value), (key, v) => UpdateFactory(v, value)); + } + + _readTask.TrySetResult(); + }; + } + return subscription; + } + + private static HashSet AddFactory(ItemValueResult value) + { + return new HashSet(OpcItemEqualityComparer.Instance) + { + new(value.ItemName, value.Quality, value.Timestamp, value.Value) + }; + } + + private static HashSet UpdateFactory(HashSet items, ItemValueResult value) + { + var item = new OpcItem(value.ItemName, value.Quality, value.Timestamp, value.Value); + if (items.TryGetValue(item, out var v)) + { + item.LastValue = v.Value; + } + items.Remove(item); + items.Add(item); + return items; + } + + /// + /// 取消订阅方法 + /// + /// 订阅接口 实例 + /// + public void CancelSubscription(ISubscription subscription) + { + var server = GetOpcServer(); + server.CancelSubscription(subscription); + } + + /// + /// 读取指定 Item 值方法 + /// + /// + /// + /// + public HashSet Read(params List items) + { + var server = GetOpcServer(); + var results = server.Read([.. items.Select(i => new Item() { ItemName = i })]); + return results.Select(i => new OpcItem(i.ItemName, i.Quality, i.Timestamp, i.Value)).ToHashSet(OpcItemEqualityComparer.Instance); + } + + private Opc.Da.Server GetOpcServer() + { + if (_server == null) + { + throw new InvalidOperationException("OPC Server is not connected."); + } + return _server; + } + + /// + /// Dispose 方法 + /// + /// + protected virtual void Dispose(bool disposing) + { + if (disposing) + { + Disconnect(); + } + } + + /// + /// + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + class OpcItemEqualityComparer : IEqualityComparer + { + public static OpcItemEqualityComparer Instance = new(); + + public bool Equals(OpcItem x, OpcItem y) => x.Name == y.Name; + + public int GetHashCode([DisallowNull] OpcItem item) => item.Name.GetHashCode(); + } +} From 6c20386298cd7779206904d287551808c346fa34 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 29 Jul 2025 11:46:19 +0800 Subject: [PATCH 06/24] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=20OpcDa=20?= =?UTF-8?q?=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BootstrapBlazor.Extensions.sln | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/BootstrapBlazor.Extensions.sln b/BootstrapBlazor.Extensions.sln index dcf47454..e7c6d8af 100644 --- a/BootstrapBlazor.Extensions.sln +++ b/BootstrapBlazor.Extensions.sln @@ -202,6 +202,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BootstrapBlazor.OpcUa", "sr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestOpcUa", "test\UnitTestOpcUa\UnitTestOpcUa.csproj", "{98373A64-E224-4715-AE02-A8C6DAFF3338}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BootstrapBlazor.OpcDa", "src\extensions\BootstrapBlazor.OpcDa\BootstrapBlazor.OpcDa.csproj", "{01007B10-7C3C-4136-83FF-981CA39AD3D4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestOpcDa", "test\UnitTestOpcDa\UnitTestOpcDa.csproj", "{835C8BA9-A9CC-4EA0-9002-34A20F8B2E86}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -552,6 +556,14 @@ Global {98373A64-E224-4715-AE02-A8C6DAFF3338}.Debug|Any CPU.Build.0 = Debug|Any CPU {98373A64-E224-4715-AE02-A8C6DAFF3338}.Release|Any CPU.ActiveCfg = Release|Any CPU {98373A64-E224-4715-AE02-A8C6DAFF3338}.Release|Any CPU.Build.0 = Release|Any CPU + {01007B10-7C3C-4136-83FF-981CA39AD3D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {01007B10-7C3C-4136-83FF-981CA39AD3D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {01007B10-7C3C-4136-83FF-981CA39AD3D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {01007B10-7C3C-4136-83FF-981CA39AD3D4}.Release|Any CPU.Build.0 = Release|Any CPU + {835C8BA9-A9CC-4EA0-9002-34A20F8B2E86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {835C8BA9-A9CC-4EA0-9002-34A20F8B2E86}.Debug|Any CPU.Build.0 = Debug|Any CPU + {835C8BA9-A9CC-4EA0-9002-34A20F8B2E86}.Release|Any CPU.ActiveCfg = Release|Any CPU + {835C8BA9-A9CC-4EA0-9002-34A20F8B2E86}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -647,6 +659,8 @@ Global {30449D30-0B4E-40FD-85BE-C9BAAC820162} = {FF1089BE-C704-4374-B629-C57C08E1798F} {6114A9DF-9DF5-474E-A5B0-25CDF0268B52} = {FF1089BE-C704-4374-B629-C57C08E1798F} {98373A64-E224-4715-AE02-A8C6DAFF3338} = {B6A98ADE-D26A-4D0B-8978-AB7AC915F5AE} + {01007B10-7C3C-4136-83FF-981CA39AD3D4} = {7B29E81D-92DE-46C8-8EDC-1B48C8F12BC2} + {835C8BA9-A9CC-4EA0-9002-34A20F8B2E86} = {B6A98ADE-D26A-4D0B-8978-AB7AC915F5AE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D5EB1960-6F30-4CE1-B375-EAE1F787D6FF} From 61eea9e23761d1192c939235ea0dc90a32327c4c Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 29 Jul 2025 13:11:10 +0800 Subject: [PATCH 07/24] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ISubscriptionExtensions.cs => Extensions.cs} | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) rename src/extensions/BootstrapBlazor.OpcDa/Extensions/{ISubscriptionExtensions.cs => Extensions.cs} (53%) diff --git a/src/extensions/BootstrapBlazor.OpcDa/Extensions/ISubscriptionExtensions.cs b/src/extensions/BootstrapBlazor.OpcDa/Extensions/Extensions.cs similarity index 53% rename from src/extensions/BootstrapBlazor.OpcDa/Extensions/ISubscriptionExtensions.cs rename to src/extensions/BootstrapBlazor.OpcDa/Extensions/Extensions.cs index f1f38fc4..83f98754 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/Extensions/ISubscriptionExtensions.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/Extensions/Extensions.cs @@ -5,16 +5,14 @@ namespace BootstrapBlazor.OpcDa; /// -/// 扩展方法类 +/// 扩展方法类 /// -public static class ISubscriptionExtensions +internal static class Extensions { - /// - /// - /// - /// - public static List Read(this Opc.Da.ISubscription subscription) + public static Quality ToQuality(this Opc.Da.Quality quality) { - return []; + return quality.QualityBits == Opc.Da.qualityBits.good + ? Quality.Good + : Quality.Bad; } } From d633fa36bfe3346b16bc303c6317b79adf75d389 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 29 Jul 2025 13:11:31 +0800 Subject: [PATCH 08/24] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj index dd43e91b..6f84ed8f 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj +++ b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj @@ -16,8 +16,7 @@ - - + From 996851d270b9056afa3c49513fca6418666c1b43 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 29 Jul 2025 13:11:52 +0800 Subject: [PATCH 09/24] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20OpcItemEqual?= =?UTF-8?q?ityComparer=20=E6=AF=94=E8=BE=83=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OpcItemEqualityComparer.cs | 31 +++++++++++++ .../BootstrapBlazor.OpcDa/OpcServer.cs | 43 +++++-------------- 2 files changed, 42 insertions(+), 32 deletions(-) create mode 100644 src/extensions/BootstrapBlazor.OpcDa/OpcItemEqualityComparer.cs diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcItemEqualityComparer.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcItemEqualityComparer.cs new file mode 100644 index 00000000..322a57a7 --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcItemEqualityComparer.cs @@ -0,0 +1,31 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +/// +/// 比较器 +/// +public class OpcItemEqualityComparer : IEqualityComparer +{ + /// + /// 获得 实例 + /// + public static OpcItemEqualityComparer Default { get; } = new(); + + /// + /// + /// + /// + /// + /// + public bool Equals(OpcItem x, OpcItem y) => x.Name == y.Name; + + /// + /// + /// + /// + /// + public int GetHashCode([DisallowNull] OpcItem item) => item.Name.GetHashCode(); +} diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs index 8d6c27b4..3a163fe4 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs @@ -5,17 +5,18 @@ using Opc; using Opc.Da; using System.Collections.Concurrent; +using System.Runtime.Versioning; namespace BootstrapBlazor.OpcDa; /// /// OPC Server 操作类 /// +[SupportedOSPlatform("windows")] public partial class OpcServer : IDisposable { private Opc.Da.Server? _server = null; private readonly ConcurrentDictionary> _valuesCache = []; - private readonly TaskCompletionSource _readTask = new(); /// /// 获得 OPC Server 名称 @@ -31,28 +32,17 @@ public partial class OpcServer : IDisposable /// 连接到 OPCServer 方法 /// /// 服务器名称 - /// /// opcda://localhost/Kepware.KEPServerEX.V6 /// 成功时返回真 - public async Task Connect(string serverName, CancellationToken? token = null) + public bool Connect(string serverName) { ServerName = serverName; - try - { - // 如果已经连接则先断开 - Disconnect(); + // 如果已经连接则先断开 + Disconnect(); - await Task.Run(() => - { - _server = new Opc.Da.Server(new OpcCom.Factory(), new URL(serverName)); - _server.Connect(); - }, token ?? CancellationToken.None); - } - catch (OperationCanceledException) - { - - } + _server = new Opc.Da.Server(new OpcCom.Factory(), new URL(serverName)); + _server.Connect(); return IsConnected; } @@ -103,8 +93,6 @@ public ISubscription CreateSubscription(string name, int updateRate, bool active { _valuesCache.AddOrUpdate(name, key => AddFactory(value), (key, v) => UpdateFactory(v, value)); } - - _readTask.TrySetResult(); }; } return subscription; @@ -112,15 +100,15 @@ public ISubscription CreateSubscription(string name, int updateRate, bool active private static HashSet AddFactory(ItemValueResult value) { - return new HashSet(OpcItemEqualityComparer.Instance) + return new HashSet(OpcItemEqualityComparer.Default) { - new(value.ItemName, value.Quality, value.Timestamp, value.Value) + new(value.ItemName, value.Quality.ToQuality() , value.Timestamp, value.Value) }; } private static HashSet UpdateFactory(HashSet items, ItemValueResult value) { - var item = new OpcItem(value.ItemName, value.Quality, value.Timestamp, value.Value); + var item = new OpcItem(value.ItemName, value.Quality.ToQuality(), value.Timestamp, value.Value); if (items.TryGetValue(item, out var v)) { item.LastValue = v.Value; @@ -151,7 +139,7 @@ public HashSet Read(params List items) { var server = GetOpcServer(); var results = server.Read([.. items.Select(i => new Item() { ItemName = i })]); - return results.Select(i => new OpcItem(i.ItemName, i.Quality, i.Timestamp, i.Value)).ToHashSet(OpcItemEqualityComparer.Instance); + return results.Select(i => new OpcItem(i.ItemName, i.Quality.ToQuality(), i.Timestamp, i.Value)).ToHashSet(OpcItemEqualityComparer.Default); } private Opc.Da.Server GetOpcServer() @@ -183,13 +171,4 @@ public void Dispose() Dispose(true); GC.SuppressFinalize(this); } - - class OpcItemEqualityComparer : IEqualityComparer - { - public static OpcItemEqualityComparer Instance = new(); - - public bool Equals(OpcItem x, OpcItem y) => x.Name == y.Name; - - public int GetHashCode([DisallowNull] OpcItem item) => item.Name.GetHashCode(); - } } From ab5bb23d519b97206d71b3d2c77713aa79417064 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 29 Jul 2025 13:12:02 +0800 Subject: [PATCH 10/24] =?UTF-8?q?refactor:=20=E7=B2=BE=E7=AE=80=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazor.OpcDa/OpcItem.cs | 2 -- .../BootstrapBlazor.OpcDa/Quality.cs | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/extensions/BootstrapBlazor.OpcDa/Quality.cs diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs index 79d3b736..6686792c 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs @@ -4,8 +4,6 @@ namespace BootstrapBlazor.OpcDa; -using Opc.Da; - /// /// OPC Item 配置实体类 /// diff --git a/src/extensions/BootstrapBlazor.OpcDa/Quality.cs b/src/extensions/BootstrapBlazor.OpcDa/Quality.cs new file mode 100644 index 00000000..816e2b7e --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/Quality.cs @@ -0,0 +1,21 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +/// +/// Opc Item Quality 枚举 +/// +public enum Quality +{ + /// + /// 不可信 + /// + Bad, + + /// + /// 可信 + /// + Good +} From 5723e03282f64c10c629005ea2e53ea4ba423511 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 29 Jul 2025 13:12:14 +0800 Subject: [PATCH 11/24] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTestOpcDa/UnitTest1.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/UnitTestOpcDa/UnitTest1.cs b/test/UnitTestOpcDa/UnitTest1.cs index bd2923a3..1c3a8e05 100644 --- a/test/UnitTestOpcDa/UnitTest1.cs +++ b/test/UnitTestOpcDa/UnitTest1.cs @@ -25,7 +25,7 @@ public async Task Test_Ok() var values = server.Read("Simulation Examples.Functions.Ramp1", "Simulation Examples.Functions.Ramp2"); Assert.Equal(2, values.Count); - Assert.All(values, v => Assert.Equal(qualityBits.good, v.Quality.QualityBits)); + Assert.All(values, v => Assert.Equal(BootstrapBlazor.OpcDa.Quality.Good, v.Quality)); server.Disconnect(); Assert.False(server.IsConnected); From 459473c601a978361087701bcfd4338d1c5989ef Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 30 Jul 2025 16:08:36 +0800 Subject: [PATCH 12/24] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20Opc=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NuGet.Config | 1 + .../BootstrapBlazor.OpcDa.csproj | 25 +++++++-- .../Extensions/Extensions.cs | 5 ++ .../Extensions/ServiceCollectionExtensions.cs | 26 +++++++++ .../BootstrapBlazor.OpcDa/IOpcServer.cs | 55 +++++++++++++++++++ .../BootstrapBlazor.OpcDa/ISubscription.cs | 22 ++++++++ .../BootstrapBlazor.OpcDa/OpcServer.cs | 49 +++-------------- .../BootstrapBlazor.OpcDa/OpcSubscription.cs | 12 ++++ 8 files changed, 150 insertions(+), 45 deletions(-) create mode 100644 src/extensions/BootstrapBlazor.OpcDa/Extensions/ServiceCollectionExtensions.cs create mode 100644 src/extensions/BootstrapBlazor.OpcDa/IOpcServer.cs create mode 100644 src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs create mode 100644 src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs diff --git a/NuGet.Config b/NuGet.Config index 95e879ef..3ccc6d0a 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -2,5 +2,6 @@ + diff --git a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj index 6f84ed8f..a6cd306a 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj +++ b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj @@ -2,6 +2,7 @@ 9.0.0 + BootstrapBlazor.OpcDa @@ -9,14 +10,30 @@ Bootstrap UI components extensions of SqlSugar - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/src/extensions/BootstrapBlazor.OpcDa/Extensions/Extensions.cs b/src/extensions/BootstrapBlazor.OpcDa/Extensions/Extensions.cs index 83f98754..ccc0e604 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/Extensions/Extensions.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/Extensions/Extensions.cs @@ -15,4 +15,9 @@ public static Quality ToQuality(this Opc.Da.Quality quality) ? Quality.Good : Quality.Bad; } + + public static ISubscription ToOpcSubscription(this Opc.Da.ISubscription subscription) + { + return new OpcSubscription(subscription); + } } diff --git a/src/extensions/BootstrapBlazor.OpcDa/Extensions/ServiceCollectionExtensions.cs b/src/extensions/BootstrapBlazor.OpcDa/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 00000000..bf5db6fb --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,26 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +using BootstrapBlazor.OpcDa; +using System.Runtime.Versioning; + +namespace Microsoft.Extensions.DependencyInjection; + +/// +/// Opc Da 服务扩展类 +/// +public static class ServiceCollectionExtensions +{ + /// + /// 增加 Opc 操作服务 + /// + /// + /// + [SupportedOSPlatform("windows")] + public static IServiceCollection AddOpcServer(this IServiceCollection services) + { + services.AddSingleton(); + return services; + } +} diff --git a/src/extensions/BootstrapBlazor.OpcDa/IOpcServer.cs b/src/extensions/BootstrapBlazor.OpcDa/IOpcServer.cs new file mode 100644 index 00000000..72f719bf --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/IOpcServer.cs @@ -0,0 +1,55 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +/// +/// Opc Server 接口定义 +/// +public interface IOpcServer : IDisposable +{ + /// + /// 获得 OPC Server 是否已连接 + /// + bool IsConnected { get; } + + /// + /// 获得 OPC Server 名称 + /// + string? ServerName { get; } + + /// + /// 连接到 OPC Server 方法 + /// + /// + /// + bool Connect(string serverName); + + /// + /// 断开连接方法 + /// + void Disconnect(); + + /// + /// 取消订阅方法 + /// + /// + void CancelSubscription(ISubscription subscription); + + /// + /// 创建订阅方法 + /// + /// 订阅名称 + /// 更新频率 默认 1000 毫秒 + /// 是否激活 默认 true + /// + ISubscription CreateSubscription(string name, int updateRate = 1000, bool active = true); + + /// + /// 读取 Item 值方法 + /// + /// + /// + HashSet Read(params List items); +} diff --git a/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs b/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs new file mode 100644 index 00000000..42eee414 --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs @@ -0,0 +1,22 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +/// +/// 订阅接口定义 +/// +public interface ISubscription +{ + /// + /// 数据变更回调 + /// + Func>? DataChanged { get; set; } + + /// + /// 获得 实例 + /// + /// + Opc.Da.ISubscription GetSubscription(); +} diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs index 3a163fe4..e2c3c8df 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs @@ -13,7 +13,7 @@ namespace BootstrapBlazor.OpcDa; /// OPC Server 操作类 /// [SupportedOSPlatform("windows")] -public partial class OpcServer : IDisposable +class OpcServer : IOpcServer { private Opc.Da.Server? _server = null; private readonly ConcurrentDictionary> _valuesCache = []; @@ -69,53 +69,20 @@ public void Disconnect() /// 创建订阅方法 /// /// 订阅名称 - /// - /// - /// + /// 更新频率 默认 1000 毫秒 + /// 是否激活 默认 true /// - public ISubscription CreateSubscription(string name, int updateRate, bool active = true, Item[]? items = null) + public ISubscription CreateSubscription(string name, int updateRate = 1000, bool active = true) { var server = GetOpcServer(); var subscription = server.CreateSubscription(new SubscriptionState { Name = name, - Active = active, + Deadband = 0, UpdateRate = updateRate, - Deadband = 0 + Active = active }); - - if (items is { Length: > 0 }) - { - subscription.AddItems(items); - subscription.DataChanged += (subscriptionHandle, requestHandle, values) => - { - foreach (var value in values) - { - _valuesCache.AddOrUpdate(name, key => AddFactory(value), (key, v) => UpdateFactory(v, value)); - } - }; - } - return subscription; - } - - private static HashSet AddFactory(ItemValueResult value) - { - return new HashSet(OpcItemEqualityComparer.Default) - { - new(value.ItemName, value.Quality.ToQuality() , value.Timestamp, value.Value) - }; - } - - private static HashSet UpdateFactory(HashSet items, ItemValueResult value) - { - var item = new OpcItem(value.ItemName, value.Quality.ToQuality(), value.Timestamp, value.Value); - if (items.TryGetValue(item, out var v)) - { - item.LastValue = v.Value; - } - items.Remove(item); - items.Add(item); - return items; + return subscription.ToOpcSubscription(); } /// @@ -126,7 +93,7 @@ private static HashSet UpdateFactory(HashSet items, ItemValueR public void CancelSubscription(ISubscription subscription) { var server = GetOpcServer(); - server.CancelSubscription(subscription); + server.CancelSubscription(subscription.GetSubscription()); } /// diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs new file mode 100644 index 00000000..7283a125 --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs @@ -0,0 +1,12 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +class OpcSubscription(Opc.Da.ISubscription subscription) : ISubscription +{ + public Func>? DataChanged { get; set; } + + public Opc.Da.ISubscription GetSubscription() => subscription; +} From 0911d5dd8b0c1a2bb6f733da76a85936e4bdd6e3 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 30 Jul 2025 16:08:59 +0800 Subject: [PATCH 13/24] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTestOpcDa/UnitTest1.cs | 19 ++++++++++--------- test/UnitTestOpcDa/UnitTestOpcDa.csproj | 8 ++++---- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/test/UnitTestOpcDa/UnitTest1.cs b/test/UnitTestOpcDa/UnitTest1.cs index 1c3a8e05..034e9283 100644 --- a/test/UnitTestOpcDa/UnitTest1.cs +++ b/test/UnitTestOpcDa/UnitTest1.cs @@ -5,24 +5,25 @@ namespace UnitTestOpcDa; using BootstrapBlazor.OpcDa; +using Microsoft.Extensions.DependencyInjection; using Opc.Da; +using System.Runtime.Versioning; +[SupportedOSPlatform("windows")] public class UnitTest1 { [Fact] - public async Task Test_Ok() + public void Read_Ok() { - var server = new OpcServer(); - var ret = await server.Connect("opcda://localhost/Kepware.KEPServerEX.V6", CancellationToken.None); + var sc = new ServiceCollection(); + sc.AddOpcServer(); + + var sp = sc.BuildServiceProvider(); + var server = sp.GetRequiredService(); + var ret = server.Connect("opcda://localhost/Kepware.KEPServerEX.V6"); Assert.True(ret); Assert.True(server.IsConnected); - var items = new Item[] - { - new() { ItemName = "Simulation Examples.Functions.Ramp1", SamplingRate = 1000, ClientHandle = 1 }, - new() { ItemName = "Simulation Examples.Functions.Ramp2", SamplingRate = 1000, ClientHandle = 2 } - }; - var values = server.Read("Simulation Examples.Functions.Ramp1", "Simulation Examples.Functions.Ramp2"); Assert.Equal(2, values.Count); Assert.All(values, v => Assert.Equal(BootstrapBlazor.OpcDa.Quality.Good, v.Quality)); diff --git a/test/UnitTestOpcDa/UnitTestOpcDa.csproj b/test/UnitTestOpcDa/UnitTestOpcDa.csproj index 2a0bea64..3eea723d 100644 --- a/test/UnitTestOpcDa/UnitTestOpcDa.csproj +++ b/test/UnitTestOpcDa/UnitTestOpcDa.csproj @@ -14,10 +14,6 @@ - - - - @@ -28,4 +24,8 @@ + + + + From 026fbadf2e006692205392565d648c72d971720b Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 30 Jul 2025 17:16:56 +0800 Subject: [PATCH 14/24] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=20OpcWrite?= =?UTF-8?q?Item=20=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazor.OpcDa/IOpcItem.cs | 16 +++++++++++++ .../BootstrapBlazor.OpcDa/IOpcServer.cs | 9 ++++++- .../BootstrapBlazor.OpcDa/ISubscription.cs | 2 +- .../OpcItemEqualityComparer.cs | 12 +++++----- .../{OpcItem.cs => OpcReadItem.cs} | 4 ++-- .../BootstrapBlazor.OpcDa/OpcServer.cs | 24 +++++++++++++++---- .../BootstrapBlazor.OpcDa/OpcSubscription.cs | 2 +- .../BootstrapBlazor.OpcDa/OpcWriteItem.cs | 16 +++++++++++++ 8 files changed, 70 insertions(+), 15 deletions(-) create mode 100644 src/extensions/BootstrapBlazor.OpcDa/IOpcItem.cs rename src/extensions/BootstrapBlazor.OpcDa/{OpcItem.cs => OpcReadItem.cs} (75%) create mode 100644 src/extensions/BootstrapBlazor.OpcDa/OpcWriteItem.cs diff --git a/src/extensions/BootstrapBlazor.OpcDa/IOpcItem.cs b/src/extensions/BootstrapBlazor.OpcDa/IOpcItem.cs new file mode 100644 index 00000000..1127e983 --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/IOpcItem.cs @@ -0,0 +1,16 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +/// +/// +/// +public interface IOpcItem +{ + /// + /// + /// + string Name { get; } +} diff --git a/src/extensions/BootstrapBlazor.OpcDa/IOpcServer.cs b/src/extensions/BootstrapBlazor.OpcDa/IOpcServer.cs index 72f719bf..344fcbd0 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/IOpcServer.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/IOpcServer.cs @@ -51,5 +51,12 @@ public interface IOpcServer : IDisposable /// /// /// - HashSet Read(params List items); + HashSet Read(params HashSet items); + + /// + /// 读取 Item 值方法 + /// + /// + /// + HashSet Write(params HashSet items); } diff --git a/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs b/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs index 42eee414..b1e85fdd 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs @@ -12,7 +12,7 @@ public interface ISubscription /// /// 数据变更回调 /// - Func>? DataChanged { get; set; } + Func>? DataChanged { get; set; } /// /// 获得 实例 diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcItemEqualityComparer.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcItemEqualityComparer.cs index 322a57a7..5a961ba0 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcItemEqualityComparer.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcItemEqualityComparer.cs @@ -5,14 +5,14 @@ namespace BootstrapBlazor.OpcDa; /// -/// 比较器 +/// 比较器 /// -public class OpcItemEqualityComparer : IEqualityComparer +public class OpcItemEqualityComparer : IEqualityComparer where TItem : IOpcItem { /// - /// 获得 实例 + /// 获得 实例 /// - public static OpcItemEqualityComparer Default { get; } = new(); + public static OpcItemEqualityComparer Default { get; } = new(); /// /// @@ -20,12 +20,12 @@ public class OpcItemEqualityComparer : IEqualityComparer /// /// /// - public bool Equals(OpcItem x, OpcItem y) => x.Name == y.Name; + public bool Equals(TItem? x, TItem? y) => x?.Name == y?.Name; /// /// /// /// /// - public int GetHashCode([DisallowNull] OpcItem item) => item.Name.GetHashCode(); + public int GetHashCode([DisallowNull] TItem item) => item.Name.GetHashCode(); } diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcReadItem.cs similarity index 75% rename from src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs rename to src/extensions/BootstrapBlazor.OpcDa/OpcReadItem.cs index 6686792c..adcee8af 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcItem.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcReadItem.cs @@ -5,9 +5,9 @@ namespace BootstrapBlazor.OpcDa; /// -/// OPC Item 配置实体类 +/// OPC Item 读取实体类 /// -public record struct OpcItem(string Name, Quality Quality, DateTime Timestamp, object? Value) +public record struct OpcReadItem(string Name, Quality Quality, DateTime Timestamp, object? Value) : IOpcItem { /// /// 获得 Opc Item 上次值 diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs index e2c3c8df..b463ccf3 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcServer.cs @@ -16,7 +16,7 @@ namespace BootstrapBlazor.OpcDa; class OpcServer : IOpcServer { private Opc.Da.Server? _server = null; - private readonly ConcurrentDictionary> _valuesCache = []; + private readonly ConcurrentDictionary> _valuesCache = []; /// /// 获得 OPC Server 名称 @@ -101,12 +101,28 @@ public void CancelSubscription(ISubscription subscription) /// /// /// - /// - public HashSet Read(params List items) + public HashSet Read(params HashSet items) { var server = GetOpcServer(); var results = server.Read([.. items.Select(i => new Item() { ItemName = i })]); - return results.Select(i => new OpcItem(i.ItemName, i.Quality.ToQuality(), i.Timestamp, i.Value)).ToHashSet(OpcItemEqualityComparer.Default); + return results.Select(i => new OpcReadItem(i.ItemName, i.Quality.ToQuality(), i.Timestamp, i.Value)).ToHashSet(OpcItemEqualityComparer.Default); + } + + /// + /// 读取指定 Item 值方法 + /// + /// + /// + public HashSet Write(params HashSet items) + { + var server = GetOpcServer(); + var results = server.Write([.. items.Select(i => new ItemValue() { ItemName = i.Name, Value = i.Value })]); + + return items.Select(i => + { + var item = results.FirstOrDefault(v => v.ItemName == i.Name); + return new OpcWriteItem(i.Name, i.Value) { Result = item != null && item.ResultID == ResultID.S_OK }; + }).ToHashSet(OpcItemEqualityComparer.Default); } private Opc.Da.Server GetOpcServer() diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs index 7283a125..adab1821 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs @@ -6,7 +6,7 @@ namespace BootstrapBlazor.OpcDa; class OpcSubscription(Opc.Da.ISubscription subscription) : ISubscription { - public Func>? DataChanged { get; set; } + public Func>? DataChanged { get; set; } public Opc.Da.ISubscription GetSubscription() => subscription; } diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcWriteItem.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcWriteItem.cs new file mode 100644 index 00000000..b55d2c77 --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcWriteItem.cs @@ -0,0 +1,16 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace BootstrapBlazor.OpcDa; + +/// +/// OPC Item 写入实体类 +/// +public record struct OpcWriteItem(string Name, object? Value) : IOpcItem +{ + /// + /// 获得/设置 写入结果 + /// + public bool Result { get; set; } +} From 2480fdffaacebf57f705ab84b5c8c395d8dc7ae2 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 30 Jul 2025 17:17:12 +0800 Subject: [PATCH 15/24] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTestOpcDa/UnitTest1.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/UnitTestOpcDa/UnitTest1.cs b/test/UnitTestOpcDa/UnitTest1.cs index 034e9283..703fab74 100644 --- a/test/UnitTestOpcDa/UnitTest1.cs +++ b/test/UnitTestOpcDa/UnitTest1.cs @@ -6,14 +6,13 @@ namespace UnitTestOpcDa; using BootstrapBlazor.OpcDa; using Microsoft.Extensions.DependencyInjection; -using Opc.Da; using System.Runtime.Versioning; [SupportedOSPlatform("windows")] public class UnitTest1 { [Fact] - public void Read_Ok() + public void Write_Ok() { var sc = new ServiceCollection(); sc.AddOpcServer(); @@ -26,7 +25,14 @@ public void Read_Ok() var values = server.Read("Simulation Examples.Functions.Ramp1", "Simulation Examples.Functions.Ramp2"); Assert.Equal(2, values.Count); - Assert.All(values, v => Assert.Equal(BootstrapBlazor.OpcDa.Quality.Good, v.Quality)); + Assert.All(values, v => Assert.Equal(Quality.Good, v.Quality)); + + var results = server.Write(new OpcWriteItem() + { + Name = "Channel1.Device1.Tag3", + Value = 123 + }); + Assert.All(results, v => Assert.True(v.Result)); server.Disconnect(); Assert.False(server.IsConnected); From d2b6bceecd35c86920365f9443411d7b7fb569d6 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 30 Jul 2025 18:25:32 +0800 Subject: [PATCH 16/24] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E6=95=B0=E6=8D=AE=E5=9B=9E=E8=B0=83=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazor.OpcDa/ISubscription.cs | 15 +++++++- .../BootstrapBlazor.OpcDa/OpcSubscription.cs | 37 ++++++++++++++++++- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs b/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs index b1e85fdd..85790bfb 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs @@ -10,13 +10,24 @@ namespace BootstrapBlazor.OpcDa; public interface ISubscription { /// - /// 数据变更回调 + /// 获得/设置 是否保留最后一个值 /// - Func>? DataChanged { get; set; } + public bool KeepLastValue { get; set; } + + /// + /// 获得/设置 数据变更回调 + /// + Func, Task>? DataChanged { get; set; } /// /// 获得 实例 /// /// Opc.Da.ISubscription GetSubscription(); + + /// + /// 增加数据项 + /// + /// + void AddItems(IEnumerable items); } diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs index adab1821..5d392c35 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs @@ -6,7 +6,42 @@ namespace BootstrapBlazor.OpcDa; class OpcSubscription(Opc.Da.ISubscription subscription) : ISubscription { - public Func>? DataChanged { get; set; } + public Func, Task>? DataChanged { get; set; } + + public bool KeepLastValue { get; set; } public Opc.Da.ISubscription GetSubscription() => subscription; + + private readonly List _cache = []; + + public void AddItems(IEnumerable items) + { + var subscription = GetSubscription(); + subscription.AddItems([.. items.Select(i => new Opc.Da.Item { ItemName = i })]); + + subscription.DataChanged += (_, _, values) => + { + var items = values.Select(i => + { + var item = new OpcReadItem() + { + Name = i.ItemName, + Value = i.Value, + Quality = i.Quality == Opc.Da.Quality.Good ? Quality.Good : Quality.Bad, + Timestamp = i.Timestamp + }; + if (KeepLastValue) + { + var v = _cache.Find(i => i.Name == item.Name); + item.LastValue = v.Value; + } + return item; + }).ToList(); + + _cache.Clear(); + _cache.AddRange(items); + + DataChanged?.Invoke(items); + }; + } } From 83a020c8eda3a9dab941110f7caf64ac5fc4e088 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 30 Jul 2025 18:25:39 +0800 Subject: [PATCH 17/24] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTestOpcDa/UnitTest1.cs | 53 +++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/test/UnitTestOpcDa/UnitTest1.cs b/test/UnitTestOpcDa/UnitTest1.cs index 703fab74..a80117ef 100644 --- a/test/UnitTestOpcDa/UnitTest1.cs +++ b/test/UnitTestOpcDa/UnitTest1.cs @@ -27,11 +27,18 @@ public void Write_Ok() Assert.Equal(2, values.Count); Assert.All(values, v => Assert.Equal(Quality.Good, v.Quality)); - var results = server.Write(new OpcWriteItem() - { - Name = "Channel1.Device1.Tag3", - Value = 123 - }); + var results = server.Write([ + new OpcWriteItem() + { + Name = "Channel1.Device1.Tag2", + Value = 123 + }, + new OpcWriteItem() + { + Name = "Channel1.Device1.Tag3", + Value = 123 + } + ]); Assert.All(results, v => Assert.True(v.Result)); server.Disconnect(); @@ -39,4 +46,40 @@ public void Write_Ok() server.Dispose(); } + + [Fact] + public async Task Subscription_Ok() + { + var sc = new ServiceCollection(); + sc.AddOpcServer(); + + var sp = sc.BuildServiceProvider(); + var server = sp.GetRequiredService(); + server.Connect("opcda://localhost/Kepware.KEPServerEX.V6"); + + var subscription = server.CreateSubscription("Test"); + subscription.AddItems( + [ + "Channel1.Device1.Tag1", + "Channel1.Device1.Tag2", + "Channel1.Device1.Tag3" + ]); + + var tcs = new TaskCompletionSource(); + var values = new List(); + subscription.KeepLastValue = true; + subscription.DataChanged += items => + { + values.Clear(); + values.AddRange(items); + tcs.TrySetResult(); + return Task.CompletedTask; + }; + await tcs.Task; + + server.CancelSubscription(subscription); + + server.Disconnect(); + server.Dispose(); + } } From e9f00c34d99f84b8141ddb51f6597789ff87d8b5 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 30 Jul 2025 22:05:28 +0800 Subject: [PATCH 18/24] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=20Action=20=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs | 2 +- src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs b/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs index 85790bfb..9ba1241e 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/ISubscription.cs @@ -17,7 +17,7 @@ public interface ISubscription /// /// 获得/设置 数据变更回调 /// - Func, Task>? DataChanged { get; set; } + Action>? DataChanged { get; set; } /// /// 获得 实例 diff --git a/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs b/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs index 5d392c35..3c7e222e 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs +++ b/src/extensions/BootstrapBlazor.OpcDa/OpcSubscription.cs @@ -6,7 +6,7 @@ namespace BootstrapBlazor.OpcDa; class OpcSubscription(Opc.Da.ISubscription subscription) : ISubscription { - public Func, Task>? DataChanged { get; set; } + public Action>? DataChanged { get; set; } public bool KeepLastValue { get; set; } From a6118e5dde8e284bd11d6e02950529218a00e53d Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 30 Jul 2025 22:05:37 +0800 Subject: [PATCH 19/24] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTestOpcDa/UnitTest1.cs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/test/UnitTestOpcDa/UnitTest1.cs b/test/UnitTestOpcDa/UnitTest1.cs index a80117ef..27911ec6 100644 --- a/test/UnitTestOpcDa/UnitTest1.cs +++ b/test/UnitTestOpcDa/UnitTest1.cs @@ -32,11 +32,6 @@ public void Write_Ok() { Name = "Channel1.Device1.Tag2", Value = 123 - }, - new OpcWriteItem() - { - Name = "Channel1.Device1.Tag3", - Value = 123 } ]); Assert.All(results, v => Assert.True(v.Result)); @@ -57,25 +52,28 @@ public async Task Subscription_Ok() var server = sp.GetRequiredService(); server.Connect("opcda://localhost/Kepware.KEPServerEX.V6"); - var subscription = server.CreateSubscription("Test"); + var subscription = server.CreateSubscription("Test", 100); subscription.AddItems( [ "Channel1.Device1.Tag1", - "Channel1.Device1.Tag2", - "Channel1.Device1.Tag3" + "Channel1.Device1.Tag2" ]); var tcs = new TaskCompletionSource(); var values = new List(); subscription.KeepLastValue = true; - subscription.DataChanged += items => + subscription.DataChanged = items => { values.Clear(); values.AddRange(items); tcs.TrySetResult(); - return Task.CompletedTask; }; + await tcs.Task; + Assert.Equal(2, values.Count); + + await Task.Delay(150); + Assert.Single(values); server.CancelSubscription(subscription); From a148f1135d1415d46fad6aaddd1a043d3bf23a59 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 5 Aug 2025 14:07:59 +0800 Subject: [PATCH 20/24] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazor.OpcDa/lib/OpcComRcw.dll | Bin 0 -> 96656 bytes .../lib/OpcNetApi.Com.dll | Bin 0 -> 193936 bytes .../BootstrapBlazor.OpcDa/lib/OpcNetApi.dll | Bin 0 -> 197008 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/extensions/BootstrapBlazor.OpcDa/lib/OpcComRcw.dll create mode 100644 src/extensions/BootstrapBlazor.OpcDa/lib/OpcNetApi.Com.dll create mode 100644 src/extensions/BootstrapBlazor.OpcDa/lib/OpcNetApi.dll diff --git a/src/extensions/BootstrapBlazor.OpcDa/lib/OpcComRcw.dll b/src/extensions/BootstrapBlazor.OpcDa/lib/OpcComRcw.dll new file mode 100644 index 0000000000000000000000000000000000000000..c2daeb0135568edf66af2f2185e64269dd3654dd GIT binary patch literal 96656 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%0AV_Y)>THF|_jhUih)Jc&AKB$gx)J8AVNAZDya zL_46$iPHRPn88xL?fAe9f|6jIXoed1rCPhMGLfojH8($sOd@u`Qnpn?sYR63t|nb= z^h3lP#}Lgn?`x8@zo5Lk_2`la4^=hP>wr!`N3vO*l6I41>i=Z*%> zOM$c_G;rZL!!fPSL+!hf3`1qf^*`2G}nAAier)73y*u`)SB*V=;>%p2+(fjiPvJOu2 za?o`L2piNWUYI}Q9@RP{t@h z^b5Fa!do2FJOLR5(Jukg9VovGf-}d_uK=0o2aCT<9cfscZJdPo%`6h049CMblYtL- zY<#yA{A(n^H3PrF3s>4lzhw@XEv{*o!f8ltt^W=IxW82JScxz2`O&`u;)EV9Ib|!Q z#^eQ4V&lY#aMolYd4>Bky129MLd~0V@j3&~U3g48BX7>da|xcW;0f`VzaPM{7!SHZ z;aM;0V0Z~LS)JU$OIO-2<_mSdw+Fl&p9fn&_~*(wDRhCkD!RabWm@RB{3bX0J?f3l znzmdZhFSD)fFS0EnCV@u>SpQCD6}_F81}L~@JE9&l`G>dho?L2+&~&?oj1xzygW=S6=&jlJlP z_-*_h%EOEPL=t4>`=vv%*NgtW6G*QY{Re>})L!&w%l((wjT5YNUVEv2H(baSgxkRm zmcIfH4Hk^vi0YZc^zzM*$3=s|Y&;rrfm=-CPtXjP@d=Q*p~kC$?jL6rGcN9EY5f@q zHsG@paUoDCyz6n&#|DfJ!R#pKHPxedY&oUgZ-VYm?U1`(^%?jv7chg(=dN$gao6h^ znwk+h>9w1F>pxM^P44=Q3@8T8dBNB&NL#b4-$G?>&CHvqJZ|O1@uR;XF|HTYsiVKs z=j()x(}X&@hcK5DlhqhF;4&oXQVbJ0kl>63F5UHo-FPMZhTCR1qtK6+&2ob2$17zz zJSo@VF>KGpZd_BTftvB$x)d13=SM$H#>Y1UlyRS0Ll~dKaWLV$>`Q>VAN52#STHT! zTo)Hmz$S`|682B^Jr~3Ow}Q{GpVf)rtIdB8u=fLod-$wAB&$65?~L`%FZZA=@`M*n zYaU}9LWiD_^M0g1u53pakD(o+jQmVkXFgaUjWpfnB{%cCIKAn`Z6^9J5FhQuAN?!I z7VnlR>km?7#8~i}CwbR4j|;sDZu|^}R-?}kwpZ|pocz#UAWuGe3|Zh?MY60Y%MPaF z#hFJgSB-q%m>~S(`N(IPQ-`k4#%IZ&sg}LcjN8iUr++qj%i&pf-jNVC9!FUbrWEse zab{W(h#JAH%1_h>1T;D{8+t7T!{YTC4k8rB*|Un`_8RCo^34jqOoo7lhaWVP3|^bE z#fhTi<4dj&2Qh91RbHU#x-U6Ut-MGTfsz_ot$`w zHCQH%+x{jadSY(0zop$iDAm57?u^dTiwJVYB>ypH-8zhgKwf1J5a--YAMMnl1}HX> zbs8XN{$c62W&uCon9HdwaXrMTOC*Qe+Tyj5ivh;~2J0y5krKVN5f}LANc9nB!pnX3Sqy$DW$XArz{{p<@n%wRE{v8Xtqh zjCaSEPE0c*uc{;{w zIb*_RVJtVAPgA!>)6^}eev3Rm)rC_l3-KtTJ7I2708f?80Ge!X#8%P-pj>d(4b+O} z&&GEFWnR?>?T*Vy%Kz?kTK$?L8Gq5W^vKQsf?p^t8>QK?6hgJzeOA!8uhVSR{Ip|=cU9p zzDmf&v5zH)k+#~YS?gJYiK2_qGc2%zmkuEUvGVoMq-41(F!ng~ut6Db(qM+4>$b3W zaXJJmJ5NLV9>Pc2WV}+&x)`4)Kv#eg#qHk$IkCcg2_u$CbT5q_%>q#-)?<|OeiFir za$GaYab=W)wfK`zJVrg9_GgSgqy4_|`+8L5F6uw0xo;|>lp8OyhDR6{d1hGTG=|ZJ zCk<=Vx+^L2N{!&z2hTI{^x>(B%qaDHxFbC0K!OaMx{>hBcrFKg9p2{ezwD)N6EJ$?O>-ep?)+Iw6HIVZle#?;;7XT zMK42F+=t`KY&NgN+!t5I=@l(!>^n#e+XQ!4w&}!+OHJmJHNnWYwV|0#?6J6wJAnp1 ze#R-ikc{lBltzC{M#lF5%H&;0>f)jvGdYnDwi116mEKh(7VaIym&$s#x5~(4Cw<#t zuk`AVj_KJu!T=I%$B3E8uv{}D@grGRtBJcFVde%VBa+mks&Vo&it!xBYy+!CHRFux za8>%sefm>e&y?guD!q9`lW{T@5>I@ zi%Nhl1GomHkt;(0%3(Pe`9?UaQkkgP*rmhQumVHCjQO{LeRJ@<50BjjFsY%ggFHWk zM+`9dDeHOsu+6*_ZyUY)-TlS=AUz!HmfH6r<6fY?`ZLo{dFsc& z>F#NC#j2Tgg`t!5>LGe>i&8Gn#(`2rxfvzUq{1NtSu;Q#^Fwnmus{c|FDH^!t>m+b zh&S>>tu|tlPU{O?){E(_IcRUt7lqMM4f-PaSfZS8kU2~qc8G7*gR3={?Gpo=;?S9} zz;VNF@?k{yw!`3#@9mb`G8h9Bobe1MzJXYSkXOt%5}TMwkQiF_e*=*lFrOid%9~#-17UOAtA=77yFr>3B?Af>XT(58-#~vmHFgK7F4wIv8X8bVd?g@R_%4RuC{|4 zpzz%aA%TP1zwr*!zFfsRe{PyOulgUVGqy-SsXB`!{?qF0tINRm&rhl|Z(6rLeS*tB zt;=nuw@CCTZ#W)!C2~MpQ|`(>6Eddx>v9bwk%KJcz>nnsT13XJ+FIdNiuKdAwUW!U zFk?z;jYC3mJT;3ipyf8`DSIbyb7S8{0Hz%=vCK8sB<4EA+!PDe6v*fj=bejAmRM1? z2A~Zstnkqy)&X;CBFl0Qd2|9w!9MdC8T^(fEJ(G@pHE!GILf-bmLle}r zNjPN=yoxt$G*!X_x7d)sg?lL;tg$5V*@iJ0CimKLKH20$_;NhU0DBgmw7>nol;@bx z{a?UyOeg-I$a6gx_Jz2ePkl!v@6f|Xabso8CgyI0hIM!>-5+))PS9Sj{XGQ5Lq|+< z_h|6ggMdc!*xxUyc%z50zmLzW;Znxfs7RIbpx&!;v|4bXnPXh2PHky1<=vIfZ5zFu zQRhL9zX;r?S3Ec)9%J-QU?i6$;ety&+$rTmedMr3V?NQF3-m6w(6f+2Ip&ON^Js&Y zr=I>ygNrZUOZd`^xO6H($L-W-*u-h{nO7Bk2C`eY*8;7?T#amBC8LpzkJNg>25-Gg z&?E{K6EG)1DhJRHS{lo)m8SKHYW^jrPFJbQHq!@s>aA}#^>fq-puv}CtRGhXWmrf` z#|N#Wy-3)4ar9=;HJ<0N5HK{w8O4&;Wu7{0U0UV_l=+pJ%k1DUIJp1?2AE^grz5{M zB|G`)>4cy24>EPfon}XxvIBJsbmLc1Hs|vp!adf_oESXs?}r69EZBx`HZ0(465FF> zzl``E!gy=@F&hh*ctbz|4O#T7nE~W&+KPL1=SnCH$KMpdDSX#eT-`2p+}Ay|BrWd~R|HGMWrN1xySKBdo3|5@@O zsxKwM;{QPse1DHga8)-65*c~m0Yig~x)3t*b;^j`SJ^YD&m+o3$jjv-WIcz(lTi~W zx>?Iv+tZo>cDw!t;Pi0f*D$RQu3&`?bNY1Yoram%^AKB#T$;ZMcjiZRMA#_vf_V() zxm-zMl+DRIpr8myH^tvf)1LzXo!7``wEi^H);p244nbDDEq!mY0U~WK_vKti0V|~V zHn(n%>3Oe((CaBOOE z>)wOaN4+-;tJ2=kGAzTy73T$^G9_4badUA^=1%D{Q>UOa3=`J&YZLpSw*JsODm4?) zHxbjjP)8o&E#Sao7JgJt-EfoIk9Fjp`|W_Bi|djxku-f%^E%wr%mTHn5jl}He340} zc$*90xEtLI?x}`L1a1hI(Z)_83UR&5@y97ldixfpMe{N@T5qg{J>+Dk3ad#N5GOBw z3_S0%@Jx9@ru+ms;~T8r&{7~lVp)6vE&|yHWPiI^?j@h}47xE!--9f`6L#^@QgX;i zID~n%%+Lr1k}-#TOxX*E=5Qmy-Xv-?fF$(QqJ7~q+X{He^p_`w!KLibLO0BIMCSFe z5*f?R{5BAAdMLfGJ*VFHQ8lb((NkYSA^&YzG)D1 zP3Gz<`mCbg5t(8sku71ADkidc-CJ}WDT~*kjx);Qs;Om>BDf#w^8_OJxv534arm?n z*f;_~JYVR`_f9a*O4>=M{81@D{(Q=xm>3=Mry+yD5Q-DLW}H<1L{pk!#d}jJ#2qI? zWKt@J(1~s$lw3W^4xK@vikLNwo9wn_Pz6~W#)dO$0!Uvy8is3VKWN_gHgdUl+o%{y zp@~|PsL2KiekkQ_qGNK@F}WlrUCh)deb%N+$NcJ#TF3A#G}g@i`?6~&1KC}MqPt~x z1_i2XN4XW8ExGMdpgJODRw7!g(v>s%^Yz=A7$NT`84ibZ*a%oOox+Zo6&7))B$8ugAv%C>+j98K#8CsjUNR^R&BaH%TE_fY zs#C>jN_wea0!sxYy;Okjs$ojBS1%PvN6Rs^qgM0`JhLaB)<07HXy2ZrsLOvBPdSWW z&I7v68@~a-bWbx%#pWM$beOf#znt9BAN3f-cRL8CNaFp;{ZP^AH_YyC?SsjiHU+4_R?s3BobcF@`k{(Qmz#l9Tv? ztKJ2+P=|5mX+Abm6ta??<2P_f7`MB4Jng?XRJLC1NzBwj616s%*azRM>pMSSTqw*b z8$71MV&2qP5Zr+UmQkKG7VPN{cg9FG?4HNwybQ*JdhGu#qB$VQx3+ z`T3oPJDoAkziqq@EOr_PfgfIUFn;TUxLQ%jTpRq%`1M8rbZq?viF%xrfjVil3MmJ{ zD_4P){N5Y(bCE^ExYRxGYfe77%&^PuSxH@UxWB%usv6W$Qw?H8bwX@9sUcx{ZbdG| z=X8VYrDMl%^Z2zh)sTU@hFIHV74>~T*wW28b*qlWK-W=IriuMLB(4_Bgoau$r=wmh zuOcb60;F@LG2yYN{!RuR!6ZiscmR?%7)RIF&RZfLDql^|9rwROi`@&7qz z=HC0>%R<`v{r!IbZ{XcKXJ+m!XU?3NIdkTWM3^pnkggZ+-I3szud_WBy^#W2{sK}Ry_C|-{yZR@PDdUE7TdpI$gXm8fFWy1wa`ne;mu?tt zZ^H#h6tl;eM16cN#Fy!g)3k%}J_~=FZS~BB)C6?UQ;CVfoCoX+gaF#T&xnEX3I)ZTKjm-645t&J=TgQ$P zTegw*y7nW$Qgtxsw3dM-%Vs{NbECDiqXo%9U(l$5gAIF;wa!^>6kExglSTbXr`)U7 zSml=YPbK07TLgrK4%71oo%C|^t@I#AZv)R5=ZR<(5=H_EE-9WJ1?Tj(N)6J@M?%;V zD2O=ulvY}8ieV6K+Kd<&9pZ2rHz)5L5PL>l+s`4c6B#M|-`N*h*X`=|Yx2S{S@hJL+P~;vd+C!0r zpTTn-{6w1^{4}q&@S_W8Gm#yTxHfg=mKv_ERf~*spe3&D#e6enHc8ygA4zd%HS9rI zr|3h(B8A5_(aQxb{){+c?~X{_M?)vdVS9klK=@ z&h2&7ucag@nLMQ`tT*6s6tKNgIXfUPp=5h~k#0FG`pPr|kSPRnLZj(hxUOUU?a&y2 zDWS1=`l2vJ1a&PaMH~yqDW_*bw~_tF<4Ik*$56->18!b?$;5pDcW45AWx)JW08v79 zAdXBo?(cR-sawnn_~enrSpgidXq#DCee%O^9Gd>_M~kLiY};U80?rgOoQS+*NG0?w zS^=Z#x_TnrB|tq7456-Y?f1HBf+5Up!fkO(s|>>@Ic1nqYn1`E+R$#89>ukrt6>td zPi~luXNu1qor1Ry#)5x9A)+-5!00o-&FD0Kdq|JImYuZS8J*5f9FhU5qPQo)59ODv zOgApLHeyV^M0`e#JXnV&#M0R0c~eQIL;`eqjp$5#i**V54KRhxC^^v@OkD$F!wB}0 zn7ja*7>vFu zG>1HJOWTnkahK>Z_?8Ue%UsfphRIMj;MoRB6`D&8VO4DgfJm~zCU;~=ASpO2kc^)^ z6uBRoV8K8#E$!iz?hg2ZNA!?D&imVH!%_XYn_={TE;riiGW-(zBCs>nzdN>06Bakqd5x3!*9_|hZdXHrNJc&nfIYGs_+n-^+ z*>-of%X?a*Q{MBIJLQd_yoqzB`guf!nmv*vGGYq{Y57i?-FrD{5?@SA)0NZa6wEH4 zJKaeuGsjBH5I2B64kX}{J9#pAE_HIesC$D|Q}4!$IyXG2V*{do42b%67OC>Pl+iJ) zRk^L)cvoW?2GI%5+Hxa7?TlOFIDAtL0>?N>yaivY$&Jrzck-6x!kDH&7s1$eMO^d5 zBqp6%(c_Vtboe$V;fgDxXDQb&AjF!v~(NEgU1jJa5*{2@MM)QQ(F9bhATH8 zWnfZ6N3cmUSdpb5qQnx9?hBm@f}?(c5&Z=C0fTMzcIe$;bn= z%`e(t2aTBQ&|b}ShxSfKnXr$Qz>5O1FGoz=Zwg(`nC8!6PK3J?CI3mL+qy4A{jncq zhI24fU@vte+pOG1-qzj%Z92Vcv7?~Fi!g#?&#^SN@o@G_nmgs00dEPU+I|fS&_K%> zCbX5scVWASSemo+No*>G{w#@pzU!E9pH}}{`p#Jo z_*&r~7Y9wrS$gJq~+AgzoF95t1^JxWOQS zXAd^+3F{U9NOx`(fAl176%(KMW2}ANV4X^~vah@xV;#nEv``2WX>)&EtC=B4mpaov zBhd!bMv46yDsy5+Li@}H3>}fU_G#6D*vJC&;G_aCq)l>wOKhwEq+8|ubloaocdKEE z-73EAa#dHMwnK~Ef)^WZZKK;fNDUASVZMg8_^hP+3-pi}QULzK*%5xS-!7h-PA> z9v2tzC_ECZ9L9w|qCO-Uc8o}A#PQH}Q@uKRGRlWO?FFZWY$=YTVw~U$eA{D57C-8V z@d$WgJCKQZrFCdZ0$zzn{k?N|T?>K&UOnMqu-t&HV1?Ah5~&^_)w3~JiNV9OG3;jj z+vq6>LuBj~p9+_?0Zfv#omQQfv|neSfp3ondxDEuk(*pSY^H<(BOUg}V6gB3pcOM| z1zENXGdS!agz?e+=P_Ho0XjzVlO6EJS=Ez3Xki~mBgn)0HNN+{+q_;l}KWD6vXW|Z_ZRGx{TpmSF1HO{N zCwk=Bqg$v=V8r-z_?}BEx0KKsaI%)u2}sSi0+|^ha?a~1cHT^8lSD-T*84(dBAyg{ zw4@g%c)$oVpIrJ?OO{9OM#jlP)P|-RJ_Zvy-q7S>16o2zw+n1Bv z;x2?kz!agO^(;2zB@;(H{vb=$1oT$KXZl7}zSObqrp#j)5nwV*t@Q1`w}fl4v4Kt5+9UizI17 zQcGrGOoqXfed~~iH{$imawmIG)+(ntF7B$p1lQ#0WB9*gC6wM`sd80-do5qOhlDd*07?-E0i|Hp~n z>qktSdoUZ$26mf4*^uo}ne`@eN2BnK-R5IGR@x&isj$|ax){_}y8L}4H!ihhNDWFM zlyY36_}vGIp*8(G~xH|%qN4<$?6tfRyAfYG5P?m)>s5uuVvNRVZD+n~#Y^}-rh^$9VKO`PxJ8MKnc+KHxhP78k2h$VUr~PNv0t$H zeD%HnZ=NEv^$e215Qz+04a{fwph7@w6DkBr=}F8%@sg?YoQo#u)>MiH4_;l~M)Ub* znGcVJ94kjoxSUudp5RhQVw5@YE*BT4J6aJ(2Cydek?C=_G(Ao=lu9my33cTQmQTv= zDvcSR!;~x$FYKVSOT5;assgo~0Xl`ruU7MRvSaZJ{QQVRf232cb+-Sv7R|-7fWe() z0XBb#RRE$j))TV#=l^IXKgcWPfe~Vfay;rJb6nC{ z=1BaL2c77JU`kj{ybBK=wEqom88F&qmjOfZ%jbZqpO#-nrhw1h0S@?+aK!(J?}dS8 z>@^Ul?iAna4w{>Wp9y5pS_n?oQ_E$nwKV)W4l21b7= z(8co8DfF*hNC@6A1smRwx5B;-l-Sj+GY|=pP+fUpbK2hwDRzt(8Fb=m zHp3)=^hflK&5&!y#M*`GG()r$<3;D|nxV!ly~t#E?C{J>w`K^&V}fJGWnTIbE}4PJ-HxVoVd3^nxr+)vf^@Z*Ti55 z>|yE@tqK_&4ea+|U`N^wk7E|!&R(-Mu8#*Tj|0uF!!MD(uYe!KKr!^~7D;HW!$+rY z)zm)&Sv0J|!_hdD*8+Ngfx@;X|4Ki=2!}cx`In*DEkfq=dN0dy-pdTJgGqiV&)|dj zJky@!VNgdK^> zjTV9~>JUL4Zb#VjzPnl+yu9Dybv$vt%w@zE?5-oX^%Ai&8>;;R{c95 z5OA9R6XKM8p3ibWp|B$)CA;Oj~RW zxLdV_+ir_rQ(OF8w#C|`v;|a1xh*VhV{Qy6Uv=0R7Ol@gJ3#Wy{3DUi3V+px(R^9(T^aazgokJ=|=r!~pC*KmifMq|Z_qdD(1+7~s%=wq$? zTw*cu!~ElD>#C}DpJgY1^-wX58lm#bcs4&q>Q4o33 zw=IoLt326ro$|~(!77hi^aq`FiiiG(eSEFe$1y|cppPp-KKF5{JmF4Io@k4&Ztt)! z|2us3zwXPh9U*!Hmx+BDS1^cv`1uh|eqr#CH7!{MO^=w5yBn*!b=z;WPFS z1z8Vuay39fd*B!7?Otmd;8o{bXyoaD7Y#Vy>H8Pjwge5j+f96b^zy>U9hE^|9YwnA zFYt@(J<7(d$N<8FuATeDWBPFUZ$5 zNFf&Pd*vd_szmEB=Cl&Pv0{c2cRYo*i0)?DLb!{i7PJ-xhWr3BxW16kKr?KsrTMeZ z(fonERU8!Z%Cmo13`B27UT*L7meNe0H-Zz&?*bWKJ{c5@E~2r|RoEhMg+QzGqL@gN zZQr6>Ewjge5?L+s9#p!4Y}?bKPZml<P-solUD{QN=!dx|j`rp&fOu)d3CRTsPfY(RQ)a+_FIQ8SC`>V<%ZO>=LJRGXJ({0ovzugP`OH zJqjE&b)r1|XF27WbDUKkH=kMj3HJ3ms|Jy7T*s!eNTQX~%8ry$gJ5F&e_(&_={C?A9R_U@k#JTQj#?appb$ul|0o|d9B;I#EZ{Ox~voRL3fQSbUD7pUK{P= zI~(#=6kiZ~Z7x1b-xm9`WvjctaA@qS?<^WK#3tZN|4;D63bjBN4Nq)@?Ia6bO4UUw zu=40-LTHZtQl6;ea8m^aFh)-o5~lZ}UdMz-khDn_rgN-vEeVAuTsWZScn}#@UMKq) z6QYlGavY%t!s9f)z0zusCtMAs#Rd$lJY|4&a_nv>RUNvHj8%1Tw*)-7ZO&*|2b{AZ zLwv_twohQJRcgF+2m{+aa;zoOi2d;;EZH&**va8kx|I7QNs+3IL$fW*wvnsyk0gHS zNP7ajbPA2fd>FOkR6-1Bn$oOz~Oi~|fMmZSHN)@!y{ z!4`N*2TOyv6&YJFBdLotc4jpt$+j$>0;VrIi~Tu_LIEZJ$)a4z@(LX{lKu z3ga4TOdP)$4eD5Ut9-QG4uxK7_bA%Az|5+B>6kOtVcLX_04)vt65C-Q{08Iaw1ebR zMrYa~LH>wFAV%=h@u@N(2KQ@%Jl$-o?#38C{yJNrLl_n9F=1K8->8m?H9JE59sDO*H18SnA$mX(SD+oA+ZHF z!dr|N8*_`Wgs))9DV8B-|mA#8)i9q;QN>Ix{6a6b1rGd4=WDeDx4ZrlnB22Lefxh35e<1N;Gs z1N(rO%lUI)o7jh79_}A?m%!$FiF@C9Xzy0S-Fr}Qzll(+=&>5X#L-AL20^V%VB>}P zbEcbIbm#^aCE$9CTpn_rLoTl!4_8B`R{sWHVuqAzq^HU&#<+N7$ys{IgIOL0*$1;Y zIv>nR%Sa17k2>J=r;0?!u*fi$8G?k?+(x-Vl}0AF9tdFLS~te0a0UDecA+e#t{hx{ zNQI%OD;vSsL%)P8qUWTfr$P#mij<%yG6CW?+|!ao(;<0Ji#t+aHf}&>9*`(V6PFre z<_E14I@o$8k_dNiKm00$w|LnM7=#nBQ;$KF<~{}Z(LCmE{F330{reVv^z*_q3;B}$ zcD4z_G?bl`4H}ZRJ@okN9&lDVmTr8Y8($3FV3H?yG%ULDwWb@tq8l&hMj5_&G~Elb zco>CgpJ=Y9P(?J6lWj^cY!}XPCxyq*gpuc!wu%xK8_Fw)wzgUjGfx5&T1nZ@M4FWk z#^1qX;UAm=twVfdLpyi}K6y`-_+TR5OW{X92k(Zs4e>pl;EfQX(CKW;=GsAY8y72c z!^W5wqbw{F#?9hk3~)G^s^kf_ZK|?JvQL}2kS>K(oR%vG`huo_wi(Nv?d|t$+AODL zWOHqjvd)J+CUuc;@u_+fL9TV_pf8u+a36X`&#>so! zM49(R`pRL*xf%Og3hy{3#DLL^xr{*;4?m@Mv3%ot4cNys#04lXbjsq&>q3FTc_@%; zq-ER72+oq^Pq75PxY1_%ip98(n-vm}QXUr^3^6BQ$R2XNX!osM7P)amrI z9DLTHe8~yrlNq_HzDk^94W>fme|>VdJG;&|lAHgz<1e@nW_M{mJcOeGvIMr3@Ti>{*YNO^rX+0LAf z{Gi(qM@OKD!${Lr*Gw-7$ZXi`0}i6bKpdwnY$89_-%l3(M>_Z%ZSOJbBGN|QXd|jm zyIt8zGqtOeX1AVByBD^RrXFm+kXCxWY$v^(u2y;m-E|>S6Y!(N*Jvs~x>bV7CfE9x zQ1fIrbv%hast+Ts(!FmLk^@_>mbH{Ie0B0#2x?B)mBaY7mz+}Obv4GQ>)q~2Id!v` zp~qleem$?u@VP2~tJ=&xNj91{i2bh+I$`^JT*>0Mk2-aJ>`AN6k_MsMV$mQ}Fx#iW zAs{KxAjSEwXfQni$EXj~nurGJB>|a@LxYqlLmcNnr@_R$L4%ZZyK2A|&2&VAiD`lc zsUmF_(n_yw8gz>zm~TL%G_H?=zHD2i5<@mNKxQxD3&^Q#FNwc-v)q$h6)v}Hma+F< zo5JXrlY5eqyc#u_H&!pf=kja$p+%w8*f0;^K9WtJXJEP8G#S$1=8YgyhM@gqG+$#u zq*>m)$%3X5bgc!EQn_5ZHD71>)xs}?1E=O`&A+nzraOL{*-xGKYMOz7b*rfsV3#H@ z9Gb7^7{TT(GUiy+toa7%z6a|96qi)S*Ii_Ph3=>|-^ektns35eMIm)0XauL5d8K{B z6&dc_^`uVT7gt9&kdT2~qA#~wNGrYe`tn0)3mhtq>&u-UPbB(mR8{INQ4A)1y*^n< ziCNWILpOt*<3|qrLm6>indu|h-Y(TXM0=D&r^b%!Z+FIyJMVGEjs#kR%1%eLM#29b ztziimhfCB2Dt|<4^pb$yMEN+hW!~`lznn};p~2n{{eES?eTg-a*U-N>f6OPr6iatR+z z-ywF%lK8Xzee@8|#C6hQP4dDT*{gwFoYSYY*?WN|G*p*IjusenG4iRU_VBc zZX-$u)h6uz_=72Xw-Wwy;pX#jbh6E^0^8rr2?kl^f*)Re1(lR8jnr3A(W4(w^?Jbc zV{{U-s{dmqE(=r_hQ^pwSLN?2=ASRJvj{uTXt;EpRera?HSnSf%I_*ks{hy{mNh^? z=wB{xe*OjGC*1i>MJzEJprPT1MfuQcz)><F?dsRHWD?cAe?T?NaEYwaAvar z#l>xqDfK_YQZ_v$ga&}^e=IlF;sZ%Od5F^34NKc}_g>00#fX@nNabx`W+1k=qzAA>wQX!xU=DK@;2ZHy#aq%FY`($$7W{gE z)<_0Ne{k|W^r>(}@N?!qZjleTYdbVqjS6-^lV~dE92xDM)3sx2GvCr-!0>qx^I zNH&I0$>iB0AFP;3a)jApX&`C>-;u=owsBbH}7vIPFJ0d%EA8Q7zb90I0 zg@c(mk(C;rhT^0;#p#PKkQ#Fps>B6*7MQ}=Rh0+Heml3IDrvpSr1IAwJD){%X>nwi zR&3dIg?=EovkrZzp8$Q|Mt|u&hZwd@@uw%Wpor)4G(N2tvy?HiMrjTDRwoS2ufg2dWQ zC>AZaNY}DK^ub3KUZ5Weyg&la^ zf`r;1T?-EduOt{|L~z}b3dIqRw=HU+Sc+cY;*FB%rHI@T0cH{8=IdspS6-$`US?=N z8b|2?aa_TxR2sIHVc3G1gt*Q_R|$gv@epTJ*r{=n zl0~sEWE}vXD3K^LfY*sqXp$-~#KOheGL+{uF-mVtaI`SJOWpLRw~Xh8ik;ucAk*39 zch1M-HpW~u3~pnL8DI)|`Y!t`)%^bZsu{dF4|>0AdALNOwO4^Xbg0hxN^f<4x)hLW2Szq90kq#*J%_q6|HCp&j~@;YNll9 z>}KjP^e7h6Cf(6my&OG;ET&@1Qr(rwvsdzxx1^JcH>~*%P1fl+vDq4|kC7YHwP3wa)ews|Ex1@L@f(1XA=&sNB8L{^Ac z|Ddh#qZqm!&5ltYMo$W1=hx&yw=Ab9S#|}SW9j6dV;9;vz)1e`0Aut3a@-5yU@XyP zQ+PoVCJ)Yq^I=dfJdHR{91>77E40dp6_C(b>$lOO=gG2f(23{JMr}FqIie%z7YY;| zcUxLExsz6|M1>pJXn9a_8+B7W(+iZ#nU`IQ1Y8-A@n+~a&$^8$CAn~Av;8SZS+Nbe zZ8awZev3O#n6F@;3w*^a(X)!p^(&B0riZMdpHHd>4KPjtYY%V{@pz?K_9(2T!J01l z!Iy5@gL5h5!<|J|7Mv1hD=6bXwS)@|vbN&G1RRwt1rT5|Ko{Lfk1* z9+Wm-g(wjzgT)r=tF-b9%tIaBGouz~`EV_{aK*v5`b`@-kQZ(?g zy7kbe!J!NFoqFR2!R^QmtC(hrhcBQ7POg$wC?1*TZQhAT1_Y{PWita3RkEu|Z(0-3 z`ziH)n%_JuG(Q8k98LL2!q4x44VHrCRS4N4cbQ=?zPE7H|eWzBL&zk&y^wxZ2&g$v!$uPI7*D~f~@ z<58+v`~}S06w9?!PcaN~U`czYi(CBY-zYBa6ir?z-NXk@gb&U|gRceLwIxk4ZIJ2C z!Iq^PUE{Z?9E2^N`rTbH&Gg7=CN?vx%FwYq!S%E{E;b@PrG4v2o_ur14OS$@%sF&y z&t`?uRDl5Z(Vbk$Y$4!8|B$gJUAuAOOtCN+-HX;LK2Hzbhd0YX`l{HOC>_UTJz;kU!x@bQZgB!QSTT(SaiXLb zsrxHYx}ZG*@@TvbZJmR?mcIbVsY~%Slf#F#$POZsyiB9MS62{;A&JBh_wf2KpLk_g z5gKEy0}U~ChQ%v%K`b`haXDg2;Zln7_fy6>$@O)}*V`&vxj)iX-zxqw7GYzN5y;yfdM1_W1lVDs? zzB~*NbVs$?% z&cc!;%fa@?=3$OQIW*h=4!f1-&Qz8XXg_1BE;j@aC1yi_AhjV7q#2T;8ZUpq#1yk= zt-M*%P>F69OBc6!igMEcLkG*e;bGXN!g|n=yT@(=fZ;+mD#H?Y0UVRal{@9wiz$jt zATl4!sx#cy7J#pww*Y)f_~DjO)bMLUZWo?P2Mq1~h`v~&`eP(tO6WzNiY(x4X9GZ) zb(C3D-hu5`wI=;sbW77xiNDa8if$mvR9mSoVT4IEMVmcwh`?eG;}2TU>JqX14ZQ%v z5+*^v1H;MCY)a=1O`-ulDmoMLYU*mT#Q|VP(j8Mj@{x5Ue|wJu2AbXkr(pPuhI8TM z?ICL(O-1^(FVo~<{{dog_ONe_WkNjtv_+pDu@UrHjymJM$XU$56f;9YER-aPUewF{ zj7ifL9^VK;1t5z^42|j4PcA0cT#C8YDxVz_XCL5}+|EOh?VTj)XLG&FErA~<@zN=` zL_wyWa4%v9AbN*9Vw*?xOZiphtMTMW1ECB_H#~cZ@?-WjF-Pc1ZRd_YNNwkq5gnrR zhNnVM;^az130cZ8jL_T+Hc@)57Nc$Em49uk#Z-?`rMv?z=Bs~$T1<5bui_^+h=UhP z8YMmXKA=(Tho)zUBiZ+(@EH(AqX~`X-&27BKz?a7KLo&JJ$#Bk6dQmPA3-`rp{ULD z5djnxQ&u{WG)FIR>DWp$S3V5SVx8-SzLE((b`a@QB46A?6LUH2pqJsT*X;eBg~kx} zi~Y9|nAGqH62T&%=~29+JMl2)t{fPt)U$^9jotx)`Jt-9;aGnx4cf z`Ui4nMW2#hyYUJ^x6LF8q8WW!`aToy`$y@!C*Jp2fUZc7xDpRTZo0g8R%cS#Zx#>N zBc_fEeZodgac*%AjA0|W`M%lK42$MXB zQ2BRaH^8Am_Y=_B*z|@!p%|FmJ%?BHdFg%uub4``D1Bd|7<;ArWpckF-G3(ctJ3`! za=#|suao-?>HaIZ-<0mR@RApiy)8ZVQDBR7?+ce;g3JcArlBX`?FtUZXpDosj}SWb z8Z4ZvAzc!ly^j(`b3s*-vnLEfAj~ueN9L3jQ$wsh1sk>s^Nh`t5`aD zx#GMG@^a&m;aXwhh7@>_X>YJuSdpfp!|ldU%LRm+##$~v++_BdOKGK;o)irrfkMliGB3pLMj=u; zr!+hbCJ<~=xK^accyb+lluibGRmmuRuwoj?1V=Yy0w8sRU^ELZs2zAAB#dTDH;yZA z41I#$7Y)M0N(PDxvN)FTkc3SS8j-YE;vz19-T3Yxv>1}>0#Iq_Cb5XlHR6mPU>7

=pZVB(Fjd1tq{Thh&AX7TYel8 zKHQT-gA|=FLEjJq(SP(N>|_{&v7?ETRE`#bD}p0RB#Mbl)SD<9=fe8raGF6cswFncONXgiw}N2)Sc7 zg;7H)E0(tt@F^Gpt?P7ACGw}qeMB7^JsWOu)^*3BQpZpoV=5-Iu-3H9qb=1pj6bxY zmV@SQNlB?cg7MRuQR+FNPeBT}y)1T{o-W&wYs&(W6|=T<&I|d(dniM7hh-qGwnw2E zC$-wLlJ`Q@P0b^)F!hrh72;4??nWx3E1HWU%9XDxng_Ql+67On$cZ-OHUpDMx(9+O zJ%i>TU8z>7ncn)!d`t_}8X0rZXg+-pF?2V2dmAvYW8Wv;>`~x~LdVI343MdeljhA- zC`Q~20#7$HeR0_E6-!)<6vwW0*1CUw-DwYOca!a+4%)+3LsV_iol1?ixCn)|rZTM? zLFSt;vdW$H{qWINzHaeHT|m}A{?&gUaF_NC5P+Dm2=0n zKXiFmw$n@G4tC0Q;>k|AqW^ih`k-7~tcCx6u@t^~iJU=BxfU$?Ny^pND%Wp*@^YDU zuZkGjsdi-Q&6GOW@w`HkFBm|fEUCZ#TPmqvE|t9{DZ%xBpoUG_2SK)QXxMaU7@8^| zXWkq3dSz^!vc~`lMZe^RBBZ;OT(s|-yfGRAEI|*Aru}RXgR9yGE+#)UfO;z*PRGq3 zag>x~^VM?Eb+XfD2i~{Z%rB0^ngio(2fRe`_PBl>z-~}54B77$r^jQ-+6>Ylk+t1e zyjgAtV$oUM!E$eqSB_ylfNgSS3}I9Tlz{B&>{aPD?tYC5Tjy+AoX#h~a^Q*$+Gf zpL`$ZSAQ85%A1~aYdW&xgT`dUz#qlFj%_z7-CemFZ4h^FUwSgyz&aN+7?eThFD}6k z;%!@J)_{8=N>YQLA8z_1*~c!thj*fFV!4lnX|#atL|dS_TxczKiG_F#c#oD!oE!C< zsd`GzoS|dG2Q4-s>5`0()ATGdKw*KVZ4i`T zypC4L>Y4Q|R6R?jN4JGPDd93KwrP4K=L7gES}DKr)R*?aH%d@Lf)^4#rCoO`V^;u^W>V9)N=%NezQgyRGDcF56(Zm2-&YTzMW14nql4 z22axc;0RBpK#HfT=&ZJivjx~rcgY&C4=JUR4_AbJShbax?_3+}U;!!q-ka`iJ*T$D zx*JhRV*9i{P8{oI0K0P%#=8GMx6yE`jduKRZX+M*Y|$MK9n2No5yS0_)Bb&j(fXKn zBzxD>swYLhU_)U&iOHelF1HV`vy>E`jQJVN2yKpz05)+2mV!nyga8g31xQ+t`Un%0 zZIlYl@HlKV!fv#>o44{_?p$;?xIMt5BrX_#qA94E;fapH2i&#vUNK$EW34_hN9WlF z=IALDPDIj~$GCZ4CE|@v zz%$grFsG*T5J@B`vdo60#7?!W`^{;7<=D<~i?v8^4ALV#kM?CadME`cLn;)Y7tSf9 z;@yZfzoyQ<=tcn6FGA_?hB+jbE`^f=ZWPPgkO9x>zP-;NcFfjI4?6AAhO8%z7BL z8mtI)vf$QPlFP2J%I#viL}RI~q)<*P&hqcYdA1nAlckHrq8RKAMUN%AOG&OD3bIoI zB;3?fzY1W(c!Vw2O_t`Vy{4`rSRv&xbVe4d4ziVsvn#e@p%Mr-QnoNXGl7#&s=pcO zsrd-41A%k0mX%dtrDcf8@Hv*!3Vnv Ct{MdXCcnB@buO(&`{A9l*@L79j4w#w{b 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 literal 0 HcmV?d00001 diff --git a/src/extensions/BootstrapBlazor.OpcDa/lib/OpcNetApi.dll b/src/extensions/BootstrapBlazor.OpcDa/lib/OpcNetApi.dll new file mode 100644 index 0000000000000000000000000000000000000000..ec681bf17aa0f24bee5c99afe8770e43e224df83 GIT binary patch literal 197008 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≻2K>W!f1OVdC79ju-f3XMwfcPsBc>c{21OVdi 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

+!?s-%kcxvWDt*c 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 NcbHITa#mmAe*ti~wXXmG literal 0 HcmV?d00001 From acf7bda9a46272492ef37e0202b356b541e66782 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 5 Aug 2025 14:08:15 +0800 Subject: [PATCH 21/24] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=20targets=20?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../build/BootstrapBlazor.OpcDa.targets | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/extensions/BootstrapBlazor.OpcDa/build/BootstrapBlazor.OpcDa.targets diff --git a/src/extensions/BootstrapBlazor.OpcDa/build/BootstrapBlazor.OpcDa.targets b/src/extensions/BootstrapBlazor.OpcDa/build/BootstrapBlazor.OpcDa.targets new file mode 100644 index 00000000..68a87fff --- /dev/null +++ b/src/extensions/BootstrapBlazor.OpcDa/build/BootstrapBlazor.OpcDa.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + From 6a5dfea2f65fadc1dc56d07f86f0d09ae7b9bc38 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 5 Aug 2025 14:08:30 +0800 Subject: [PATCH 22/24] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=E6=89=93?= =?UTF-8?q?=E5=8C=85=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazor.OpcDa.csproj | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj index a6cd306a..54d639f8 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj +++ b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj @@ -27,7 +27,19 @@ - + + + + + + + + + + + + + From 9a4f3f7ef9bee88d66a723cab1c783a1a172bed1 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 5 Aug 2025 14:47:21 +0800 Subject: [PATCH 23/24] =?UTF-8?q?chore:=20=E6=9B=B4=E6=94=B9=20dll=20?= =?UTF-8?q?=E5=8C=85=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj | 8 ++++---- .../build/BootstrapBlazor.OpcDa.targets | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj index 54d639f8..a490932d 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj +++ b/src/extensions/BootstrapBlazor.OpcDa/BootstrapBlazor.OpcDa.csproj @@ -1,7 +1,7 @@  - 9.0.0 + 9.0.0-beta01 BootstrapBlazor.OpcDa @@ -27,9 +27,9 @@ - - - + + + diff --git a/src/extensions/BootstrapBlazor.OpcDa/build/BootstrapBlazor.OpcDa.targets b/src/extensions/BootstrapBlazor.OpcDa/build/BootstrapBlazor.OpcDa.targets index 68a87fff..af3fd9c1 100644 --- a/src/extensions/BootstrapBlazor.OpcDa/build/BootstrapBlazor.OpcDa.targets +++ b/src/extensions/BootstrapBlazor.OpcDa/build/BootstrapBlazor.OpcDa.targets @@ -1,7 +1,7 @@ - + From 758ee79cd6d14216f065cd921e166b554ef23256 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 5 Aug 2025 15:08:22 +0800 Subject: [PATCH 24/24] =?UTF-8?q?revert:=20=E6=92=A4=E9=94=80=E5=8C=85?= =?UTF-8?q?=E6=BA=90=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NuGet.Config | 1 - 1 file changed, 1 deletion(-) diff --git a/NuGet.Config b/NuGet.Config index 3ccc6d0a..95e879ef 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -2,6 +2,5 @@ -