电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

IOPCBrowseServerAddressSpace 的使用(vc)


发布日期:2024/3/9
 

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

}

上一篇:写txt文件在AIX5.3系统中乱码

下一篇:软件开发详解:从Continuation说起