⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d173.bmp.txt

📁 Visual C++通信编程实例
💻 TXT
字号:
    6)得到OPC服务器的CLSID。每个服务器都有一个字符串类型的ProgID,通过它可以
得到一个全球惟一的CLSID,函数CLSIDFromProgIDO可完成此转换,如果成功,函数返回
值等于S_OK。在这里,OPC服务器是RSView32组态软件,可查得它的ProgID为
RSI.RSView320PCTagServer,所以转换程序代码如下:
    CLSID OPCCLSID;
    hRet=CLSIDFromProgID(L”RSI.RSView320PCTagServer”,&OPCCLSID);
    如果成功,函数返回值等于S_OK,且将转换结果用变量OPCCLSID传递。
    7)连接OPC服务器。OPC客户能够连接到OPC服务器上,并建立OPC组和OPC数
据项,这是OPC数据访问的基础,如果没有这个机制,数据访问的其他机能不可能实现。
连接OPC服务器。实现代码如下:
    CoCreateInstance(OPCCLSID,NULL,CLSCIX- LOCAL- SERVER,IID IUnknown,(void **)ppUnknown);
    如果连接成功,函数返回值等于S_OK,同时得到一个指向服务器对象的IUnknown按
口指针ppUnknown。.
    8)创建OPC组。IOPCServer接口的AddGroup0方法可以创建一个有指定名称和属性
的OPC组。在调用该方法之前,可以使用上一步得到的IUnknown接口指针ppUnknown的
Querylnterface0方法请求IOPCServer接口指针。实现代码如下:
fTemp = O.Of;
ITimeBias = 0;
dwActuaIRate = 0;
ppUnknown->QueryInterface(IID_IOPCServer,(void **)&pServer)J/得到  IOPCServer接口指针
 pS erver->AddGroup(L " ",TRUE,500,1 23 5,&ITimeBias,&fTemp,O,&hOPC ServerGroup,
                                     &dwActualRate,IID_IOPCItemMgt, (LPUNKNOWN*)& pOPCItemMgt);
    AddGroup0函数中的表示组属性的几个参数的含义在实际开发时可以不去追究细节问
题,按上面的设置即可。这段程序的执行结果是创建了一个有指定名称和属性的组。在返回
参数中,有一个指向所需要的进程组对象IOPCItemMgt按口的指针即变量pOPCItemMgt。
    9)添加数据项。IOPCItemMgt接口的Addltem0方法可以添加具有特殊属性的指定数量
的数据项。在调用该方法之前,要用数据项的个数、类型、名称、标识及作为OPC服务器
的RSView32项目名称等信息对ItemArray结构数组进行初始化。ItemArray为OPCⅡEMDEF
类型结构数组(前面已定义),它包含数据项的详细信息,这些信息在RSView32标签数据
库中可查得。详细代码如下:
ItemNumber-4;//数据项的个数
USES_CONVERSIONJ使用T20LE()
for(int i=O;i<ItemNumber;i++)
{
    ItemArray[O.dwBlobShe -0;
    ItemArray[il.pBlob= NULL;
    ItemArray[il.bActive= TRUE;
    ItemArray[il.hClient =i;    ,,指向数据项的handle
173

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -