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

📄 opcdefine.vb

📁 OPCserver OPCserver.rar
💻 VB
字号:
Option Strict Off
Option Explicit On
Module opcdefine
	
	'//////////////////////////////////////////////////////////////////////////////////////////////
	'//  filename : opcdefine.bas
	'//  opc server 定义文件 For DA 2.05 版
	'//  author: tuolin                  email: tuolin2003@sina.com
	'//  Lasttime: 2003/05/8  ver 1.01
	'//////////////////////////////////////////////////////////////////////////////////////////////
	
	Public Const OPC_QUALITY_BAD As Short = &H0s
	Public Const OPC_QUALITY_UNCERTAIN As Short = &H40s
	Public Const OPC_QUALITY_GOOD As Short = &HC0s
	Public Const OPC_QUALITY_CONFIG_ERROR As Short = &H4s
	Public Const OPC_QUALITY_NOT_CONNECTED As Short = &H8s
	Public Const OPC_QUALITY_DEVICE_FAILURE As Short = &HCs
	Public Const OPC_QUALITY_SENSOR_FAILURE As Short = &H10s
	Public Const OPC_QUALITY_LAST_KNOWN As Short = &H14s
	Public Const OPC_QUALITY_COMM_FAILURE As Short = &H18s
	Public Const OPC_QUALITY_OUT_OF_SERVICE As Short = &H1Cs
	Public Const OPC_QUALITY_LAST_USABLE As Short = &H44s
	Public Const OPC_QUALITY_SENSOR_CAL As Short = &H50s
	Public Const OPC_QUALITY_EGU_EXCEEDED As Short = &H54s
	Public Const OPC_QUALITY_SUB_NORMAL As Short = &H58s
	Public Const OPC_QUALITY_LOCAL_OVERRIDE As Short = &HD8s
	
	Public Enum OPCSERVERSTATE
		OPC_STATUS_RUNNING = 1
		OPC_STATUS_FAILED = OPCSERVERSTATE.OPC_STATUS_RUNNING + 1
		OPC_STATUS_NOCONFIG = OPCSERVERSTATE.OPC_STATUS_FAILED + 1
		OPC_STATUS_SUSPENDED = OPCSERVERSTATE.OPC_STATUS_NOCONFIG + 1
		OPC_STATUS_TEST = OPCSERVERSTATE.OPC_STATUS_SUSPENDED + 1
	End Enum
	
	Public Structure FILETIME
		Dim dwLowDateTime As Integer
		Dim dwHighDateTime As Integer
	End Structure
	
	Public Structure SYSTEMTIME
		Dim wYear As Short
		Dim wMonth As Short
		Dim wDayOfWeek As Short
		Dim wDay As Short
		Dim wHour As Short
		Dim wMinute As Short
		Dim wSecond As Short
		Dim wMilliseconds As Short
	End Structure
	
	
	
	'//Init
	
	'//初始化OPC Server
	'//static const GUID pCLSID =
	'//{ 0x90ca4f34, 0xb61a, 0x4e29, { 0x8d, 0xc6, 0xb6, 0xde, 0xf4, 0x1b, 0x25, 0xbd } }
	
	Public Declare Function TL_InitOpcServer Lib "TLSvrRdk.dll" (ByRef pCLSID As Byte, ByVal uServerRate As Integer) As Integer
	
	'//const LPSTR lpCLSID = "{90CA4F34-B61A-4e29-8DC6-B6DEF41B25BD}"
	Public Declare Function TL_InitOpcServerS Lib "TLSvrRdk.dll" (ByVal lpCLSID As String, ByVal uServerRate As Integer) As Integer
	
	
	'//请求断开所有的客户端程序
	Public Declare Sub TL_RequestAllDisconnect Lib "TLSvrRdk.dll" ()
	'//结束
	Public Declare Sub TL_UnInitOpcServer Lib "TLSvrRdk.dll" ()
	
	'//Tag
	
	'//添加点,如不成功返值为0
	Public Declare Function TL_CreateTag Lib "TLSvrRdk.dll" (ByVal lpName As String, ByVal Value As Object, ByVal wInitialQuality As Short, ByVal isWrite As Integer) As Integer
	
	'// 可设定点的各种属性详见DA 2.04 中的 41页 4.4.6 节
	Public Declare Function TL_SetTagProperties Lib "TLSvrRdk.dll" (ByVal hTagHandle As Integer, ByVal dwPropertyID As Integer, ByVal lpDescription As String, ByVal Value As Object) As Integer
	
	
	'//删除点
	Public Declare Function TL_RemoveTag Lib "TLSvrRdk.dll" (ByVal hTagHandle As Integer) As Integer
	
	'//该函数读取点的值
	Public Declare Function TL_ReadTag Lib "TLSvrRdk.dll" (ByVal hTagHandle As Integer, ByRef lpValue As Object) As Integer
	
	'//该函数读取带时标的点的值
	'UPGRADE_WARNING: 结构 FILETIME 可能要求封送处理属性作为此声明语句中的参数传递。 单击以获得更多信息:“ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1050"”
	Public Declare Function TL_ReadTagWithTimeStamp Lib "TLSvrRdk.dll" (ByVal hTagHandle As Integer, ByRef lpValue As Object, ByRef lpQuality As Short, ByRef lpTimestamp As FILETIME) As Integer
	
	'// 刷新点
	Public Declare Function TL_UpdateTag Lib "TLSvrRdk.dll" (ByVal hTagHandle As Integer, ByVal Value As Object, ByVal wQuality As Short) As Integer
	
	'//按名称刷新点
	Public Declare Function TL_UpdateTagByName Lib "TLSvrRdk.dll" (ByVal lpName As String, ByVal Value As Object, ByVal wQuality As Short) As Integer
	
	'// 带时标刷新点
	'UPGRADE_WARNING: 结构 FILETIME 可能要求封送处理属性作为此声明语句中的参数传递。 单击以获得更多信息:“ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1050"”
	Public Declare Function TL_UpdateTagWithTimeStamp Lib "TLSvrRdk.dll" (ByVal hTagHandle As Integer, ByVal Value As Object, ByVal wQuality As Short, Byref Timestamp As FILETIME) As Integer
	
	'//取当前激活的客户端个数
	Public Declare Function TL_GetClientCounts Lib "TLSvrRdk.dll" () As Short
	
	'//设定hash 表大小,如果大于0则表示内部查找点使用 hash 算法.
	Public Declare Function TL_SetHashSize Lib "TLSvrRdk.dll" (ByVal ulHashSize As Integer) As Integer
	
	'//Register
	
	'//当成NT Server 一样运行
	Public Declare Function TL_AsNTService Lib "TLSvrRdk.dll" (ByVal lpSvrName As String) As Integer
	Public Declare Function TL_SetupRegCode Lib "TLSvrRdk.dll" (ByVal lpSetupRegCode As String) As Integer
	
	
	
	'//注册OPC Server
	
	'//static const GUID pCLSID =
	'//{ 0x90ca4f34, 0xb61a, 0x4e29, { 0x8d, 0xc6, 0xb6, 0xde, 0xf4, 0x1b, 0x25, 0xbd } }
	
	Public Declare Function TL_Registry Lib "TLSvrRdk.dll" (ByRef pCLSID As Byte, ByVal lpSvrName As String, ByVal lpDescr As String, ByVal lpExepath As String) As Integer
	'//const LPSTR lpCLSID = "{90CA4F34-B61A-4e29-8DC6-B6DEF41B25BD}"
	Public Declare Function TL_RegistryS Lib "TLSvrRdk.dll" (ByVal lpCLSID As String, ByVal lpSvrName As String, ByVal lpDescr As String, ByVal lpExepath As String) As Integer
	
	'//反注册OPC Server
	'//static const GUID pCLSID =
	'//{ 0x90ca4f34, 0xb61a, 0x4e29, { 0x8d, 0xc6, 0xb6, 0xde, 0xf4, 0x1b, 0x25, 0xbd } }
	Public Declare Function TL_Unregister Lib "TLSvrRdk.dll" (ByRef pCLSID As Byte, ByVal lpSvrName As String) As Integer
	
	'//const LPSTR lpCLSID = "{90CA4F34-B61A-4e29-8DC6-B6DEF41B25BD}"
	Public Declare Function TL_UnregisterS Lib "TLSvrRdk.dll" (ByVal lpCLSID As String, ByVal lpSvrName As String) As Integer
	
	
	
	'//Server State
	
	'//区分点名称大小写
	Public Declare Function TL_SetMatchCase Lib "TLSvrRdk.dll" (ByVal bModelFlag As Integer) As Integer
	
	'//  该函数用来设置服务器的运行状态。默认值为OPC_STATUS_RUNNING
	'UPGRADE_WARNING: 结构 OPCSERVERSTATE 可能要求封送处理属性作为此声明语句中的参数传递。 单击以获得更多信息:“ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1050"”
	Public Declare Sub TL_SetServerState Lib "TLSvrRdk.dll" (ByVal sServerState As OPCSERVERSTATE)
	
	'//该函数用来设置服务器主版本号。默认为零
	Public Declare Sub TL_SetMajorVersion Lib "TLSvrRdk.dll" (ByVal wMajorVersion As Short)
	
	'//该函数用来设置服务器副版本号。默认为零
	Public Declare Sub TL_SetMinorVersion Lib "TLSvrRdk.dll" (ByVal wMinorVersion As Short)
	
	'//该函数用来设置服务器版本创建号。默认为零。
	Public Declare Sub TL_SetBuildNumber Lib "TLSvrRdk.dll" (ByVal wBuildNumber As Short)
	
	'//该函数用来设置服务器厂商信息。默认为TL SoftWare
	Public Declare Sub TL_SetVendorInfo Lib "TLSvrRdk.dll" (ByVal lpVendorInfo As String)
	'//该函数用来设置服务器的带宽。默认值为0x0
	Public Declare Sub TL_SetBandWidth Lib "TLSvrRdk.dll" (ByVal dwBandWidth As Integer)
	'//设定服务器的分隔符
        Public Declare Function TL_SetQualifier Lib "TLSvrRdk.dll" (ByVal cQualifier As Byte) As Byte
	'//CALL BACK
	'//该函数注册客户端断开回调函数,当有客户端从设备断开时,调用
	'//EnableDisconnectNotification注册的函数
	
    Public Declare Function TL_EnableDisconnectNotification Lib "TLSvrRdk.dll" (ByVal lpCallback As DelegateDisconnectProc) As Integer
	
	'//注册该函数后,当有客户端从服务器断开,通过注册的函数通知
	'//用户。当dwNum为零时,服务器程序可以退出
	
	'void CALLBACK EXPORT DisconnectProc Lib "TLSvrRdk.dll" (DWORD dwNum)
	
	
	'//该函数用来注册读设备回调函数
    Public Declare Function TL_EnableDeviceRead Lib "TLSvrRdk.dll" (ByVal lpCallback As DelegateDeviceReadProc) As Integer
	
	'//如果不注册该函数,服务器将把所有的读设备请求转换为读缓存
	'//请求。注册的DEVICEREADPROC函数应该支持多线程。
	'void CALLBACK EXPORT DeviceReadProc Lib "TLSvrRdk.dll" (HANDLE hTagHandle, PVARIANT lpValue,
	'             PWORD lpQuality, PFILETIME lpTimeStamp)
	
	
	
	
	'//该函数用来注册写回调函数。如果添加了可写标签,则应该注册写回调函数。
    Public Declare Function TL_EnableWriteNotification Lib "TLSvrRdk.dll" (ByVal lpCallback As DelegateWriteNotifyCallback) As Integer
	
	'//如果不注册该函数,OPC服务器将对所有的客户端写请求返回
	'//错误。OPC 运行库保证向WRITENOTIFYPROC传递的新值能
	'//够转换为用户指定的标准数据类型,如果用户指定了一个模拟量
	'//标签的上下限(详见OPC DA 2.04规范4.4.6),OPC 运行库保
	'//证向WRITENOTIFYPROC传递的新值在上下限范围之内。注册
	'//的WRITENOTIFYPROC函数应该支持多线程。
	
	'void CALLBACK EXPORT WriteNotifyCallback Lib "TLSvrRdk.dll" (HANDLE hTagHandle, PVARIANT lpNewValue,
	'PDWORD lpDeviceError)
    Delegate Sub DelegateDeviceReadProc(ByVal hTagHandle As Integer, ByRef lpValue As Object, ByRef lpQuality As Short, ByRef lpTimestamp As FILETIME)
    Delegate Sub DelegateWriteNotifyCallback(ByVal hTagHandle As Integer, ByRef pNewValue As Object, ByRef pDeviceError As Integer)
    Delegate Sub DelegateDisconnectProc(ByVal dwNum As Integer)
     Public Sub DeviceReadProc(ByVal hTagHandle As Integer, ByRef lpValue As Object, ByRef lpQuality As Short, ByRef lpTimestamp As FILETIME)



    End Sub


    Public Sub DisconnectProc(ByVal dwNum As Integer)
        If dwNum = 0 Then

        End If
    End Sub

    Public Sub WriteNotifyCallback(ByVal hTagHandle As Integer, ByRef pNewValue As Object, ByRef pDeviceError As Integer)
        '用于把客户端写入的数据通知Server

    End Sub
End Module

⌨️ 快捷键说明

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