?? opcst_ipt.h
字號(hào):
#ifndef _OPCST_IMPORT_H
#define _OPCST_IMPORT_H
#include "ole2.h"
//LPWRITETAG////////////////////////////////
//更新設(shè)備回調(diào)用函數(shù)類型,由開發(fā)者實(shí)現(xiàn)。
//參數(shù):
//dwvid-- 設(shè)備標(biāo)記ID。OPCST要通過(guò)設(shè)備標(biāo)記ID來(lái)區(qū)別不同的標(biāo)記點(diǎn)(Tag點(diǎn))。
//value-- 向通道devid 傳送的值,類型為VARIANT。開發(fā)者根據(jù)參數(shù)value的不同數(shù)據(jù)類型,取出具體的基本數(shù)據(jù)值,更新實(shí)際的設(shè)備或內(nèi)存變量。
//返回值:
//執(zhí)行成功返回true,執(zhí)行失敗返回false。
typedef bool (*LPWRITETAG)(
unsigned devid/*IN*/,
VARIANT *value/*IN*/
);
///////////////////////////////////
//LPREADTAG/////////////////////////////////
//讀取設(shè)備回調(diào)函數(shù)類型,由開發(fā)者實(shí)現(xiàn)
//參數(shù):
//dwvid-- 設(shè)備標(biāo)記ID。OPCST要通過(guò)設(shè)備標(biāo)記ID來(lái)區(qū)別不同的標(biāo)記點(diǎn)(Tag點(diǎn))。
//value-- 從通道devid 讀取的值,類型為VARIANT。開發(fā)者根據(jù)參數(shù)vtype的不同及實(shí)際的設(shè)備值,向參數(shù)value賦值。
//vtype-- 指定要讀取的數(shù)據(jù)類型
//返回值:
//執(zhí)行成功返回true,執(zhí)行失敗返回false。
typedef bool (*LPREADTAG)(
unsigned devid/*IN*/,
VARIANT *value/*OUT*/,
const VARTYPE vtype/*IN*/);
///////////////////////////////////
//SVendorInfo/////////////////////////////////
//服務(wù)器版本及說(shuō)明
//wMajorVersion -- 主版本號(hào)
//wMinorVersion -- 次版本號(hào)
//wBuildNumber -- 發(fā)布版本號(hào)
//wReserved -- 保留
//VendorInfo64[64] -- 服務(wù)器說(shuō)明
typedef struct SVendorInfo
{
WORD wMajorVersion;
WORD wMinorVersion;
WORD wBuildNumber;
WORD wReserved;
char VendorInfo64[64];
} SVendorInfo;
///////////////////////////////////
//SOPCRegisterInfo/////////////////////////////////
//服務(wù)器組件注冊(cè)信息
//ClsidName128 -- 組件類名稱
//ProgID128[128]-- 組件屬性名,系統(tǒng)必須唯一。如OPCDA.XXX
//OPCServerGUID-- 全局唯一標(biāo)識(shí)符。通常利用微軟的guidgen.exe工具產(chǎn)生。
typedef struct SOPCRegisterInfo
{
char ClsidName128[128];
char ProgID128[128] ;
GUID clsid_OPCServerGUID ;
}SOPCRegisterInfo;
///////////////////////////////////
//SOPCServerInfo/////////////////////////////////
//OPCDA服務(wù)器參數(shù)
//uUpdateRate -- 開發(fā)者根據(jù)具體設(shè)備的數(shù)據(jù)變化速度,確定一刷新速度,單位為毫秒
//dwForceRefresh_Band -- 強(qiáng)制向客戶程序發(fā)送數(shù)據(jù)的時(shí)間間隔,單位為毫秒。一般情況下,
// 對(duì)于支持2.0標(biāo)準(zhǔn)的客戶程序,服務(wù)器會(huì)主動(dòng)向客戶程序發(fā)送更新數(shù)據(jù)。但在不可
// 預(yù)見的因素導(dǎo)致客戶端數(shù)據(jù)過(guò)期時(shí),服務(wù)器可以定時(shí)向客戶發(fā)送最新的數(shù)據(jù)。
//cTagNameSeperator -- 標(biāo)識(shí)標(biāo)記名的層次分隔符,一般情況為 '/' ,也可以指定別的字符。
// 主要用來(lái)給眾多標(biāo)記分類。
typedef struct SOPCServerInfo
{
UINT uUpdateRate;
DWORD dwForceRefresh_Band;
char cTagNameSeperator;
} SOPCServerInfo;
///////////////////////////////////
extern "C"
{
//GetTagCount/////////////////////////////////
//獲取組件內(nèi)標(biāo)記點(diǎn)的總數(shù)
//參數(shù):
// 無(wú)
//返回值:
// 返回標(biāo)記點(diǎn)的數(shù)量
unsigned GetTagCount();
///////////////////////////////////////////////////
//EXE_RegisterServer/////////////////////////////////////////////////
//注冊(cè)進(jìn)程外服務(wù)器
//參數(shù):
// 無(wú)
//返回值:
// 成功執(zhí)行返回S_OK,否則返回S_FAIL
HRESULT EXE_RegisterServer(void);
///////////////////////////////////////////////////
//EXE_UnregisterServer/////////////////////////////////////////////////
//注銷進(jìn)程外服務(wù)器
//參數(shù):
// 無(wú)
//返回值:
// 成功執(zhí)行返回S_OK,否則返回S_FAIL
HRESULT EXE_UnregisterServer(void);
///////////////////////////////////////////////////
//EXE_StartServer/////////////////////////////////////////////////
//啟動(dòng)進(jìn)程外服務(wù)器服務(wù)
//參數(shù):
// 無(wú)
//返回值:
// 成功執(zhí)行返回S_OK,否則返回S_FAIL
HRESULT EXE_StartServer(void);
///////////////////////////////////////////////////
//EXE_StopServer/////////////////////////////////////////////////
//停止進(jìn)程外服務(wù)器服務(wù)
//參數(shù):
// 無(wú)
//返回值:
// 成功執(zhí)行返回S_OK,否則返回S_FAIL
HRESULT EXE_StopServer(void);
///////////////////////////////////////////////////
//DLL_RegisterServer/////////////////////////////////////////////////
//注冊(cè)進(jìn)程內(nèi)服務(wù)器
//參數(shù):
// 無(wú)
//返回值:
// 成功執(zhí)行返回S_OK,否則返回S_FAIL
HRESULT DLL_RegisterServer(void);
///////////////////////////////////////////////////
//DLL_UnregisterServer/////////////////////////////////////////////////
//注銷進(jìn)程內(nèi)服務(wù)器
//參數(shù):
// 無(wú)
//返回值:
// 成功執(zhí)行返回S_OK,否則返回S_FAIL
HRESULT DLL_UnregisterServer(void);
///////////////////////////////////////////////////
//DLL_GetClassObject/////////////////////////////////////////////////
//調(diào)用進(jìn)程內(nèi)服務(wù)器類工廠。對(duì)于進(jìn)程外服務(wù)器只需調(diào)用EXE_ StartServer來(lái)啟動(dòng)服務(wù),
//而進(jìn)程內(nèi)服務(wù)器則由COM環(huán)境調(diào)用
//參數(shù):
// rclsid-- 服務(wù)器組件類標(biāo)識(shí)符,類型同GUID,都是IID結(jié)構(gòu)。
// riid -- 接口變量參考,通常是標(biāo)識(shí)符IID_IClassFactory的接口。
// ppv -- 與類標(biāo)識(shí)符rclsid相關(guān)的接口對(duì)象指針的指針。
//返回值:
// 成功執(zhí)行返回S_OK,否則返回S_FAIL。
HRESULT DLL_GetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv);
///////////////////////////////////////////////////
//DLL_CanUnloadNow/////////////////////////////////////////////////
//COM環(huán)境用來(lái)確定是否可以卸載服務(wù)器組件
//參數(shù):
// 無(wú)
//返回值:
// 返回S_OK則可以卸載,返回S_FAIL則不可以卸解
HRESULT DLL_CanUnloadNow(void);
///////////////////////////////////////////////////
//InitOPCServer/////////////////////////////////////////////////
//初始化OPCST工具。用于將服務(wù)器的相關(guān)參數(shù)及回調(diào)函數(shù)傳入OPCST
//參數(shù):
//hInstance-- 服務(wù)器運(yùn)行時(shí)的實(shí)例句柄。
//對(duì)于進(jìn)程內(nèi)組件,由庫(kù)入口函數(shù)DllMain(HANDLE hModule, DWORD ul_reason, LPVOID lpRes )的hModule參數(shù)給定。
// 對(duì)于進(jìn)行外組件(VC),由應(yīng)用程序類CWinApp的m_hInstance給定,可以通過(guò)AfxGetInstanceHandle 函數(shù)獲取,或者通過(guò)AfxGetApp()->m_hInstance獲取。
//pOPCServerInfo -- 數(shù)據(jù)類型SOPCServerInfo的變量指針。
//pOPCRegInfo-- 數(shù)據(jù)類型SOPCRegisterInfo的變量指針。
//pVendorInfo -- 數(shù)據(jù)類型SVendorInfo的變量指針。
//lpReadTag--讀取設(shè)備值的回調(diào)函數(shù)。類型聲明如下
// bool ReadVariant( unsigned devid, VARIANT *value, const VARTYPE vtype);由開發(fā)者實(shí)現(xiàn),具體參考例程。
//lpWriteTag--更新設(shè)備值的回調(diào)函數(shù)。類型聲明如下
// bool WriteVariant(unsigned devid, VARIANT *value );由開發(fā)者實(shí)現(xiàn),具體參考例程。
//返回值:
// 執(zhí)行成功返回S_OK,執(zhí)行失敗返回S_FALSE。
HRESULT InitOPCServer
(
HINSTANCE hInstance,
SOPCServerInfo *pOPCServerInfo,
SOPCRegisterInfo *pOPCRegInfo,
SVendorInfo *pVendorInfo,
LPREADTAG lpReadTag,
LPWRITETAG lpWriteTag
);
///////////////////////////////////////////////////
//AddOPCTag/////////////////////////////////////////////////
//用于向OPCDA服務(wù)器內(nèi)添加標(biāo)記點(diǎn)
//參數(shù):
//puOPCID -- 返回OPCST內(nèi)部的標(biāo)記點(diǎn)ID。
//uDevID -- 給定設(shè)備標(biāo)記點(diǎn)ID。作為OPCST讀取設(shè)備或更新設(shè)備標(biāo)記點(diǎn)的參數(shù)。必須唯一,否則將無(wú)法準(zhǔn)確讀取或更新設(shè)備標(biāo)記點(diǎn)
//sName -- 標(biāo)記點(diǎn)名稱。用于客戶程序的瀏覽、選取。必須唯一,否則無(wú)法添加。
//bWriteable -- 指定該標(biāo)記點(diǎn)是否可寫。false 只讀,true 可以讀寫
//tValue -- 一個(gè)VARIANT類型的變量,內(nèi)含標(biāo)記點(diǎn)數(shù)據(jù)類型及初始值信息。必須正確設(shè)置。
//range_min-- 標(biāo)記點(diǎn)的最小值。對(duì)于離散標(biāo)記點(diǎn),為0
//range_max-- 標(biāo)記點(diǎn)的最大值。對(duì)于離散標(biāo)記點(diǎn),為1
//返回值:
// 執(zhí)行成功返回S_OK,執(zhí)行失敗返回S_FALSE
HRESULT AddOPCTag
(
unsigned *puOPCID,
const unsigned uDevID,
const char *sName,
const bool bWriteable,
VARIANT *tValue,
double range_min,
double range_max
) ;
///////////////////////////////////////////////////
}
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -