求救!C#.NET下开发OPC遇到有关DataChanged的问题!! 点击:660 | 回复:0



mvnvm001

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 3回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2005年3月26日
发表于:2008-05-30 21:24:57
楼主

C#.NET下开发OPC客户端遇到的问题如下:(有比较精通的达人帮助一下,就差最关键的代码调试了,使用NETAPI,)

在创建好一个订阅组之后,肯定是需要把需要订阅的数据项添加到这个订阅组中去的,才能在DataChanged事件响应时,采集到自己需要的数据。但是对于以下语句不太明白:



subscription = (Opc.Da.Subscription)m_server.CreateSubscription(state); //创建组。

创建组之后,需要添加需要订阅的数据项,已知文献中是通过以下几条语句实现的:



Item【】 items = new Item【1】;//只添加一个数据项。

items【0】 = new Item();//创建一个项Item 对象。

items【0】.ClientHandle = Guid.NewGuid().ToString();//客户端给该数据项分配的句柄。

items【0】.ItemPath = ItemPath;//该数据项在服务器中的路径。

items【0】.ItemName = ItemName;//该数据项在服务器中的名字。



Subscription subscription = (Subscription)Current.Tag;//在哪一个组中添加数据项。Current

subscription.AddItems(items);//为TreeView 控件的一个节点Node,前文创建的组对象保留在Current.Tag 中。



疑问1:注释“Current为TreeView控件的一个节点Node,前文创建的组对象保留在Current.Tag里”,程序如何实现将创建的组subscription保留在Current.Tag里面的,为啥要把一个subscription组对象保存在TreeView的一个节点Node中了?



疑问2:同时在格式上ItemPath和ItemName字符串是不是如这样的格式可以??ItemPath=”ouyangjun.OPC.ASDPDEMO.1\Integer\TagInt0” , ItemName=”TagInt0”

(其中ouyangjun是计算机名,OPC.ASDPDEMO是OPC服务器名,Integer是OPC服务器已有数据中某一组的组名,TagInt0是数据项名。)

疑问3:我用的注册事件语句是:m_subscription.DataChanged += new DataChangedEventHandle(m_subscription_DataChanged);这样注册事件不知道存在问题否?

定义public void m_subscription_DataChanged(object subscriptionHandle, object requestHandle, ItemValueResult【】 values)

我感觉我的程序还是没有把数据项添加到创建的订阅组中,造成在数据有变化的时候,DataChanged事件还是没有被调用。

非常期望得到指点,万分感激!

我的邮箱号是:jimlovejun@163.com,方便的话可以邮件交流。



热门招聘
相关主题

官方公众号

智造工程师