熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

IOPCBrowseServerAddressSpace 的使用(vc)

2013-11-23 18:45:56  來源: Java核心技術 

  在制作 OPC Client 的時候通常需要浏覽OPC Serve的所有已經定義的item名稱(當然OPC Server必須支持這個選項)如果用VC的話就要使用到IOPCBrowseServerAddressSpace接口那麼下面是提取item目錄結構的一個自制的遞歸函數
  
  void TryBrowseBranch(IOPCBrowseServerAddressSpace *pBSAS LPCWSTR lpprestrLPCWSTR lpcw)
  {
  HRESULT r;
  OPCNAMESPACETYPE onst;
  LPWSTR pItemID;
  WCHAR s*lp;
  IEnumString *pEnum = ;
  
  char szBuf[];
  long nPos = ;
  HRESULT r = S_OK;
  LPOLESTR pStr;
  ULONG actual;
  
  lp = WSTRFromSBCS(%ls%lspIMalloc);
  // 向lpcw節點的枝葉改變位置
  pBSAS>ChangeBrowsePosition(OPC_BROWSE_DOWNlpcw);
  r = pBSAS>BrowseOPCItemIDs(OPC_FLAT&sVT_EMPTY&pEnum);
  pBSAS>QueryOrganization(&onst);
  
  // 提取該節點下的所有枝葉
  while((r = pEnum>Next( &pStr &actual)) == S_OK)
  {
  printf(%ls%ls%ls\nlpprestrlpcw pStr);
  wprintf(lpprestrlplpcwpStr);
  if(onst == OPC_BRANCH)
  TryBrowseBranch(pBSASlpprestrpStr);
  }
  // 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_UPlpcw);
  }
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25685.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.