zoukankan      html  css  js  c++  java
  • OPC 技术文档之 IOPCBrowseServerAddressSpace 的使用

    from:http://blog.csdn.net/flyback/article/details/459603

    在制作 OPC Client 的时候通常需要浏览OPC Serve的所有已经定义的item名称(当然OPC Server必须支持这个选项),如果用VC的话就要使用到IOPCBrowseServerAddressSpace接口,那么,下面是提取item目录结构的一个自制的递归函数。

    void TryBrowseBranch(IOPCBrowseServerAddressSpace *pBSAS, LPCWSTR lpprestr,LPCWSTR lpcw)
       {
       HRESULT r1;
       OPCNAMESPACETYPE onst;
       LPWSTR pItemID;
       WCHAR s,*lp;
       IEnumString *pEnum = 0;

       char szBuf[40];
       long nPos = 1;
       HRESULT r2 = S_OK;
       LPOLESTR pStr;
       ULONG actual;

       lp = WSTRFromSBCS("%ls,%ls",pIMalloc);
    // 向lpcw节点的枝叶改变位置
       pBSAS->ChangeBrowsePosition(OPC_BROWSE_DOWN,lpcw);
       r1 = pBSAS->BrowseOPCItemIDs(OPC_FLAT,&s,VT_EMPTY,0,&pEnum); 
       pBSAS->QueryOrganization(&onst);

    // 提取该节点下的所有枝叶
       while((r2 = pEnum->Next(1, &pStr, &actual)) == S_OK)
       { 
       printf("%ls%ls--%ls/n",lpprestr,lpcw, pStr); 
       wprintf(lpprestr,lp,lpcw,pStr);
       if(onst == OPC_BRANCH)
       TryBrowseBranch(pBSAS,lpprestr,pStr);
       } 
       // pBSAS->ChangeBrowsePosition(OPC_BROWSE_DOWN,
       // printf("OPC_NS_HIERARCHIAL 含有枝干");
       // get firset item
       pIMalloc->Free(lp);
       pIMalloc->Free(pStr);
       pEnum->Release();
    // 回到名叫lpcw的主干位置
       pBSAS->ChangeBrowsePosition(OPC_BROWSE_UP,lpcw); 
       }

  • 相关阅读:
    关于Markdown
    20. 有效的括号(栈)
    数组队列
    MySql编码、卸载、启动问题
    循环队列
    链表实现与时间复杂度分析
    栈的应用和基本实现
    使用链表实现栈
    封装动态数组类Array
    Android平台的开发环境的发展演变
  • 原文地址:https://www.cnblogs.com/gmth/p/2988852.html
Copyright © 2011-2022 走看看