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