📄 opcst_ipt.h
字号:
#ifndef _OPCST_IMPORT_H
#define _OPCST_IMPORT_H
#include "ole2.h"
//LPWRITETAG////////////////////////////////
//更新设备回调用函数类型,由开发者实现。
//参数:
//dwvid-- 设备标记ID。OPCST要通过设备标记ID来区别不同的标记点(Tag点)。
//value-- 向通道devid 传送的值,类型为VARIANT。开发者根据参数value的不同数据类型,取出具体的基本数据值,更新实际的设备或内存变量。
//返回值:
//执行成功返回true,执行失败返回false。
typedef bool (*LPWRITETAG)(
unsigned devid/*IN*/,
VARIANT *value/*IN*/
);
///////////////////////////////////
//LPREADTAG/////////////////////////////////
//读取设备回调函数类型,由开发者实现
//参数:
//dwvid-- 设备标记ID。OPCST要通过设备标记ID来区别不同的标记点(Tag点)。
//value-- 从通道devid 读取的值,类型为VARIANT。开发者根据参数vtype的不同及实际的设备值,向参数value赋值。
//vtype-- 指定要读取的数据类型
//返回值:
//执行成功返回true,执行失败返回false。
typedef bool (*LPREADTAG)(
unsigned devid/*IN*/,
VARIANT *value/*OUT*/,
const VARTYPE vtype/*IN*/);
///////////////////////////////////
//SVendorInfo/////////////////////////////////
//服务器版本及说明
//wMajorVersion -- 主版本号
//wMinorVersion -- 次版本号
//wBuildNumber -- 发布版本号
//wReserved -- 保留
//VendorInfo64[64] -- 服务器说明
typedef struct SVendorInfo
{
WORD wMajorVersion;
WORD wMinorVersion;
WORD wBuildNumber;
WORD wReserved;
char VendorInfo64[64];
} SVendorInfo;
///////////////////////////////////
//SOPCRegisterInfo/////////////////////////////////
//服务器组件注册信息
//ClsidName128 -- 组件类名称
//ProgID128[128]-- 组件属性名,系统必须唯一。如OPCDA.XXX
//OPCServerGUID-- 全局唯一标识符。通常利用微软的guidgen.exe工具产生。
typedef struct SOPCRegisterInfo
{
char ClsidName128[128];
char ProgID128[128] ;
GUID clsid_OPCServerGUID ;
}SOPCRegisterInfo;
///////////////////////////////////
//SOPCServerInfo/////////////////////////////////
//OPCDA服务器参数
//uUpdateRate -- 开发者根据具体设备的数据变化速度,确定一刷新速度,单位为毫秒
//dwForceRefresh_Band -- 强制向客户程序发送数据的时间间隔,单位为毫秒。一般情况下,
// 对于支持2.0标准的客户程序,服务器会主动向客户程序发送更新数据。但在不可
// 预见的因素导致客户端数据过期时,服务器可以定时向客户发送最新的数据。
//cTagNameSeperator -- 标识标记名的层次分隔符,一般情况为 '/' ,也可以指定别的字符。
// 主要用来给众多标记分类。
typedef struct SOPCServerInfo
{
UINT uUpdateRate;
DWORD dwForceRefresh_Band;
char cTagNameSeperator;
} SOPCServerInfo;
///////////////////////////////////
extern "C"
{
//GetTagCount/////////////////////////////////
//获取组件内标记点的总数
//参数:
// 无
//返回值:
// 返回标记点的数量
unsigned GetTagCount();
///////////////////////////////////////////////////
//EXE_RegisterServer/////////////////////////////////////////////////
//注册进程外服务器
//参数:
// 无
//返回值:
// 成功执行返回S_OK,否则返回S_FAIL
HRESULT EXE_RegisterServer(void);
///////////////////////////////////////////////////
//EXE_UnregisterServer/////////////////////////////////////////////////
//注销进程外服务器
//参数:
// 无
//返回值:
// 成功执行返回S_OK,否则返回S_FAIL
HRESULT EXE_UnregisterServer(void);
///////////////////////////////////////////////////
//EXE_StartServer/////////////////////////////////////////////////
//启动进程外服务器服务
//参数:
// 无
//返回值:
// 成功执行返回S_OK,否则返回S_FAIL
HRESULT EXE_StartServer(void);
///////////////////////////////////////////////////
//EXE_StopServer/////////////////////////////////////////////////
//停止进程外服务器服务
//参数:
// 无
//返回值:
// 成功执行返回S_OK,否则返回S_FAIL
HRESULT EXE_StopServer(void);
///////////////////////////////////////////////////
//DLL_RegisterServer/////////////////////////////////////////////////
//注册进程内服务器
//参数:
// 无
//返回值:
// 成功执行返回S_OK,否则返回S_FAIL
HRESULT DLL_RegisterServer(void);
///////////////////////////////////////////////////
//DLL_UnregisterServer/////////////////////////////////////////////////
//注销进程内服务器
//参数:
// 无
//返回值:
// 成功执行返回S_OK,否则返回S_FAIL
HRESULT DLL_UnregisterServer(void);
///////////////////////////////////////////////////
//DLL_GetClassObject/////////////////////////////////////////////////
//调用进程内服务器类工厂。对于进程外服务器只需调用EXE_ StartServer来启动服务,
//而进程内服务器则由COM环境调用
//参数:
// rclsid-- 服务器组件类标识符,类型同GUID,都是IID结构。
// riid -- 接口变量参考,通常是标识符IID_IClassFactory的接口。
// ppv -- 与类标识符rclsid相关的接口对象指针的指针。
//返回值:
// 成功执行返回S_OK,否则返回S_FAIL。
HRESULT DLL_GetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv);
///////////////////////////////////////////////////
//DLL_CanUnloadNow/////////////////////////////////////////////////
//COM环境用来确定是否可以卸载服务器组件
//参数:
// 无
//返回值:
// 返回S_OK则可以卸载,返回S_FAIL则不可以卸解
HRESULT DLL_CanUnloadNow(void);
///////////////////////////////////////////////////
//InitOPCServer/////////////////////////////////////////////////
//初始化OPCST工具。用于将服务器的相关参数及回调函数传入OPCST
//参数:
//hInstance-- 服务器运行时的实例句柄。
//对于进程内组件,由库入口函数DllMain(HANDLE hModule, DWORD ul_reason, LPVOID lpRes )的hModule参数给定。
// 对于进行外组件(VC),由应用程序类CWinApp的m_hInstance给定,可以通过AfxGetInstanceHandle 函数获取,或者通过AfxGetApp()->m_hInstance获取。
//pOPCServerInfo -- 数据类型SOPCServerInfo的变量指针。
//pOPCRegInfo-- 数据类型SOPCRegisterInfo的变量指针。
//pVendorInfo -- 数据类型SVendorInfo的变量指针。
//lpReadTag--读取设备值的回调函数。类型声明如下
// bool ReadVariant( unsigned devid, VARIANT *value, const VARTYPE vtype);由开发者实现,具体参考例程。
//lpWriteTag--更新设备值的回调函数。类型声明如下
// bool WriteVariant(unsigned devid, VARIANT *value );由开发者实现,具体参考例程。
//返回值:
// 执行成功返回S_OK,执行失败返回S_FALSE。
HRESULT InitOPCServer
(
HINSTANCE hInstance,
SOPCServerInfo *pOPCServerInfo,
SOPCRegisterInfo *pOPCRegInfo,
SVendorInfo *pVendorInfo,
LPREADTAG lpReadTag,
LPWRITETAG lpWriteTag
);
///////////////////////////////////////////////////
//AddOPCTag/////////////////////////////////////////////////
//用于向OPCDA服务器内添加标记点
//参数:
//puOPCID -- 返回OPCST内部的标记点ID。
//uDevID -- 给定设备标记点ID。作为OPCST读取设备或更新设备标记点的参数。必须唯一,否则将无法准确读取或更新设备标记点
//sName -- 标记点名称。用于客户程序的浏览、选取。必须唯一,否则无法添加。
//bWriteable -- 指定该标记点是否可写。false 只读,true 可以读写
//tValue -- 一个VARIANT类型的变量,内含标记点数据类型及初始值信息。必须正确设置。
//range_min-- 标记点的最小值。对于离散标记点,为0
//range_max-- 标记点的最大值。对于离散标记点,为1
//返回值:
// 执行成功返回S_OK,执行失败返回S_FALSE
HRESULT AddOPCTag
(
unsigned *puOPCID,
const unsigned uDevID,
const char *sName,
const bool bWriteable,
VARIANT *tValue,
double range_min,
double range_max
) ;
///////////////////////////////////////////////////
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -