📄 eastriver.bas
字号:
Declare Function SetButtonSlice Lib "EastRiver.dll" (ByVal hPort As Long, ByRef ts As TDoorTimePeriods, Optional ByVal Count As Long = 4) As Boolean
' hPort : 串口句柄。
' ts[] : 按钮生效时间段,可设置[0..4]个时段,Right 权限bit为1表示选中:
' //Right.0表示一号读头、Right.1表示二号读头、Right.2表示三号读头、Right.3表示四号读头。
' ArraySize: 此值不使用可设为任意值。
' Count : ts[]中设置的时段个数[0..4]。
'
'设置电锁常开时段,每天可设置四个时段
Declare Function SetConstOpenSlice Lib "EastRiver.dll" (ByVal hPort As Long, ByRef ts As TDoorTimePeriods, Optional ByVal Count As Long = 4) As Boolean
' hPort : 串口句柄。
' ts[] : 电锁常开时间段,可设置[0..4]个时段,Right 权限bit为1表示选中:
' //Right.0表示一号读头、Right.1表示二号读头、Right.2表示三号读头、Right.3表示四号读头。
' ArraySize: 此值不使用可设为任意值。
' Count : ts[]中设置的时段个数[0..4]。
'
'//设置门磁处于常开报警时段,每天可设置四个时段
Declare Function SetCOAlertSlice Lib "EastRiver.dll" (ByVal hPort As Long, ByRef ts As TDoorTimePeriods, Optional ByVal Count As Long = 4) As Boolean
' hPort : 串口句柄。
' ts[] : 常开报警时间段,可设置[0..4]个时段,Right 权限低四bit,某个bit为1表示某个读头选中:
' //Right.0表示一号读头、Right.1表示二号读头、Right.2表示三号读头、Right.3表示四号读头。
' ArraySize: 此值不使用可设为任意值。
' Count : ts[]中设置的时段个数[0..4]。
'
'//设定节假日的开门时段和开门权限等级
Declare Function SetHolidaySlice Lib "EastRiver.dll" (ByVal hPort As Long, ByRef ts As TDoorTimePeriods, Optional ByVal Count As Long = 4) As Boolean
' hPort : 串口句柄。
' ts[] : 节假日开门时段,可设置[0..4]个时段,Right 权限bit为1表示选中:
' //Right.0表示一号读头、Right.1表示二号读头、Right.2表示三号读头、Right.3表示四号读头。
' ArraySize: 此值不使用可设为任意值。
' Count : ts[]中设置的时段个数[0..4]。
'设置超级用户密码开门时段
'function SetSuperUserPwdSlice(hPort: THandle; var ts: array of TDoorTimePeriods; Count: Integer = 4): Boolean; stdcall; external EastRiver.dll_API
Declare Function SetSuperUserPwdSlice Lib "EastRiver.dll" (ByVal hPort As Long, ByRef ts As TDoorTimePeriods, Optional ByVal Count As Long = 4) As Boolean
'
' 节假日的设定
Declare Function SetHoliday Lib "EastRiver.dll" (ByVal hPort As Long, ByVal DayString As String) As Boolean
' hPort :串口句柄
' DayString:一个表示多个日期的字符串。其格式为:"日期0,日期1,日期2,日期3,... ..." 或者 "日期0;日期1;日期2;日期3;... ..."
' DayString 最多可以包含20个日期,每一个日期表示这一天为节假日
' 日期的格式为:"mmdd" 即两个字符的月+两个字符的日,mm为月 dd为日。如4月15日为:"0415"
' 例如:如果设定5月1日,10月1日和12月25日为节假日,DayString="0501,1001,1225"
'
'扩充名单命令中Style参数的取值 只有DOOR_880STYLE 可以与前面五个值中的某一个通过或操作'|'联合在一起
'const
' DOOR_880STYLE = $80; //设置门禁名单是否使用880定义的风格 1-是,0-否
'
'新型门禁机设定带权限和密码的门禁通行卡
Declare Function SetDoorPassCardDE Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Style As Byte, ByVal code As String, Optional ByVal Right As Long = 0, Optional ByVal BeginPass As String = vbNullString, Optional ByVal EndPass As String = vbNullString, Optional ByVal EmpId As String = vbNullString) As Boolean
' hPort :串口句柄
' Card :门禁通行卡卡号
' Code :四个字节密码 每个字节表示一个16进制数字即"0--9,A--F" (必须为四个字节,不能省略)
' Right :表示开门权限和电锁控制(允许值0x00-0xFF)。高半字节(Right.H)电锁控制,低半字节(Right.L)表示权限
' Right.H :四个bit表示四个电锁,某位置1表示本张卡片能开相应的锁。bit0 表示一号电锁,bit1为二号电锁,...
' Right.L :四位可表示0x00-0x0F 16个数字表示本张卡片的权限,这个数字要与设定的开门时段的权限值进行比较
' :如果本张卡片的权限值高于相应时间段的权限值则表示本张卡片在这个时间段可以开门。
'BeginPass,EndPass,EmpId:参见 SetDoorPassCard参数,当Style参数第八位为1时(即Style|=DOOR_880STYLE)这三个参数必须非空,否则可为空(参数忽略)
'如果没有使用DOOR_880STYLE参数则Code参数不能为空
'Style参数的使用参阅SetAllowedCardDE
'
'设置允许考勤卡
Declare Function SetAllowedCardDE Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Style As Byte, ByVal card As String, ByVal EmpId As String, Optional ByVal EmpName As String = "") As Boolean
'功能参数参考SetAllowedCard.
'
'删除允许考勤卡
Declare Function DeleteAllowedCardDE Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Style As Byte, ByVal card As String) As Boolean
'//功能参数参考DeleteAllowedCard
'
'//设置黑名单
Declare Function SetBlackCardDE Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Style As Byte, ByVal card As String) As Boolean
'功能参数参考SetBlackCard
'
'//删除黑名单卡
Declare Function DeleteBlackCardDE Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Style As Byte, ByVal card As String) As Boolean
'//功能参数参考DeleteBlackCard
'
'//删除门禁通行卡
Declare Function DeleteDoorPassCardDE Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Style As Byte, ByVal card As String) As Boolean
'//功能参数参考DeleteDoorPassCard
''::新型门禁机实时控制指令
'获取读卡器感应区上的卡片代码
'function GetCardOnReader(hPort: THandle; ClockNo: PChar; Card: PCardInfo): Boolean; stdcall; external EastRiver.dll_API
'Delcare Function GetCardOnReader lib "EastRiver.dll" (byval hPort as Long ,byval ClockNo as String ,byval Card as
' hPort :串口句柄
' ClockNo :两个数字字符(16进制)机号
' Card : TCardInfo 指针,存储返回结果
' 返回值 :如果操作失败返回false,操作成功返回true
'读门禁机电锁状态
Declare Function ReadDoorStateDE Lib "EastRiver.dll" (ByVal hPort As Long, ByVal ClockNo As String, ByVal DoorState As String) As Boolean
' hPort :串口句柄
' ClockNo :两个数字字符(16进制)机号
' DoorState:大于5个字节的缓冲区,前四个字节表示四把锁的状态,即
' 如果某个字节为'1'表示某个锁为开,为'0'表示某把锁为闭合。
' 返回值 :如果操作失败返回false,操作成功返回true
'实时控制门禁机电锁动作
Declare Function SetDoorOpenDE Lib "EastRiver.dll" (ByVal hPort As Long, ByVal ClockNo As String, ByVal DoorState As String) As Boolean
' hPort :串口句柄
' ClockNo :两个数字字符(16进制)机号
' DoorState:同上ReadDoorState;
' 返回值 :如果操作失败返回false,操作成功返回true
Public PReadData As TReadData
Type TReadData
Verify_Error As Boolean '此记录校验是否正确, 由用户处理,
' 如果记录校验错误且需继续读返回一条记录则需重置为False
cardno As String * 20 '卡号
TimeString As String * 20 '时间
flag As Integer '打卡结果
' flag = 0 : 表示正常卡
' flag.0 = 1 : 非法门禁卡
' flag.1 = 1 : 表示为非法考勤卡
' flag.2 = 1 : 黑名单卡
' flag.12=11 : 非打卡时段存储卡
' flag.3 = 1 : 未用(置0)
' flag.45 : 0-3 对应1-4号读卡器
' flag.6-7 : Mark 标识
Group As Integer '分组
times As Integer '发卡次数
Record_Total As Integer '采集数据的总记录数
Record_Index As Integer '当前记录是第几条记录
End Type
' TDataProcess = function(lpData: Pointer; lpReadData: PReadData): Boolean; stdcall;
'数据处理回调函数 lpData对应ReadAllRecord()的第二个参数,
'lpReadData对应一条记录结构
'如果需要返回下一条记录则返回True, 如果需要中止数据读取可返回False,
'Function TDataProcess() As Boolean
' Dim lpData As Variant
' Dim lpReadData As PReadData
'End Function
'
'
'Sub TTimeLapse()
' Dim lpData As Variant
' Dim microsecond As Integer
'End Sub
'
'
'' TTimeLapse = procedure(lpData: Pointer; microsecond: Integer); stdcall;
''延时回调, 如果使用此函数则应在microsecond 微秒内按时返回,
''否则请不要使用可设设为NULL
'
''按桢读取卡钟所有记录
''function ReadAllRecord(hPort: THandle; lpData: Pointer; DataProcess: TDataProcess; Wait: TTimeLapse = nil): Integer; stdcall; external EastRiver.dll_API
'Declare Function ReadAllRecord Lib "EastRiver.dll" (ByVal hPort As Long, ByVal lpData As Pointer, ByVal DataProcess As TDataProcess, Optional ByVal Wait As TTimeLapse = vbNullString) As Long
''读所有记录调用lpData指向欲传入回调函数DataProcess()的参数指针作为DataProcess()的第一个参数如果不用可设为NULL(0x00)
''传入DataProcess的第二个参数是指向结构体struct TReadData 的指针,数据块包含一条记录
''Wait 延时回调函数,可设为NULL(0x00)则使用dll内默认延时函数。
''返回值: 正常情况下返回非负数表示总共采集的记录数(0 表示本次采集没有记录)
''若出现错误返回负数:-1,-2:串行通信错误
'' -3: 命令字异或校验错误
'' -4 用户中止或接收未完成
'' -8,-9:资源分配错误
'{以下为错误处理函数}
' 取得错误代码 编号
Declare Function GetRecentErrCode Lib "EastRiver.dll" () As Long
' 定义通信错误类型
' 取得最近一次串口操作所接收的原始数据
Declare Function GetRecentReceiveData Lib "EastRiver.dll" () As String
'/带校验码
'取得最近一次串口操作所发送的的数据
Declare Function GetRecentSendCommand Lib "EastRiver.dll" () As String
'带校验码
Declare Function GetDLLTimeString Lib "EastRiver.dll" (ByVal TD As String) As Boolean
'TD 最少25个字节 “时:分:秒 月 日 年”月是英文缩写 如:Apr=四月
'::::以下是新增门禁机指令:::://
'{新型一拖四门禁机 "ER-890" 新增函数}
'{底层端口操作类}
' 发送命令并取得返回字串
Declare Function WriteBack Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Cmd As String, ByVal buf As String) As Boolean
' 发送命令不返回
Declare Function WriteText Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Cmd As String) As Boolean
' 发送命令并判断是否成功
Declare Function WaitOK Lib "EastRiver.dll" (ByVal hPort As Long, ByVal Cmd As String, ByVal Delay As Long) As Boolean
' 读取端口
Declare Function OpenCommPort Lib "EastRiver.dll" (ByVal port As Long, ByVal baudrate As Long) As Long
Declare Sub SetPortPara Lib "EastRiver.dll" (ByVal hPort As Long, ByVal baudrate As Long, ByVal ByteSize As Byte, ByVal Parity As Byte, ByVal StopBits As Byte)
'{底层端口操作类}
Declare Function GetAutoTranslateCardNo Lib "EastRiver.dll" () As Boolean
' 设置是否自动转换IC卡号
Declare Sub SetAutoTranslateCardNo Lib "EastRiver.dll" (ByVal Value As Byte)
' 取得当前通信结束字符
Declare Function GetEndChar Lib "EastRiver.dll" () As Boolean
' 设置通信结束字符
Declare Sub SetEndChar Lib "EastRiver.dll" (ByVal Ch As Byte)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -