从网上搜集的资料,分享一下。运行过程中发现一个问题,目前尚未解决,希望懂得人能解答一下,具体问题如下:pIOPCBrowseServerAddressSpace->GetItemID 函数执行成功,pItemID返回值为空,随后 pIOPCItemProperties->QueryAvailableProperties 执行失败,错误码: OPC_E_UNKNOWNITEMID ((HRESULT)0xC0040007L) 。通过opc 客户端发现items数据结构为:二级目录为数据名,如 123AT101,三级目录下为 .pv 后缀。
void GetAllItems(IOPCServer *pIServer)
{
IOPCBrowseServerAddressSpace *pIOPCBrowseServerAddressSpace=NULL;
LPENUMSTRING pPENUMSTRING= NULL;
IOPCItemProperties *pIOPCItemProperties = NULL;
while(true)//执行一次
{
HRESULT hr = pIServer->QueryInterface(IID_IOPCBrowseServerAddressSpace,(void**)&pIOPCBrowseServerAddressSpace);
if(!pIOPCBrowseServerAddressSpace)
{
printf("QueryInterface error,hr=0x%X",hr);
break;
}
hr = pIOPCBrowseServerAddressSpace->BrowseOPCItemIDs(OPC_BRANCH,L"",VT_EMPTY,0,&pPENUMSTRING);
if(!pPENUMSTRING)
{
printf