⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opcdefine.h

📁 OPCserver OPCserver.rar
💻 H
字号:
//////////////////////////////////////////////////////////////////////////////////////////////
//  filename : opcdefine.h
//  opc server 定义文件 For DA 2.05 版
//  author: tuolin                  email: tuolin2003@sina.com
//  Lasttime: 2005/07/16            
//////////////////////////////////////////////////////////////////////////////////////////////
#ifndef OpcDefine_H
  #define OpcDefine_H
#include <afxtempl.h>               //用于数据 
#ifdef __cplusplus
extern "C"{
#endif 

#ifdef STRICT
typedef VOID (CALLBACK* WRITENOTIFYPROC)(HANDLE, VARIANT*, DWORD*); 
typedef VOID (CALLBACK* DISCONNECTPROC)(DWORD); 
typedef VOID (CALLBACK* DEVICEREADPROC)(HANDLE, VARIANT*, WORD*, FILETIME*);
#else /* !STRICT */
typedef FARPROC WRITENOTIFYPROC;  
typedef FARPROC DISCONNECTPROC;  
typedef FARPROC DEVICEREADPROC;

#endif

}

#define    OPC_QUALITY_BAD             0x00
#define    OPC_QUALITY_UNCERTAIN       0x40
#define    OPC_QUALITY_GOOD            0xC0
#define    OPC_QUALITY_CONFIG_ERROR    0x04
#define    OPC_QUALITY_NOT_CONNECTED   0x08
#define    OPC_QUALITY_DEVICE_FAILURE  0x0c
#define    OPC_QUALITY_SENSOR_FAILURE  0x10
#define    OPC_QUALITY_LAST_KNOWN      0x14
#define    OPC_QUALITY_COMM_FAILURE    0x18
#define    OPC_QUALITY_OUT_OF_SERVICE  0x1C
#define    OPC_QUALITY_LAST_USABLE     0x44
#define    OPC_QUALITY_SENSOR_CAL      0x50
#define    OPC_QUALITY_EGU_EXCEEDED    0x54
#define    OPC_QUALITY_SUB_NORMAL      0x58
#define    OPC_QUALITY_LOCAL_OVERRIDE  0xD8

typedef  VARIANT *   PVARIANT;

typedef 
enum tagOPCSERVERSTATE
    {	OPC_STATUS_RUNNING	= 1,
	OPC_STATUS_FAILED	= OPC_STATUS_RUNNING + 1,
	OPC_STATUS_NOCONFIG	= OPC_STATUS_FAILED + 1,
	OPC_STATUS_SUSPENDED	= OPC_STATUS_NOCONFIG + 1,
	OPC_STATUS_TEST	= OPC_STATUS_SUSPENDED + 1
    }	OPCSERVERSTATE ;



//Init 

//初始化OPC Server
//static const GUID pCLSID = 
//{ 0x90ca4f34, 0xb61a, 0x4e29, { 0x8d, 0xc6, 0xb6, 0xde, 0xf4, 0x1b, 0x25, 0xbd } };
_declspec(dllimport) BOOL WINAPI TL_InitOpcServer(BYTE *pCLSID,UINT uServerRate);

//const LPSTR lpCLSID = "{90CA4F34-B61A-4e29-8DC6-B6DEF41B25BD}"
_declspec(dllimport) BOOL WINAPI TL_InitOpcServerS(LPSTR lpCLSID,UINT uServerRate);

//请求断开所有的客户端程序
void WINAPI TL_RequestAllDisconnect();
//结束
_declspec(dllimport) void WINAPI TL_UnInitOpcServer ();

//Tag

//添加点,如不成功返值为0;
_declspec(dllimport) HANDLE WINAPI TL_CreateTag (LPCSTR lpName, VARIANT Value, WORD wInitialQuality, 
             BOOL isWrite);

// 可设定点的各种属性详见DA 2.04 中的 41页 4.4.6 节
_declspec(dllimport) BOOL WINAPI TL_SetTagProperties (HANDLE hTagHandle, DWORD dwPropertyID,
  			LPCSTR lpDescription, VARIANT Value);


//删除点
_declspec(dllimport) BOOL WINAPI TL_RemoveTag (HANDLE hTagHandle);

//该函数读取点的值
_declspec(dllimport) BOOL WINAPI TL_ReadTag (HANDLE hTagHandle, PVARIANT lpValue);

//该函数读取带时标的点的值
_declspec(dllimport) BOOL WINAPI TL_ReadTagWithTimeStamp (HANDLE hTagHandle, PVARIANT lpValue, PWORD lpQuality, FILETIME *lpTimestamp);

// 刷新点
_declspec(dllimport) BOOL WINAPI TL_UpdateTag (HANDLE hTagHandle, VARIANT Value, WORD wQuality);

//按名称刷新点
_declspec(dllimport)  BOOL WINAPI TL_UpdateTagByName (LPCSTR lpName, VARIANT Value, WORD wQuality);

// 带时标刷新点
_declspec(dllimport) BOOL WINAPI TL_UpdateTagWithTimeStamp (HANDLE hTagHandle, VARIANT Value, WORD wQuality, FILETIME *Timestamp);

//取当前激活的客户端个数
_declspec(dllimport) int WINAPI  TL_GetClientCounts();
//设定hash 表大小,如果大于0则表示内部查找点使用 hash 算法.
_declspec(dllimport) unsigned long WINAPI TL_SetHashSize( unsigned long ulHashSize );

//Register

//当成NT Server 一样运行
_declspec(dllimport) BOOL WINAPI TL_AsNTService (LPCSTR LpSvrName);
_declspec(dllimport) BOOL WINAPI TL_SetupRegCode (LPCSTR lpSetupRegCode);

//注册OPC Server

//static const GUID pCLSID = 
//{ 0x90ca4f34, 0xb61a, 0x4e29, { 0x8d, 0xc6, 0xb6, 0xde, 0xf4, 0x1b, 0x25, 0xbd } };

_declspec(dllimport) BOOL WINAPI TL_Registry (BYTE *pCLSID, LPCSTR lpSvrName, LPCSTR lpDescr, LPCSTR lpExepath) ;
//const LPSTR lpCLSID = "{90CA4F34-B61A-4e29-8DC6-B6DEF41B25BD}"
_declspec(dllimport) BOOL WINAPI TL_RegistryS (LPSTR lpCLSID,LPCSTR lpSvrName, LPCSTR lpDescr, LPCSTR lpExepath) ;

//反注册OPC Server
//static const GUID pCLSID = 
//{ 0x90ca4f34, 0xb61a, 0x4e29, { 0x8d, 0xc6, 0xb6, 0xde, 0xf4, 0x1b, 0x25, 0xbd } };
_declspec(dllimport) BOOL WINAPI TL_Unregister (BYTE *pCLSID, LPCSTR lpSvrName);

//const LPSTR lpCLSID = "{90CA4F34-B61A-4e29-8DC6-B6DEF41B25BD}"
_declspec(dllimport) BOOL WINAPI TL_UnregisterS(LPSTR lpCLSID, LPCSTR lpSvrName);



//Server State

//区分点名称大小写
_declspec(dllimport) BOOL WINAPI TL_SetMatchCase (BOOL bModelFlag);

//	该函数用来设置服务器的运行状态。默认值为OPC_STATUS_RUNNING
_declspec(dllimport) void WINAPI TL_SetServerState( OPCSERVERSTATE sServerState);

//该函数用来设置服务器主版本号。默认为零
_declspec(dllimport) void WINAPI TL_SetMajorVersion(WORD wMajorVersion);

//该函数用来设置服务器副版本号。默认为零
_declspec(dllimport) void WINAPI TL_SetMinorVersion(WORD wMinorVersion); 

//该函数用来设置服务器版本创建号。默认为零。
_declspec(dllimport) void WINAPI  TL_SetBuildNumber(WORD wBuildNumber);

//该函数用来设置服务器厂商信息。默认为TL SoftWare
_declspec(dllimport) void WINAPI TL_SetVendorInfo(LPCSTR lpVendorInfo);
//该函数用来设置服务器的带宽。默认值为0x0;
_declspec(dllimport) void WINAPI TL_SetBandWidth(DWORD dwBandWidth);
//设定服务器的分隔符
_declspec(dllimport) char WINAPI TL_SetQualifier (char cQualifier);

//CALL BACK


//该函数用来注册读设备回调函数
_declspec(dllimport) BOOL WINAPI TL_EnableDeviceRead (DEVICEREADPROC lpCallback);

//如果不注册该函数,服务器将把所有的读设备请求转换为读缓存
//请求。注册的DEVICEREADPROC函数应该支持多线程。 
void CALLBACK EXPORT DeviceReadProc(HANDLE hTagHandle, PVARIANT lpValue, 
              PWORD lpQuality, PFILETIME lpTimeStamp);

//该函数注册客户端断开回调函数,当有客户端从设备断开时,调用
//EnableDisconnectNotification注册的函数

_declspec(dllimport) BOOL WINAPI TL_EnableDisconnectNotification (DISCONNECTPROC lpCallback);

//注册该函数后,当有客户端从服务器断开,通过注册的函数通知
//用户。当dwNum为零时,服务器程序可以退出

void CALLBACK EXPORT DisconnectProc(DWORD dwNum);


//该函数用来注册写回调函数。如果添加了可写标签,则应该注册写回调函数。
_declspec(dllimport) BOOL WINAPI TL_EnableWriteNotification (WRITENOTIFYPROC lpCallback);

//如果不注册该函数,OPC服务器将对所有的客户端写请求返回
//错误。OPC 运行库保证向WRITENOTIFYPROC传递的新值能
//够转换为用户指定的标准数据类型,如果用户指定了一个模拟量
//标签的上下限(详见OPC DA 2.04规范4.4.6),OPC 运行库保
//证向WRITENOTIFYPROC传递的新值在上下限范围之内。注册
//的WRITENOTIFYPROC函数应该支持多线程。 

void CALLBACK EXPORT WriteNotifyCallback(HANDLE hTagHandle, PVARIANT lpNewValue,
    			PDWORD lpDeviceError);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -