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

📄 modmain.bas

📁 瑞立德门禁控制器VB源程 4门网络控制器 产品级源程
💻 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 + -