📄 opcdefine.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 + -