服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

iopcbrowseserveraddressspace 的使用(vc)


  在制作 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);
  }

扫描关注微信公众号