上篇講到了如何找到opc伺服器,具體執行是在enumserverlist的函式中,獲得執行iid_iopcserverlist2的例項。下面繼續分析。
multi_qi multiqi[2] = ;
multiqi[0].piid = &iid_iopcserverlist;
multiqi[0].pitf = null;
multiqi[0].hr = s_ok;
multiqi[1].piid = &iid_iopcserverlist2;
multiqi[1].pitf = null;
multiqi[1].hr = s_ok;
if (failed(enumserverlist(hostname, multiqi, sizeof(multiqi) / sizeof(multi_qi))))
serveridinfo serveridlist[10] = ;
ushort index = 0;
if (failed(listservers(serveridlist, sizeof(serveridlist) / sizeof(serveridinfo), multiqi, index)))
這裡出現了另乙個函式,listservers,基於opcenum.exe返回的類例項,通過da的三個catid(catid_opcdaserver10/20/30)來獲得列舉類指標,如下面的penum。有了它迴圈一下獲得各個opc伺服器的類,進一步獲得相對應的opc伺服器的程式名和guid等。
hresult listservers(serveridinfo serveridlist, ushort count, multi_qi multiqi, ushort& index)
hr = m_spserverlist2->clsidfromprogid(ppszprogid, &opcserverid);
if (failed(hr))
break;
wcscpy_s(serveridlist[index].ppszprogid, maxchar, ppszprogid);
memcpy_s(&serveridlist[index].opcserverid, sizeof(guid), &opcserverid, sizeof(guid));
cotaskmemfree(ppszprogid);
cotaskmemfree(ppszusertype);
cotaskmemfree(ppszverindprogid);
if (index + 1 < count)
index++;
else
break;
}penum->release();
} }else if (m_spserverlist)
hr = m_spserverlist->clsidfromprogid(ppszprogid, &opcserverid);
if (failed(hr))
break;
wcscpy_s(serveridlist[index].ppszprogid, maxchar, ppszprogid);
memcpy_s(&serveridlist[index].opcserverid, sizeof(guid), &opcserverid, sizeof(guid));
cotaskmemfree(ppszprogid);
cotaskmemfree(ppszusertype);
if (index + 1 < count)
index++;
else
break;
}penum->release();
} }if (m_spserverlist2)
m_spserverlist2->release();
if (m_spserverlist)
m_spserverlist->release();
return hr;
}
下篇再給點乾貨,看下讀寫操作的執行。 OPC伺服器與OPC 客戶端配置問題總結
2.進入c windows syswow64資料夾,把壓縮包裡的所有檔案都貼上進去 3.在當前資料夾裡找到cmd.exe,右鍵 以管理員許可權開啟 4.輸入regsvr32 opcdaauto.dll,顯示註冊成功 object progids server.getopcservers host.h...
OPC協議解析 OPC客戶端與伺服器通訊解析
opc伺服器,是指按照opc 組織規定的opc規範群開發的軟體驅動。opc伺服器作為中間媒介負責從資料來源讀取資料再跟另外一端的客戶端通訊。在 opc客戶端 伺服器 的結構圖中,通訊的發起端是,也只能是opc客戶端。客戶端和伺服器的對話是雙向的,也就是說,客戶端既可以從伺服器讀出也可以向伺服器寫入。...
客戶端 伺服器模式分析
客戶端 伺服器模式定義 架構模式是乙個通用的 可重用的解決方案,用於在給定上下文中的軟體體系結構中經常出現的問題。架構模式與軟體設計模式類似,但具有更廣泛的範圍。維基百科 而客戶端 伺服器模式由兩部分組成 乙個伺服器和多個客戶端。伺服器元件將為多個客戶端元件提供服務。客戶端從伺服器請求服務,伺服器為...