紫外工控论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2657|回复: 1

[OPC技术] VB,VC开发OPC客户程序必读!

[复制链接]
冰糖 发表于 2010-12-18 20:27:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 开发OPC客户程序必读!!!!!!!!!
  
  Step.1
  如果程序要调用COM 库的某一个函数必须先登录COM 函数CoInitialize()可
  以完成此功能从函数CoGetMalloc()可以得到一个指向COM 内存管理接口的指
  针
  HRESULT rl;
  rl=CoInitialize(NULL);
  rl=CoGetMalloc(MEMCTX_TASK,&g_pIMalloc);
  
  Step.2
  每个COM 服务器有一个ProgID 通过它可以得到一个全球唯一的CLSID 用
  CLSIDFromProgID()函数可以实现这个变换ProgID 用变量szName 进行参数传
  递在示例程序中它的值是L”OPC.SimaticNET”
  m_Popc
  rl=CLSIDFromProgID(szName,&clsid);
  
  
  Step.3
  CoCreateInstance()函数创建一个类实例其CLSID 值设定如下:
  r2=CocreateInstance(clsid,NULL,CLSCTX_LOCAL_SERVER,IID_IUnkown,
  (void**)&Punk);
  这段程序的结果是一个指向服务器对象IUnknown 接口的指针变量pUNK
  
  Step.4
  从IUnkown 接口通过QueryInterface()方法可以得到其它接口的指针
  HRESULT r3;
  r3=pUNK->QueryInterface(IID_IOPCServer , (void **)&m_Popc);
  这段程序的结果是得到一个指向服务器对象IOPCServer 接口的指针(变量m_Popc)
  
  Step.5
  IOPCServer 接口的AddGroup()方法可以创建OPC 组
  m_pItemMgt)
  HRESULT r1;
  r1=m_Popc->AddGroup(szName,TRUE,500,1,&TimeBias,
  &PercDeadband,dwLCID,&m_GrpServerHandle,
  &RevUpRate,IID_IOPCItemMgt,
  (LPUNKNOWN*)&m_pItemMgt);
  这段程序的执行结果是创建一个有指定名称和属性的组在返回的参数中有一
  个指向所需要的进程组对象接口的指针在这里是IOPCItemMgt(变量
  
  Step.6
  IOPCItemMgt 接口有AddItem()方法可以创建OPC 项
  HRESULT r1;
  r1=m_pItemMgt->AddItems(NumItems,pItems, &m_pItResult,&pErrors);
  这段程序的结果是创建有特殊属性的指定数量的项除此之外事件结构变量
  m_pItResult 服务器句柄目标系统上的项数据类型等也被赋值
  
  用于执行所需操作的指针需要通过现有的指向IOPCItemMgt 接口的指针得到如
  如果用户要进行异步通信就需要指向IOPCAsyncIO 接口的指针
  HRESULT rl;
  r1=m_pItemMgt->Queryface(IID_IOPCAsyncIO, (void * *) & pAsyncIO);
  
  通过该接口的Read() 和Write()两个方法可以读写项的数值
  r2=pAsyncIO->Read(m_dwConnection,OPC_DS_CACHE,dwNumItems,phServer, &m_TransactionID,&pErrors);
  这段程序的执行结果是OPC 项的数据被送到客户程序的IAdviseSink 接口
  
  Step.7
  在程序停止运行之前必须删除已创建的OPC 对象并释放内存到目前为止用到
  的各种接口都有相应的函数
  5.4 r1=m_pItemMgt->RemoveItems(dwNumItems,phServer,&pErrors);
  r1=m_Popc->RemoveGroup(m_GrpServerHandle,TRUE);
  m_pItemMgt->Release();
  m_pOPC->Release();
whkkhzh 发表于 2010-12-24 15:37:22 | 显示全部楼层
写的很清楚,不错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


--------------------------------------------------------------------------------------------------------------------
本站是工控技术交流站点,论坛内容均为网络收集或会员所发表,并不代表本站立场,会员拥有该内容的所有权力及责任!
本站内容如有侵犯您的版权,请按下面方式联系本站管理员,我们将及时删除处理
管理员:冰糖 QQ:5483695(请直击主题), Mail:admin#ziwai.net(#改成@) 其它非本人.
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!

QQ|Archiver|手机版|小黑屋|紫外工控论坛. ( 苏ICP备11032118号-1 )

GMT+8, 2024-5-2 08:55 , Processed in 0.390625 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表