1、采用RS485多机通讯方式。
2、通讯波特率为19200bps
3、使用说明:
使用时,先定义一个对象变量,再创建对象,如下所示:
Dim KQ As Object
Set KQ = CreateObject("DoorConnect2610.Door2610")
之后如果要使用下面的函数,则按以下三步进行:
1) 调用SetPort()设置并打开串口;
2) 进行相关操作;
3) 调用DestoryPort()释放串口;
内容 : 物理卡号 + 年月日时分秒 + 保留字 + 特征字
长度 : 10字节 12字节 1字节 1字节
例如: 0000714558070610123025FF01
物理卡号: 10个十进制数字组成(0—9),其中有两个特殊的物理卡号:“0000000001”和 “0000000002”,“0000000001”表示此记录是开关1的开门记录,,“0000000002”表示此记录是开关2的开门记录。
年月日时分秒: 格式为“yymmddhhnnss”
保留字节: 在V4.0门禁机中未用,恒等于“FF”;在V5.0中,由于增加密码开锁功能,所以此字节意义如下:
0B 输入密码的记录,[物理卡号]记录的是6位密码。
特征字取值: 表示在哪个感应器上刷的卡,取值为00—03,分别表示:
00 二控一 感应器一
01 一控一 感应器一
02 二控一 感应器二
03 一控一 感应器二
内容 :物理卡号 / 逻辑卡号 / 开锁模式 / 周允许状态 / 终止年月日 / 锁1时间段 / 锁2时间段
长度 :10字节 8字节 8字节 7字节 6字节 16字节 16字节
例如: 0000714558/00501204/11000110/1111111/070610/1111000000000000/1111000000000000
1 12 21 30 38 45 62
物理卡号: 10个十进制数字组成(0—9)
逻辑卡号: 8个十六进制数字组成(0—9,A—F)
开锁模式: 由8个字符表示以下内容:
第1个字符,表示锁1是否允许刷卡(0—不允许,1—允许 )
第2个字符,表示锁2是否允许刷卡(0—不允许,1—允许 )
第6个字符,表示是否控制周(0—不控制,1—控制 )
第7个字符,表示是否控制终止日期(0—不控制,1—控制 )
第8个字符,表示是否控制时间段(0—不控制,1—控制 )
第3--5个字符,预留字符,暂时不用
周允许状态:格式为0/1表示的串,总共七个字符,从左向右分别表示周一至周日是否允许(0—不允许,1—允许 )
锁1时间段:格式为0/1表示的串,共计16个字符,分别表示16个时间段是否允许刷卡(0—不允许,1—允许 )
锁2时间段:同锁1时间段
SetPort(ByVal PortNum As Integer) As Boolean
Public Function DestoryPort() As Boolean
Public Function CardSendToMachine(ByVal varAddr As Integer, _
ByVal strEmpID As String, _
ByVal strPhyCardNum As String, _
ByVal intLockCtr1 As Integer, _
ByVal intLockCtr2 As Integer, _
ByVal IsWeek As Integer, _
ByVal IsEndDate As Integer, _
ByVal IsTime As Integer, _
ByVal strWeekValue As String, _
ByVal strEndDateValue As String, _
ByVal strTimeValue1 As String, _
ByVal strTimeValue2 As String _
) As Boolean
varAddr,为机器地址(取值为0—254)
strPhyCardNum,为物理卡号,是一个十位十进制数的字符串
strEmpID,为工号,是一个八位数的字符串
intLockCtr1,锁1是否允许(整形,0--不允许,非0,允许)
intLockCtr2,锁2是否允许(整形,0--不允许,非0,允许)
IsWeek,是否控制周(整形,0--不控制,非0,控制)
IsEndDate,是否控制有效日期 (整形,0--不控制,非0,控制)
IsTime,是否控制时间段 (整形,0--不控制,非0,控制)
StrWeekValue,周控制的值,格式为0/1表示的串,共七个字符,从左向右分别表示周一至周日是否允许
StrEndDateValue,有效日期,格式为"YYMMDD"的字符串
strTimeValue1,锁1时间段控制的值,0/1串,共计16个字符,分别表示16个时间段是否允许刷卡
strTimeValue2,锁2时间段控制的值,格式同strTimeValue1
Public Function ModifyDateTime(ByVal varAddr As Integer, ByVal strDate As String, ByVal strTime As String, ByVal intWeek As Integer) As Boolean
varAddr 为机器地址
strDate,字符串型,格式为"YYMMDD"的日期
strTime,字符串型,格式为"hhmmss"的时间
intWeek,整型,表示星期,取值范围1--7,分别表示周一至周日
Public Function ClearRecord(ByVal varAddr As Integer) As Boolean
varAddr 为机器地址
Public Function ClearNameList(ByVal varAddr As Integer) As Boolean
varAddr 为机器地址
Public Function ClearName(ByVal varAddr As Integer, ByVal strPhyCardNum As String) As Integer
varAddr,为机器地址(取值为0—254)
strPhyCardNum,为物理卡号,是一个十位十进制数的字符串
说明:此函数返回的“已退卡总数”如果过多,例如大于200条,则有必要对门禁机做一次存储器整理,这样可以提高门禁机中存储器的利用率。
Public Function ReadCardNum(ByVal varAddr As Integer, Optional ByRef AllStr As String) As String
varAddr,为机器地址(取值为0—254)
AllStr,可选参数,读出的全部信息。(内部使用的预留参数,暂无用处)
Public Function OpenLock(ByVal varAddr As Integer, ByVal intLockNo As Integer) As Boolean
varAddr,为机器地址(取值为0—254)
intLockNo,锁号,整型,取值为1,2,3;分别表示锁1,锁2,外接继电器
Public Function getLockStatus(ByVal varAddr As Integer, ByRef strStatus As String) As Boolean
varAddr,为机器地址(取值为0—254)
strStatus----返回参数,两位字符串,第一位为锁1状态,第二位为锁2状态;(0--关,1--开)
Public Function getCardLockStatus(ByVal varAddr As Integer, ByRef strStatus As String) As Boolean
varAddr,为机器地址(取值为0—254)
strStatus,返回参数,14位,前10位是物理卡号,第11位为锁1状态,第12位为锁2状态;(0--关,1--开),第13位为锁模式(1,一控一;2,二控一),第14位为当前感应器(1,感应器一;2,感应器二)
Public Function GatherRecordSum(ByVal varAddr As Integer) As Long
varAddr,为机器地址(取值为0—254)
Public Function GatherSendCardSum(ByVal varAddr As Integer) As Long
varAddr,为机器地址(取值为0—254)
最后修改时间:
Public Function SetTimeGroup(ByVal varAddr As Integer, ByVal intTotal As Integer, ByVal intOrder As Integer, ByVal strTime As String, Optional ByVal intCardOrPassword As Integer = 0) As Boolean
varAddr,为机器地址
intTotal,整型,预计下发的时间段总数,一般取值为1--16
intOrder,整型,本次下发的时段序号,取值为0---15
strTime,以字符串表示的时间段,格式为:HHMM-HHMM
intCardOrPassword--此参数是
注意:门禁机可以存储16个时间段,此函数一次下发一个时间段,如要传16个段,则用循环实现。
最后修改时间:
Public Function GetTimeGroup(ByVal varAddr As Integer, ByRef strTime As String
, Optional ByRef strCardOrPassword As String = "Null") As Boolean
varAddr,为机器地址
strTime------------返回参数,以字符串表示的时间段共64个字符,每四个字符表示一个时间段,格式为:hhmmhhmm
strCardOrPassword--可选的返回参数,表示开门方式,共16个字节,每个字符表示一个时间段的开门方式。每个字符的取值及意义为:0-卡或密码,3--卡加密码
注意,在使用时,需要将这64个字符串解析出来形成16个时间段,在解析时,如果有“FFFF”这样的时间数据,则认为此段未设置。
Optional ByVal interval As Long = 100 _
varAddr,为机器地址
VarFilePath,文件路径
VarFileName,文件名
VarDescription,描述,用此参数可以查看错误信息
BackRecordSum,长整型,记录数
SleepDate,长整型,延时设置。在局域网中采集可能要改变其参数,此参数可选,,默认 5
PhStrCardFlg,布尔型,输出的物理卡号格式,取值为True,则用10位十进制表示,为False则用8位十六进制表示,此参数可选,默认 True
interval ,采集两个包之间的间隔时间,单位为毫秒,一般设为20即可,如果想要在采集的时候能响应刷卡,则可设为100或150. 此参数是
注意,interval参数,对于版本号为V
注意,采集的数据在文本文件中,一行存储一条记录,格式见2.2门禁机内采集回的发卡记录格式
最后修改时间:
Public Function GatherData(ByVal varAddr As Integer, _
ByVal VarFilePath As String, _
ByVal VarFileName As String, _
ByRef VarDescription As String, _
ByRef BackRecordSum As Long, _
Optional ByVal SleepDate As Long = 2, _
Optional ByVal phStrCardFlg As Boolean = False, _
Optional IsFullYear As Boolean = False , _
Optional ByRef intGatherRecordCount As Long = -1, _
Optional ByVal interval As Long = 100 _
) As Boolean
varAddr,为机器地址
VarFilePath,文件路?
VarFileName,文件名
VarDescription,描述,用此??可以查看??信息
BackRecordSum,???
SleepDate,延??置,单位是秒。(在局域?中采集可能要改?其??)
PhStrCardFlg,布尔型,输出的物理卡号格式,取值为True,则用10位十进制表示,为False则用8位十六进制表示,此参数可选,默认 True
IsFullYear,布尔型,输出的年份格式,False 两位年份,True 四位年份,此参数可选,默认False
IntGatherRecordCount,实际采集出的条数。此参数是
interval ,采集两个包之间的间隔时间,单位为毫秒,一般设为20即可,如果想要在采集的时候能响应刷卡,则可设为100或150. 此参数是
注意,interval参数,对于版本号为V
注意,采集的数据在文本文件中,一行存储一条记录,格式见2.1门禁机内采集回的打卡记录格式
Public Function FindCard(ByVal varAddr As Integer, ByVal strPhyNum As String, ByRef strSendCard As String, Optional ByVal intSleep As Integer = 2) As Boolean
varAddr,为机器地址(取值为0—254)
strPhyNum,待查找的物理卡号
strSendCard,输出参数,字符串型,可以带出来发卡数据,为空,表示没找到;
否则,是77个字符,分别是:
物理卡号(10字节) / 卡号(8字节) / 开锁模式(8字节) /周控制(7字节) / 终止日期(6字节) / 锁1时间段(16字节) / 锁2时间段(16字节)
' intSleep,整型,命令等待时间,一般设为发卡总条数的1/1000秒,这是一个可选参数,默认值为2
Public Function SetLockDelayTime(ByVal varAddr As Integer, ByVal Secon1 As Integer, ByVal Secon2 As Integer, ByVal Secon3 As Integer) As Boolean
varAddr,为机器地址(取值为0—254)
Secon1,整型,锁1延时(取值范围:0---60),1个单位约是0.2秒
Secon2,整型,锁2延时(取值范围:0---60)
Secon3,整型,外接继电器延时(取值范围:0---60)
Public Function getDateTimeDelay(ByVal varAddr As Integer, ByRef strResult As String) As Boolean
varAddr,为机器地址(取值为0—254)
strResult----返回参数,21位,前12位是年月日时分秒,第13位开始每三位是一个继电器延时秒数
Public Function GetMachVer(ByVal varAddr As Integer, ByRef strMachVer As String) As Boolean
varAddr,为机器地址(取值为0—254)
strMachVer,返回参数,以字符串表示的版本信息,共16个字符,分别表示产品类型,最后修改日期,版本号。
例如:返回 “2610070530040000”,表示类别为:2610,最后修改日期为: