📄 opcdefine.bas
字号:
Attribute VB_Name = "opcdefine"
Option Explicit
'//////////////////////////////////////////////////////////////////////////////////////////////
'// filename : opcdefine.bas
'// opc server 定义文件 For DA 2.05 版
'// author: tuolin email: tuolin2003@sina.com
'// Lasttime: 2003/05/8 ver 1.01
'//////////////////////////////////////////////////////////////////////////////////////////////
Global Const OPC_QUALITY_BAD = &H0
Global Const OPC_QUALITY_UNCERTAIN = &H40
Global Const OPC_QUALITY_GOOD = &HC0
Global Const OPC_QUALITY_CONFIG_ERROR = &H4
Global Const OPC_QUALITY_NOT_CONNECTED = &H8
Global Const OPC_QUALITY_DEVICE_FAILURE = &HC
Global Const OPC_QUALITY_SENSOR_FAILURE = &H10
Global Const OPC_QUALITY_LAST_KNOWN = &H14
Global Const OPC_QUALITY_COMM_FAILURE = &H18
Global Const OPC_QUALITY_OUT_OF_SERVICE = &H1C
Global Const OPC_QUALITY_LAST_USABLE = &H44
Global Const OPC_QUALITY_SENSOR_CAL = &H50
Global Const OPC_QUALITY_EGU_EXCEEDED = &H54
Global Const OPC_QUALITY_SUB_NORMAL = &H58
Global Const OPC_QUALITY_LOCAL_OVERRIDE = &HD8
Public Enum OPCSERVERSTATE
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
End Enum
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Public Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
'//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 Long) As Long
'//const LPSTR lpCLSID = "{90CA4F34-B61A-4e29-8DC6-B6DEF41B25BD}"
Public Declare Function TL_InitOpcServerS Lib "TLSvrRdk.dll" (ByVal lpCLSID As String, ByVal uServerRate As Long) As Long
'//请求断开所有的客户端程序
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 Variant, ByVal wInitialQuality As Integer, _
ByVal isWrite As Long) As Long
'// 可设定点的各种属性详见DA 2.04 中的 41页 4.4.6 节
Public Declare Function TL_SetTagProperties Lib "TLSvrRdk.dll" (ByVal hTagHandle As Long, ByVal dwPropertyID As Long, _
ByVal lpDescription As String, ByVal Value As Variant) As Long
'//删除点
Public Declare Function TL_RemoveTag Lib "TLSvrRdk.dll" (ByVal hTagHandle As Long) As Long
'//该函数读取点的值
Public Declare Function TL_ReadTag Lib "TLSvrRdk.dll" (ByVal hTagHandle As Long, lpValue As Variant) As Long
'//该函数读取带时标的点的值
Public Declare Function TL_ReadTagWithTimeStamp Lib "TLSvrRdk.dll" (ByVal hTagHandle As Long, lpValue As Variant, lpQuality As Integer, lpTimestamp As FILETIME) As Long
'// 刷新点
Public Declare Function TL_UpdateTag Lib "TLSvrRdk.dll" (ByVal hTagHandle As Long, ByVal Value As Variant, ByVal wQuality As Integer) As Long
'//按名称刷新点
Public Declare Function TL_UpdateTagByName Lib "TLSvrRdk.dll" (ByVal lpName As String, ByVal Value As Variant, ByVal wQuality As Integer) As Long
'// 带时标刷新点
Public Declare Function TL_UpdateTagWithTimeStamp Lib "TLSvrRdk.dll" (ByVal hTagHandle As Long, ByVal Value As Variant, ByVal wQuality As Integer, Timestamp As FILETIME) As Long
'//取当前激活的客户端个数
Public Declare Function TL_GetClientCounts Lib "TLSvrRdk.dll" () As Integer
'//设定hash 表大小,如果大于0则表示内部查找点使用 hash 算法.
Public Declare Function TL_SetHashSize Lib "TLSvrRdk.dll" (ByVal ulHashSize As Long) As Long
'//Register
'//当成NT Server 一样运行
Public Declare Function TL_AsNTService Lib "TLSvrRdk.dll" (ByVal lpSvrName As String) As Long
Public Declare Function TL_SetupRegCode Lib "TLSvrRdk.dll" (ByVal lpSetupRegCode As String) As Long
'//注册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 Long
'//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 Long
'//反注册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 Long
'//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 Long
'//Server State
'//区分点名称大小写
Public Declare Function TL_SetMatchCase Lib "TLSvrRdk.dll" (ByVal bModelFlag As Long) As Long
'// 该函数用来设置服务器的运行状态。默认值为OPC_STATUS_RUNNING
Public Declare Sub TL_SetServerState Lib "TLSvrRdk.dll" (ByVal sServerState As OPCSERVERSTATE)
'//该函数用来设置服务器主版本号。默认为零
Public Declare Sub TL_SetMajorVersion Lib "TLSvrRdk.dll" (ByVal wMajorVersion As Integer)
'//该函数用来设置服务器副版本号。默认为零
Public Declare Sub TL_SetMinorVersion Lib "TLSvrRdk.dll" (ByVal wMinorVersion As Integer)
'//该函数用来设置服务器版本创建号。默认为零。
Public Declare Sub TL_SetBuildNumber Lib "TLSvrRdk.dll" (ByVal wBuildNumber As Integer)
'//该函数用来设置服务器厂商信息。默认为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 Long)
'//设定服务器的分隔符
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 Long) As Long
'//注册该函数后,当有客户端从服务器断开,通过注册的函数通知
'//用户。当dwNum为零时,服务器程序可以退出
'void CALLBACK EXPORT DisconnectProc Lib "TLSvrRdk.dll" (DWORD dwNum)
'//该函数用来注册读设备回调函数
Public Declare Function TL_EnableDeviceRead Lib "TLSvrRdk.dll" (ByVal lpCallback As Long) As Long
'//如果不注册该函数,服务器将把所有的读设备请求转换为读缓存
'//请求。注册的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 Long) As Long
'//如果不注册该函数,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)
Public Sub DeviceReadProc(ByVal hTagHandle As Long, lpValue As Variant, _
lpQuality As Integer, lpTimestamp As FILETIME)
End Sub
Public Sub DisconnectProc(ByVal dwNum As Long)
If dwNum = 0 Then
End If
End Sub
Public Sub WriteNotifyCallback(ByVal hTagHandle As Long, pNewValue As Variant, pDeviceError As Long)
'用于把客户端写入的数据通知Server
'部骤1.
'检测 hTagHandle = TagList(i).m_hHWND
'如果 相等.
'把 pNewValue (客户端送入的值)值写入 TagList(i).m_hHWND
'Call TL_UpdateTag(TagList(i).m_hHWND, pNewValue, 192)
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -