C#实现OPCUA客户端数据订阅功能

hanjiefastcam 2019-07-19 09:47:50
求助各位:

请问我要用C#实现一个功能,就是 opcua 服务器端一个节点里面内容有变化,立刻得到这个节点的数据。我网上查了,需要用数据订阅功能。下面是我代码,但是运行到 m_OpcUaClient.AddSubscription("A", "ns=2;s=Machines/Machine B/TestValueFloat", SubCallback);

这段后,跳转不到SubCallback()这个方法。报如下错误

System.NullReferenceException:“未将对象引用设置到对象的实例。”






代码如下:

private OpcUaClient m_OpcUaClient;

private void button4_Click(object sender, EventArgs e)
{
// sub

m_OpcUaClient.AddSubscription("A", "ns=2;s=Machines/Machine B/TestValueFloat", SubCallback);

}




private void SubCallback(string key, MonitoredItem monitoredItem, MonitoredItemNotificationEventArgs args)
{
if (InvokeRequired)
{
Invoke(new Action<string, MonitoredItem, MonitoredItemNotificationEventArgs>(SubCallback), key, monitoredItem, args);
return;
}

if (key == "A")
{
// 如果有多个的订阅值都关联了当前的方法,可以通过key和monitoredItem来区分
MonitoredItemNotification notification = args.NotificationValue as MonitoredItemNotification;
if (notification != null)
{
textBox1.Text = notification.Value.WrappedValue.Value.ToString();
}
}

}
...全文
2641 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nsyaaaaaa 2022-03-03
  • 打赏
  • 举报
回复

if (InvokeRequired)为啥编译不过嗯

Eason0807 2021-05-06
  • 打赏
  • 举报
回复
m_OpcUaClient你在哪实例化了
LRH3567 2021-05-05
  • 打赏
  • 举报
回复
我有个疑问:
if (InvokeRequired)
InvokeRequired是自定义的委托吗?
a小伙贺先森 2021-04-23
  • 打赏
  • 举报
回复
我也遇到了这个问题 请问解决了吗
yahle 2019-07-22
  • 打赏
  • 举报
回复
System.NullReferenceException:“未将对象引用设置到对象的实例。” 这个错误在哪行抛出的?

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧