当前位置: 首页 > news >正文

C# winform 调用 OPC UA C# WinForm 的批量订阅方法

调用 OPC UA C# WinForm 的批量订阅方法

要调用 BatchNodeIdDatasSubscription 方法进行批量订阅,你需要准备三个参数:订阅关键字、节点ID数组和回调方法。以下是完整的调用示例:

调用示例

// 1. 定义订阅的关键字(必须唯一)
string subscriptionKey = "MyBatchSubscription_001";// 2. 准备要订阅的节点ID数组
string[] nodeIds = new string[] 
{"ns=2;s=Device1/Parameter1","ns=2;s=Device1/Parameter2","ns=2;s=Device2/Temperature"
};// 3. 定义回调方法
Action<string, MonitoredItem, MonitoredItemNotificationEventArgs> callback = (key, monitoredItem, args) =>
{// 这里处理订阅到的数据var notification = args.NotificationValue as MonitoredItemNotification;if (notification != null){// 获取节点值var value = notification.Value.Value;// 在UI线程上更新界面(如果是WinForm应用)this.Invoke((MethodInvoker)delegate {// 显示接收到的数据textBoxLog.AppendText($"Key: {key}, NodeId: {monitoredItem.StartNodeId}, Value: {value}, Timestamp: {notification.Value.SourceTimestamp}\r\n");});}
};// 4. 调用批量订阅方法
BatchNodeIdDatasSubscription(subscriptionKey, nodeIds, callback);

实际应用中的建议

  1. 订阅键管理:确保每个订阅键是唯一的,便于后续管理或取消订阅
  2. 错误处理:考虑添加更多错误处理逻辑
  3. 取消订阅:实现对应的取消订阅方法
  4. UI更新:确保回调中的UI更新操作通过Invoke执行

取消订阅示例

public void Unsubscribe(string key)
{if (ConnectStatus){try{opcUaClient.RemoveSubscription(key);}catch (Exception ex){string str = "取消订阅失败!!!";ClientUtils.HandleException(str, ex);}}
}// 调用取消订阅
Unsubscribe("MyBatchSubscription_001");
http://www.dtcms.com/a/328852.html

相关文章:

  • Java19 Integer 位操作精解:compress与expand《Hacker‘s Delight》(第二版,7.4节)
  • 向长波红外成像图注入非均匀噪声
  • 【嵌入式电机控制#31】FOC:霍尔安装误差的补偿
  • Unity:GUI笔记(二)——工具栏和选择网格、滚动列表和分组、窗口、自定义皮肤样式、自动布局
  • Linux系统有何特点?linux系统组成如何?
  • NTUSER.DAT是什么文件
  • 华为云之Redis部署及基础语法
  • 遨游通讯推出两款三防平板,满足“危急特”场景定制化需求
  • 《AVL树的原理与C++实现:详解平衡二叉搜索树的高效构建与操作》
  • ACL 可以限制哪些流量?入方向和出方向怎么判断?
  • 高级IO(五种IO模型介绍)
  • wordpress不同页面调用不同keywords和description
  • STM32CubeMX + HAL 库:用FSMC接口与IS62WV51216芯片实现stm32外部SRAM扩展
  • csp知识基础——贪心算法
  • Java协程深度教程:从概念到Spring Boot实战
  • XCZU6CG-2FFVC900I Xilinx FPGA AMD ZynqUltraScale+ MPSoC
  • 【计算机网络】王道考研笔记整理(4)网络层
  • 【C++】哈希的应用:位图和布隆过滤器
  • VMD+皮尔逊+降噪+重构(送报告+PPT)Matlab程序
  • Java Record 类 — 简化不可变对象的写法
  • MATLAB 绘图速查笔记
  • 模式设计:策略模式及其应用场景
  • Vue3 中 <script setup> 场景下,需要手动导入和不需要手动导入的内容整理
  • HarmonyOS Navigation路由跳转的完整示例
  • 【Qt开发】常用控件(三) -> geometry
  • 重生之我在公司写前端 | “博灵语音通知终端” | 登录页面
  • Swift 实战:从数据流到不重叠区间的高效转换
  • 《书写范式》——代码如诗,诗娟代码(Python)(附精巧“九九表”生成代码)
  • 《Linux基础知识-2》
  • 【2025】Datawhale AI夏令营-多模态RAG-Task3笔记-解决方案进阶