OPC 技术文档之 IOPCBrowseServerAddressSpace 的使用
2013-03-29 14:31
459 查看
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);
}
在制作 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);
}
相关文章推荐
- OPC 技术文档之 IOPCBrowseServerAddressSpace 的使用(vc)
- OPC 技术文档之 IOPCBrowseServerAddressSpace 的使用
- OPC 技术文档之 OPCENUM.EXE 使用方法(vc)
- IdentityServer4 中文文档 -9- (快速入门)使用客户端凭证保护API
- Web端server推送技术原理分析及dwr框架简单的使用
- 使用dom4j技术对xml文档进行增删改练习(一)
- JavaScript高级应用:使用DOM技术操纵文档
- socket.io使用之io.socket.engineio.client.EngineIOException: server error,parser error
- 一起谈.NET技术,使用 IIS Express 取代 ASP.NET Development Server
- 一起谈.NET技术,使用SharePoint 2007 Web Service上传文件到文档库
- 演示使用DOM技术如何根据指定XML,进行相应的修改然后生成新的XML文档
- druid.io使用技术简介: Hyperloglog
- XML解析技术和使用Jaxp对xml文档进行dom解析
- ftp/sftp不使用webportal直接登录到目标系统设置文档-麒麟开源堡垒机技术文档之一
- Druid:Druid.io 部署&使用文档
- Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api
- 使用DHTML技术获取元素和增删改文档中的元素
- YFIOServer 后台IO接口使用说明
- JavaScript高级应用:使用DOM技术操纵文档
- JavaScript高级应用:使用DOM技术操纵文档