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

📄 opcst_ipt.h

📁 使用OPCST开发的进程内OPCDA服务器
💻 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 + -