?? d173.bmp.txt
字號:
6)得到OPC服務器的CLSID。每個服務器都有一個字符串類型的ProgID,通過它可以
得到一個全球惟一的CLSID,函數CLSIDFromProgIDO可完成此轉換,如果成功,函數返回
值等于S_OK。在這里,OPC服務器是RSView32組態軟件,可查得它的ProgID為
RSI.RSView320PCTagServer,所以轉換程序代碼如下:
CLSID OPCCLSID;
hRet=CLSIDFromProgID(L”RSI.RSView320PCTagServer”,&OPCCLSID);
如果成功,函數返回值等于S_OK,且將轉換結果用變量OPCCLSID傳遞。
7)連接OPC服務器。OPC客戶能夠連接到OPC服務器上,并建立OPC組和OPC數
據項,這是OPC數據訪問的基礎,如果沒有這個機制,數據訪問的其他機能不可能實現。
連接OPC服務器。實現代碼如下:
CoCreateInstance(OPCCLSID,NULL,CLSCIX- LOCAL- SERVER,IID IUnknown,(void **)ppUnknown);
如果連接成功,函數返回值等于S_OK,同時得到一個指向服務器對象的IUnknown按
口指針ppUnknown。.
8)創建OPC組。IOPCServer接口的AddGroup0方法可以創建一個有指定名稱和屬性
的OPC組。在調用該方法之前,可以使用上一步得到的IUnknown接口指針ppUnknown的
Querylnterface0方法請求IOPCServer接口指針。實現代碼如下:
fTemp = O.Of;
ITimeBias = 0;
dwActuaIRate = 0;
ppUnknown->QueryInterface(IID_IOPCServer,(void **)&pServer)J/得到 IOPCServer接口指針
pS erver->AddGroup(L " ",TRUE,500,1 23 5,&ITimeBias,&fTemp,O,&hOPC ServerGroup,
&dwActualRate,IID_IOPCItemMgt, (LPUNKNOWN*)& pOPCItemMgt);
AddGroup0函數中的表示組屬性的幾個參數的含義在實際開發時可以不去追究細節問
題,按上面的設置即可。這段程序的執行結果是創建了一個有指定名稱和屬性的組。在返回
參數中,有一個指向所需要的進程組對象IOPCItemMgt按口的指針即變量pOPCItemMgt。
9)添加數據項。IOPCItemMgt接口的Addltem0方法可以添加具有特殊屬性的指定數量
的數據項。在調用該方法之前,要用數據項的個數、類型、名稱、標識及作為OPC服務器
的RSView32項目名稱等信息對ItemArray結構數組進行初始化。ItemArray為OPCⅡEMDEF
類型結構數組(前面已定義),它包含數據項的詳細信息,這些信息在RSView32標簽數據
庫中可查得。詳細代碼如下:
ItemNumber-4;//數據項的個數
USES_CONVERSIONJ使用T20LE()
for(int i=O;i<ItemNumber;i++)
{
ItemArray[O.dwBlobShe -0;
ItemArray[il.pBlob= NULL;
ItemArray[il.bActive= TRUE;
ItemArray[il.hClient =i; ,,指向數據項的handle
173
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -