📄 modmain.bas
字号:
Attribute VB_Name = "modMain"
Public Declare Function M8_SearchEventServers Lib "RalidHW.dll" (IPs As Long, MacAddr As TYPEMAC, ByVal nCount As Integer, nRealCount As Integer) As Integer
Public Declare Function M8_IntegerIpToStringIp Lib "RalidHW.dll" (IpBuf As String, ByVal nBufSize As Integer, ByVal nIP As Long) As Integer
Public Declare Function M8_ConnectToEventServer Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nCommPassword As Long) As Integer
Public Declare Function M8_GetEvents Lib "RalidHW.dll" (ByVal nIP As Long, pEvents As CARDEVENT, ByVal nCount As Long, ByRef nRealCount As Long, ByVal nFlag As Integer) As Integer
Public Declare Function M8_SetTimeout Lib "RalidHW.dll" (ByVal nReadTimeout As Integer, ByVal nWriteTimeout As Integer) As Integer
Public Declare Function M8_SearchDoorCtrls Lib "RalidHW.dll" (ByVal nIP As Long, nDCSNs As Long, nDCAddrs As Byte, ByVal nCount As Byte, nRealCount As Byte) As Integer
Public Declare Function M8_GetEventServer Lib "RalidHW.dll" (pEventServer As TYPECTRL) As Integer
Public Declare Function M8_GetDoorCtrl Lib "RalidHW.dll" (ByVal nIP As Long, pDoorCtrl As TYPEDC) As Integer
Public Declare Function M8_SetDoorCtrl Lib "RalidHW.dll" (ByVal nIP As Long, pDoorCtrl As TYPEDC) As Integer
Public Declare Function M8_ClearDoorCtrl Lib "RalidHW.dll" (ByVal nIP As Long) As Integer
Public Declare Function M8_DeleteDoorCtrl Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDCAddrs As Byte) As Integer
Public Declare Function M8_SetEventServer Lib "RalidHW.dll" (ByVal nIP As Long, pEventServer As TYPECTRL) As Integer
Public Declare Function M8_GetTime Lib "RalidHW.dll" (ByVal nIP As Long, pCurTime As TYPETIME) As Integer
Public Declare Function M8_DisconnectEventServer Lib "RalidHW.dll" (ByVal nIP As Long) As Integer
Public Declare Function M8_GetEventsFromBuf Lib "RalidHW.dll" (ByVal nIP As Long, pEvent As CARDEVENT, ByVal nCount As Long, nRealCount As Long) As Integer
Public Declare Function M8_IncreaseEventCount Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nCount As Long) As Integer
Public Declare Function M8_SetTimePeriod Lib "RalidHW.dll" (ByVal nIP As Long, pTimezone As TYPETIMEZONE) As Integer
Public Declare Function M8_DeleteTimePeriod Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nTimezoneID As Byte) As Integer
Public Declare Function M8_GetTimePeriod Lib "RalidHW.dll" (ByVal nIP As Long, pTimezone As TYPETIMEZONE) As Integer
Public Declare Function M8_SetPurview Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDoorAddr As Byte, pAccessLevel As TYPEACCESSLEVEL) As Integer
Public Declare Function M8_DeletePurview Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDoorAddr As Byte, ByVal intLevelID As Integer) As Integer
Public Declare Function M8_GetPurview Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDoorAddr As Byte, pAccessLevel As TYPEACCESSLEVEL) As Integer
Public Declare Function M8_SetGeneralCards Lib "RalidHW.dll" (ByVal nIP As Long, pCard As TYPECARD, ByVal nCount As Long, nRealCount As Long) As Integer
Public Declare Function M8_DeleteCard Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nCardNumber As Long) As Integer
Public Declare Function M8_GetCard Lib "RalidHW.dll" (ByVal nIP As Long, pCard As TYPECARD) As Integer
Public Declare Function M8_SetTime Lib "RalidHW.dll" (ByVal nIP As Long, pTime As TYPETIME) As Integer
Public Declare Function M8_OpenDoor Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDoorAddr As Byte) As Integer
Public Declare Function M8_CloseDoor Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDoorAddr As Byte) As Integer
Public Declare Function M8_IsOpen Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDoorAddr As Byte, nDoorStatus As Long) As Integer
Public Declare Function M8_SetIoAttribute Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDoorAddr As Byte, pIOAttr As TYPEIOATT) As Integer
Public Declare Function M8_SetOutput Lib "RalidHW.dll" (ByVal nIP As Long, ByVal nDoorAddr As Byte, ByVal nOutputValue As Byte, ByVal nOutputMask As Byte) As Integer
Public Type CARDEVENT
nCardNumber(3) As Byte
nYear As Byte
nMonth As Byte
nDay As Byte
nHour As Byte
nMinute As Byte
nSec As Byte
nDoorAddr As Byte
nEventType As Byte
End Type
Public Type TYPEIOATT
nIONumber As Byte
nNormal As Byte '常态电平,0为低电平,1为高电平
nOutTime As Byte '输出持续时间,以秒为单位,当值为0时表示输出持续时间为无限长
End Type
Public Type TYPEMAC
sMacAddr(5) As Byte
End Type
Public Type TYPECTRL
nIP As Long
nSubnetMask As Long
nGateway As Long
nCommPwd As Long
End Type
Public Type TYPEDC
nID As Long
nAddr As Byte ' 门控制器地址,START_DOOR_ADDR~END_DOOR_ADDR
nOutReaderType As Byte ' 外部读卡器类型,1:自动,26:W26,34:W34
nInReaderType As Byte ' 内部读卡器类型,1:自动,26:W26,34:W34
nOutLedPolar As Byte ' 外部读卡器的LED极性,0:阴极,1:阳极
nInLedPolar As Byte ' 内部读卡器的LED极性,0:阴极,1:阳极
bCheckReader As Byte ' 是否检测读卡器被拆,默认是不检测(值为0)。
nLockType As Byte ' 电锁类型,0:阴极锁,1阳极锁,2:脉冲锁。
bFirstCardOpen As Byte ' 是否首卡常开
bCheckSensor As Byte ' 是否检测门磁
nState As Byte ' 门状态,具体状态请见1.8门时段状态。
nHolidayState As Byte ' 节假日期间要进入的门状态,默认为安全。
bAutoMode As Byte ' 表示门状态的转换是否为自动模式
nCountCard As Byte ' 多卡开门的数量,1~10,默认为1
nTimeOfDelay As Byte ' 开门延时时间,0~255秒,默认为6秒
nTimeOfAlert As Byte ' 门开超时报警时间,0~255秒,默认为10秒
nForceCode(1) As Byte ' 胁迫码,固定为4位
nSuperPassword(3) As Byte ' 超级密码,固定为8位,默认为 88888888。
bEnableSuperPwd As Byte ' 是否启用超级密码,1为启用,0为不启用。
nAPBType As Byte ' APB(Anti-PassBack),防返潜类型,具体类型请见下方APBType枚举
nOutArea As Byte ' 门外的APB区域号,0~255
nInArea As Byte ' 门内的APB区域号,0~255
nInterLocked As Byte ' 门点互锁参数
End Type
Public Type TYPETIME
nYear As Byte
nMonth As Byte
nWeek As Byte
nDay As Byte
nHour As Byte
nMinute As Byte
nSec As Byte
End Type
Public Type TYPETIMEZONE
nTZID As Byte
nFlag As Byte ' RALID-TCP控制器中,永远设置为1
StartTime As TYPETIME
nTimeMask As Byte
EndTime As TYPETIME
End Type
Public Type TYPEACCESSLEVEL
nLevelID As Integer
nTimezoneID(9) As Byte
nOperation As Long ' 动作内容,纯粹开门则设置为1
nOperationMask As Long ' 动作内容掩码,纯粹开门则设置为1
nHolidayFlag As Byte ' 节假日是否有效,不需要节假日时设置为1
End Type
Public Type TYPECARD
nNumber As Long
nAccessLevelID As Integer
nReserve1 As Byte ' 保留字段,置0即可
nReserve2 As Byte ' 保留字段,置0即可
nAPB As Byte ' 保留字段,置0即可
nPassword(1) As Byte ' 开门密码,四位数字
nExpireYear As Byte
nExpireMonth As Byte
nExpireDay As Byte
End Type
Public Enum EventType
ET_CARD = 0 '刷卡,但没有开门
ET_CARD_OPEN = 1 ' 刷卡开门(门被用户推开)
ET_CARDnPWD_OPEN = 2 ' 卡+密码开门
ET_INNER_OPEN = 3 ' 内部(按钮)开门
ET_ILLEGAL_OPEN = 4 ' 非法开门
ET_MODIFY_ACCREDIT_PWD = 5 ' 修改授权密码(在本系统中不存在)
ET_MODIFY_OPEN_DOOR_PWD = 6 ' 修改开门密码(在本系统中不存在)
ET_INVALID_CARD = 7 ' 无效卡刷卡
ET_DOOR_OPENED_TIMEOUT = 8 ' 门开超时报警
ET_FORCE_CODE_OPEN = 9 ' 胁迫码开门
ET_SYSTEM_RESET = 10 ' 系统复位
ET_EVENT_SERVER_DISMANTLE = 11 ' 事件服务器被拆除
ET_EVENT_SERVER_REVERT = 12 ' 事件服务器被还原
ET_CTRL_DISPATCH_USER_CARD = 13 ' 控制器发用户卡(在本系统中不存在)
ET_CTRL_DISPATCH_PRIVILEGE_CARD = 14 ' 控制器发特权卡(在本系统中不存在)
ET_SENSOR1_ON = 16 ' 门1门磁打开
ET_BUTTON1_ON = 17 ' 门1按钮打开
ET_INPUT1_ON = 18 ' 辅助输入1打开
ET_INPUT2_ON = 19 ' 辅助输入2打开
ET_SENSOR2_ON = 20 ' 门2门磁打开(在本系统中不存在)
ET_BUTTON2_ON = 21 ' 门2按钮打开(在本系统中不存在)
ET_INPUT3_ON = 22 ' 辅助输入3打开(在本系统中不存在)
ET_INPUT4_ON = 23 ' 辅助输入4打开(在本系统中不存在)
ET_LOCK1_ON = 24 ' 门1电锁打开
ET_LOCK1_ASSIST_ON = 25 ' 门1电锁辅助输出打开
ET_LOCK2_ON = 26 ' 门2电锁打开(在本系统中不存在)
ET_LOCK2_ASSIST_ON = 27 ' 门2电锁辅助输出打开(在本系统中不存在)
ET_TTL1_ON = 28 ' TTL辅助输出1打开
ET_TTL2_ON = 29 ' TTL辅助输出2打开
ET_TTL3_ON = 30 ' TTL辅助输出3打开
ET_TTL4_ON = 31 ' TTL辅助输出4打开
ET_DEL_USER_CARD = 32 ' 删除用户卡(在本系统中不存在)
ET_DEL_PRIVILEGE_CARD = 33 ' 删除特权卡(在本系统中不存在)
ET_CARD_CLOSE = 34 ' 刷卡关门(在本系统中不存在)
ET_PWD_CLOSE = 35 ' 密码关门(在本系统中不存在)
ET_BUTTON_CLOSE = 36 ' 内部按钮关门(在本系统中不存在)
ET_SUPER_PWD_OPEN = 37 ' 超级密码开门
ET_CARDnPWD = 38 ' 卡+密码,但门没有被用户推开
ET_DOOR_CTRL_FAIL = 39 ' 门控制器失效
ET_DOOR_CTRL_DISMANTLE = 40 ' 门控制器被拆除
ET_READER_DISMANTLE = 41 ' 读卡器被拆除
ET_REQUEST_APPROVE = 42 '请求异地核准(暂未实现)
ET_ENTER_CARD = 43 '门控制器进入安全(卡开门)状态
ET_ENTER_DORMANCY = 44 '门控制器进入休眠状态
ET_ENTER_CONST_OPEN = 45 '门控制器进入常开状态
ET_ENTER_CARDnPWD = 46 '门控制器进入卡+密码状态
ET_ENTER_CARD_APB = 47 '门控制器进入卡APB状态
ET_ENTER_CARDnPWD_APB = 48 '门控制器进入卡+密码APB状态
ET_SENSOR1_OFF = 64 ' 门1门磁关闭
ET_BUTTON1_OFF = 65 ' 门1按钮关闭
ET_INPUT1_OFF = 66 ' 辅助输入1关闭
ET_INPUT2_OFF = 67 ' 辅助输入2关闭
ET_SENSOR2_OFF = 68 ' 门2门磁关闭(在本系统中不存在)
ET_BUTTON2_OFF = 69 ' 门2按钮关闭(在本系统中不存在)
ET_INPUT3_OFF = 70 ' 辅助输入3关闭(在本系统中不存在)
ET_INPUT4_OFF = 71 ' 辅助输入4关闭(在本系统中不存在)
ET_LOCK1_OFF = 72 ' 门1电锁关闭
ET_LOCK1_ASSIST_OFF = 73 ' 门1电锁辅助输出关闭
ET_LOCK2_OFF = 74 ' 门2电锁关闭(在本系统中不存在)
ET_LOCK2_ASSIST_OFF = 75 ' 门2电锁辅助输出关闭(在本系统中不存在)
ET_TTL1_OFF = 76 ' TTL辅助输出1关闭
ET_TTL2_OFF = 77 ' TTL辅助输出2关闭
ET_TTL3_OFF = 78 ' TTL辅助输出3关闭
ET_TTL4_OFF = 79 ' TTL辅助输出4关闭
End Enum
'Enum ResultCode
'{
'SUCCESS = -1, // 成功
'FAIL = -2, // 失败
'ILLEGAL_PARAM = -3, // 参数非法
'INVALID_PARAM = -4, // 参数无效
'NO_MEMORY = -5, // 内存不足
'TIMEOUT = -6, // 超时
'NOT_CONNECT = -7, // 尚未连接
'DISCONNECT = -8, // 连接已断开
'OVER_CONNECT = -9, // 连接太多
'INVALID_OPERATION = -10, // 操作无效
'NO_SUPPORT_OPERATION = -11, // 不支持的操作
'OVER_RANGE = -12, // 超出(内存、数组、记录等)范围
'INVALID_POSITION = -13, // (记录的)位置无效
'RECORD_FULL = -14, // 记录(卡、权限等)已满
'RECORD_EMPTY = -15, // 记录为空
'RECORD_REPEAT = -16, // 记录重复
'RECORD_NOT_EXIST = -17, // 记录不存在
'RECORD_ALREADY_EXIST = -18, // 记录已经存在
'RECORD_BEGIN = -19, // 已到达记录的开头
'RECORD_END = -20, // 已到达记录的未尾
'NO_MORE_RECORD = -21, // 没有更多的记录
'DOOR_NOT_EXIST = -22 // 门不存在
'};
' 获取事件时的参数 nFlag
Public Const GE_ALL = 0
Public Const GE_REMAIDER = 1
Public Function IntIPToStrIP(IntIP As Long) As String
Dim strHexTemp As String
Dim i As Integer
strHexTemp = Hex(IntIP)
For i = 1 To 8
If Len(Trim(strHexTemp)) < 8 Then
strHexTemp = "0" & strHexTemp
End If
Next
IntIPToStrIP = CStr(Int("&H" & Mid(strHexTemp, 1, 2))) & "." & CStr(Int("&H" & Mid(strHexTemp, 3, 2))) & "." & CStr(Int("&H" & Mid(strHexTemp, 5, 2))) & "." & CStr(Int("&H" & Mid(strHexTemp, 7, 2)))
End Function
Public Function StrIPToIntIP(strIP As String) As Long
Dim strArray As Variant
Dim strHexTemp As String
Dim i As Integer
strArray = Split(strIP, ".")
strHexTemp = Hex(CDec(strArray(1)) * CDec("256") * CDec("256") + CDec(strArray(2)) * CDec("256") + CInt(strArray(3)))
For i = 1 To 6
If Len(Trim(strHexTemp)) < 6 Then
strHexTemp = "0" & strHexTemp
End If
Next
StrIPToIntIP = CLng("&H" & Hex(strArray(0)) & strHexTemp)
End Function
Public Function ConvertTimeStr(pTime As TYPETIME) As String
ConvertTimeStr = "20" & Format(pTime.nYear, "00") & "-" & Format(pTime.nMonth, "00") & "-" & Format(pTime.nDay, "00") & " " & Format(pTime.nHour, "00") & ":" & Format(pTime.nMinute, "00") & ":" & Format(pTime.nSec, "00")
End Function
Public Function cHexToDec(ByVal Byte3 As Integer, ByVal Byte2 As Integer, ByVal Byte1 As Integer, ByVal Byte0 As Integer) As String
' Convert an 8 digits hex number to dec
Dim lResult As Double
Dim i As Integer
For i = Len(strHex) + 1 To 8
strHex = "0" & strHex
Next
lResult = Byte3 * 65536
lResult = lResult * 256
lResult = lResult + Byte2 * 65536
lResult = lResult + CDbl(Byte1) * 256
lResult = lResult + Byte0
cHexToDec = CStr(lResult)
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -