OPCclient在VC环境下编程.doc

上传人:自*** 文档编号:126267396 上传时间:2020-03-23 格式:DOC 页数:13 大小:105KB
返回 下载 相关 举报
OPCclient在VC环境下编程.doc_第1页
第1页 / 共13页
OPCclient在VC环境下编程.doc_第2页
第2页 / 共13页
OPCclient在VC环境下编程.doc_第3页
第3页 / 共13页
OPCclient在VC环境下编程.doc_第4页
第4页 / 共13页
OPCclient在VC环境下编程.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《OPCclient在VC环境下编程.doc》由会员分享,可在线阅读,更多相关《OPCclient在VC环境下编程.doc(13页珍藏版)》请在金锄头文库上搜索。

1、OPC client 在VC环境下编程一 连接使用到变量的说明类型说明HRESULT函数返回值,用来检测函数返回值(如:初始化COM库,查找CLSID,创建OPC服务等),提供函数执行情况CLSID全球唯一标示符,用来确定OPC服务的标识,从注册表查找获得LPWSTRLPSTR和LPWSTR是Win32和VC+所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(0)结尾的8位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针OPC接口说明IOPCServer*m_IOPCServer;IOPCServer 接口及成员函数主要用于对组对象进行创

2、建,删除,枚 举和获取当前状态等操作.是 OPC 服务器对象的主要接口.接口及成员IOPCItemMgt*m_IOPCItemMgt;IOPCItemMgt 接口及成员函数用于OPC 客户程序添加、删除和组对象中组员等控制操作。IOPCSyncIO*m_IOPCSyncIO;IOPCSyncIO 用于同步数据访问。OPCITEMDEFm_Items1;OPCITEMDEF 数组,包含着项的存取路径, 定义和被请求的数据类OPCITEMRESULT*m_ItemResult;OPCITEMRESULT 数组,服务器用来告诉客户关于项的附加的信息(项句柄和规范的数据类型)OPCHANDLEm_Gr

3、pSrvHandle;OPC服务的句柄,在多个函数中都会用到使用到的函数说明CoInitialize(NULL);初始化COM库CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象。应用程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。返回值S_OK : 该线程中COM库初始化成功S_FALSE 该线程中COM库已经被初始化 CoInitialize () 标明以单线程方式创建。使用 CoInitialize 创建可以使对象直接与线程连接,得到最高的性能。 CoInitialize并不装载COM 库

4、,它只用来初始化当前线程使用什么样的套间。使用这个函数后,线程就和一个套间建立了对应关系。线程的套间模式决定了该线程如何调用COM对象,是否需要列集等。CoInitialize ()并不会干扰客户和服务器之间的通信,它所做的事情是让线程注册一个套间,而线程运行过程中必然在此套间。CoInitialize和CoUninitialize必须成对使用查找OPC服务CLSIDFromProgID(LOPC服务的名称, &clsid);通过ProgID,查找注册表中的相关CLSID参数:1.服务的名称 2. CLSID型变量,用来接收注册表中查找到的CLSID创建OPC服务器对象CoCreateInst

5、ance (clsid, NULL, CLSCTX_LOCAL_SERVER ,IID_IOPCServer, (void*)&m_IOPCServer);创建OPC服务器对象,并查询对象的IID_IOPCServer接口参数:1. CLSID型变量,使用CLSIDFromProgID函数查找到的CLSID 2. 3.函数功能描述:用指定的类标识符创建一个Com对象,用指定的类标识符创建一个未初始化的对象。当在本机中只创建一个对象时,可以调用CoCreateInstance;在远程系统中创建一个对象时,可以调用CoCreateInstanceEx;创建多个同一CLSID的对象时, 可以参考 C

6、oGetClassObject 函数。函数原形:STDAPI CoCreateInstance(REFCLSID rclsid, /创建的Com对象的类标识符(CLSID)LPUNKNOWN pUnkOuter, /指向接口IUnknown的指针DWORD dwClsContext, /运行可执行代码的上下文REFIID riid, /创建的Com对象的接口标识符LPVOID * ppv /用来接收指向Com对象接口地址的指针变量);参数:rclsid in 用来唯一标识一个对象的CLSID(128位),需要用它来创建指定对象。pUnkOuter in 如果为NULL, 表明此对象不是聚合式对

7、象一部分。如果不是NULL, 则指针指向一个聚合式对象的IUnknown接口。dwClsContext in 组件类别. 可使用CLSCTX枚举器中预定义的值. riid in 引用接口标识符,用来与对象通信。ppv out 用来接收指向接口地址的指针变量。如果函数调用成功,*ppv包括请求的接口指针。返回值:S_OK 指定的Com对象实例被成功创建。REGDB_E_CLASSNOTREG 指定的类没有在注册表中注册. 也可能是指定的dwClsContext没有注册或注册表中的服务器类型损坏 CLASS_E_NOAGGREGATION 这个类不能创建为聚合型。E_NOINTERFACE 指定的

8、类没有实现请求的接口, 或者是IUnknown接口没有暴露请求的接口.注释:CoCreateInstance帮助者函数通过使用对象的CLSID,提供了一种便洁的方式与类对象连接,创建未初始化的实例,以及释放类对象。它封装了以下的功能:CoGetClassObject(rclsid, dwClsContext, NULL, IID_IClassFactory, &pCF); hresult = pCF-CreateInstance(pUnkOuter, riid, ppvObj); pCF-Release(); 当在本机中只创建一个对象时,调用CoCreateInstance是最方便的;如果要在

9、远程系统中创建一个对象时,可以调用CoCreateInstanceEx;创建多个同一CLSID的对象时, 可以参考 CoGetClassObject 函数;如果创建多个对象实例,可以获得类对象的IClassFactory 接口指针,并使用需要的方法,可以使用CoGetClassObject函数。在CLSCTX枚举器中, 你可以指定用来管理对象的服务器类型. 这些常量可以是CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER, CLSCTX_LOCAL_SERVER或是它们的任何组合. 常量CLSCTX_ALL被定义为这三个值的组合. 想获得更多的有关这些常量的

10、用法,请参考CLSCTX.添加组到OPC服务器m_IOPCServer-AddGroup(Lgrp1,/in 组名TRUE,/in 活动状态500,/in 向服务器发送请求的刷新率1,/in 客户端的操作句柄&TimeBias,/in 与标准时间的校正值&PercentDeadband,/in 要舍弃的数据LOCALE_ID,/in 服务器使用的语言&m_GrpSrvHandle,/out 添加组以后服务器返回的组句柄&RevisedUpdateRate,/out 服务器的数据刷新率 IID_IOPCItemMgt,/in 添加组的接口类型(LPUNKNOWN*)&m_IOPCItemMgt)

11、;/out 服务器返回的接口对象指针AddGroup函数的说明HRESULT AddGroup(in, string LPCWSTR szName, in BOOL bActive,in DWORD dwRequestedUpdateRate,in OPCHANDLE hClientGroup,unique, in LONG *pTimeBias,in FLOAT * pPercentDeadband,in DWORD dwLCID,out OPCHANDLE * phServerGroup,out DWORD *pRevisedUpdateRate,in REFIID riid,out, i

12、id_is(riid) LPUNKNOWN * ppUnk);ParametersDescriptionszNameName of the group. The name must be unique among the other groups created by this client. If no name is provided (szName is pointer to a NUL string) the server will generate a unique name. The server generated name will also be unique relativ

13、e to any existing public groups.bActiveFALSE if the Group is to be created as inactive.TRUE if the Group is to be created as active. dwRequestedUpdateRateClient Specifies the fastest rate at which data changes may be sent to OnDataChange for items in this group. This also indicates the desired accur

14、acy of Cached Data. This is intended only to control the behavior of the interface. How the server deals with the update rate and how often it actually polls the hardware internally is an implementation detail. Passing 0 indicates the server should use the fastest practical rate. The rate is specified in milliseconds.hClientGroupClient provided handle for this group. refer to description of data types, parameters, and structures for more information about this parameterpTimeBiasPointer

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号