您现在的位置:快乐赛车>>资料下载>>二次开发工具>> 250X_SDK_DEMO 2010版
250X_SDK_DEMO 2010版
250X系列考勤机二次开发包及DEMO 2009版,适用于2501、2502、2508等考勤机

1、 概述
(1) 此动态库完全兼容以前各版本的“KQCONNECT_V70.dll”。同时又加上了对2508考勤机的TCP/IP通讯方式的支持。
(2) 通过此动态库,可以方便的与2508、2501考勤机进行数据交换。同时当2508考勤机使用TCP/IP方式联网时,也可用此动态库进行实时监控。
(3) 可支持考勤机用TCP/IP方式通讯和使用串口方式通讯两种通讯模式。
(4) 此动态库可自适应简繁体操作系统,在繁体操作系统中使用时,动态库要与“RM.txt”文件联用,在使用时如有问题,请致电我公司:0755-83740153。
(5) 此控件在运行时,要有“MSWINSCK.OCX”、“MSCOMM32.OCX”控件的支持,所以在使用时,请将这些控件复制到Windows的“System32”文件夹下,并注册。
(6) 通过串口与2501或2508考勤机通讯的常规步骤(3步):
A、 打开串口(setPort);
B、 进行操作,如采集数据等;
C、 关闭串口(DestoryPort)。
2、 2508考勤机实时控制的参考编程流程
(1) 确保考勤机与电脑联网成功,并且考勤机的IP及TCP端口已设置正常(设置方法见另一份文档:附件1_2508考勤机IP地址设置方法.doc)。
(2) 在软件中设置该对象的各种属性:MachAddr、IP、tcpPort、Mode=1;
(3) 连接考勤机,方法见Connect_Net 及SetPort;
(4) 查询TcpState,看它是否等于7,只有等于7了,才可以进行下面步骤;
(5) 修改考勤机日期时间,以测试考勤机是否通讯正常,同时也可以确保各个考勤机的时钟与管理电脑同步;(注:此步骤也可省略)
(6) 设置OpenRealtime属性等于True;
(7) 启动定时器,将定时器的间隔时间可设为20MS或更小,在定时器中轮流查询RealDataNum 和RealErrorNum属性,以查看当前是否有数据传回,及是否有错误发生。
(8) 如果RealDataNum>0,则使用getPosToHostData获取当前数据,并存入数据库中,同时根据其他条件做出判断,组织需要下发到考勤机上的控制信息,使用setCardFlag方法下发到考勤机中。
(9) 如果想要停止实时控制,请将OpenRealtime属性设置为False;
(10) 如果不再与考勤机通讯,请断开与考勤机的连接。
(11) 在做完了上面的流程之后,也可以对实时过程进行更多的优化,但这不是必须的,可以做的优化有:
A、 由于考勤机在网络极度繁忙或线路不通时或电脑死机时会自动转到脱机状态,而脱机时打卡数据是存在机器内部的,所以在开启实时控制软件时,最好先采集脱机数据,甚至可以考虑在打卡空闲时定时采集脱机数据(采集策略根据具体情况而定)。
B、 为了能保证考勤机在脱机后能迅速转成实时模式,建议在定时器中,检测一下每台考勤机最后上传数据的时间,如果这个时间超过了10秒钟,就执行一次SetStorageModel函数,将考勤机设为实时上传模式。
(12) 定时器中的例子代码如下:
'在定时器中接收实时传上来的数据,并且下发控制信息给机器
Private Sub Timer1_Timer()
Static intCount As Long

Dim intErrNo As Integer
Dim strErrorData As String

Dim intMach As Integer
Dim StrPhyCardID As String
Dim strDate As String
Dim strTime As String

Dim Index As Integer '2008-12-24加

For I = 0 To intMachCount - 1
'接收数据
If Kq(I).RealDataNum > 0 Then
intCount = intCount + 1
If Kq(I).getPosToHostData(intMach, StrPhyCardID, strDate, strTime) Then

Index = getIndex(intMach)
If Index >= 0 Then
'''在这里插入处理物理卡号的逻辑的代码 '
'在实际应用中,需要改掉下面这句
Call Kq(Index).setCardFlag(intMach, 1, 1, 1, StrPhyCardID, "No:" & intCount & "次刷卡")
End If
Me.lstData.AddItem Right(" " & intCount, 3) & " " & intMach & " " & StrPhyCardID & " " & strDate & " " & strTime
End If
End If
'通讯错误
If Kq(I).RealErrorNum > 0 Then
If Kq(I).getRealtimeError(intMach, intErrNo, strErrorData) Then
Me.lstText.AddItem "实时错误,机号:" & intMach & ",错误号:" & intErrNo & ",描述:" & strErrorData
End If
End If
Next I
'Me.lstData.AddItem intCount & "," & Now
End Sub
'根据机号,查找该机器在数组中的下标
'返回值:如果找到,则返回下标,否则返回-1
Function getIndex(ByVal intMach As Integer) As Integer
For I = 0 To intMachCount - 1
If Kq(I).MachAddr = intMach Then
Exit For
End If
Next I
If I < intMachCount Then
getIndex = I
Else
getIndex = -1
End If
End Function
二、 属性说明
1、 版本 Ver
(1) 功能:指示当前控件的版本号。
(2) 类型及常用取值:String型。
(3) 操作权限:设计时可读,运行时可读。
(4) 注意事项:由于此控件会经常更新,使用时请注意此属性值。
2、 联网通讯方式 Mode
(1) 功能:指示当前控件所使用的联网通讯方式,此方式需用与考勤机上的设置一致。
(2) 类型及常用取值:枚举型,取值为0时,表示通过串口进行通讯;取值为1时,表示通过TCP/IP方式进行通讯。
(3) 操作权限:设计时可读可写,运行时可读可写。
(4) 注意事项:应正确设置此属性,否则不能通讯。
3、 考勤机地址 MachAddr
(1) 功能:当前控件所联接的考勤机地址。
(2) 类型及常用取值:int型,取值范围:1-254。
(3) 操作权限:设计时可读可写,运行时可读可写。
(4) 注意事项:
(5) 当Mode=0时,此属性可以不赋值;
(6) 当Mode=1时,由于有几个内部函数使用到此属性,所以必须赋值。
4、 IP地址 IP
(1) 功能:,当Mode=1时,指示考勤机的IP地址。
(2) 类型及常用取值:string型,需符合IP的编码规范。
(3) 操作权限:设计时可读可写,运行时可读可写。
5、 TCP端口 TcpPort
(1) 功能:当Mode=1时,指示考勤机上进行TCP连接的端口号。
(2) 类型及常用取值:Long型,取值范围为:1—65535。
(3) 操作权限:设计时可读可写,运行时可读可写。
(4) 注意事项:
(5) 为了编程方便,一般有多台机时,此端口号最好取相同的值,一般取值为1001或者8000。
(6) 此端口号的设置应与考勤机所设置的端口号一致。
6、 TCP连接状态 TcpState
(1) 功能:当Mode=1时,指示当前的TCP连接的状态。
(2) 类型及常用取值:枚举型,取值为0---9。
0 缺省的。连接已关闭
1 打开
2 侦听
3 连接挂起
4 识别主机
5 已识别主机
6 正在连接
7 已连接
8 同级人员正在关闭连接
9 错误

(3) 操作权限:设计时不可读不可写,运行时只读。
(4) 注意事项:在TCP/IP通讯方式下,只有此属性为7时,才能与考勤机进行通讯。
7、 是否打开实时通讯 OpenRealtime
(1) 功能:查询或设置当前考勤机的存储模式是否为实时上传模式。此功能只适用于2508考勤机采用TCP/IP通讯模式时。
(2) 类型及常用取值:布尔型。
(3) 设置为False时,表示考勤机器为脱机存储模,此时在考机上刷卡时,软件不会同步接收数据。
(4) 设置为True时,软件会同时将考勤机的存储模式改为实时上传方式,此时,在考勤机上刷卡时,软件可同步接收刷卡数据,并下传控制指令。
(5) 操作权限:设计时只读,运行时可读可写。
(6) 注意事项:
(7) 设置为True时,请确保Mode=1,并且已同考勤机建立TCP连接(即:TcpState=7),否则会报错。
(8) 请参考实时控制的编程流程。
8、 考勤机上传的数据个数 RealDataNum
(1) 功能:表示考勤机上传的数据个数。
(2) 类型及常用取值:整型,2字节。
(3) 操作权限:设计时只读,运行时只读。
(4) 注意事项:
A、 一般查询此数值,如果不为0,则表示有打卡数据,此时,可以用getPosToHostData函数得到当前的打卡数据
9、 与考勤机实时通讯时的错误个数 RealErrorNum
(1) 功能:表示与考勤机实时通讯时的错误个数。
(2) 类型及常用取值:整型,2字节。
(3) 操作权限:设计时只读,运行时只读。
(4) 注意事项:
A、 一般查询此数值,如果不为0,则表示有错误数据,此时,可以用getRealtimeError函数得到当前的错误描述

三、 实时通讯时的几个函数(只对2508考勤机有效)
1、 取得考勤机的刷卡事件 getPosToHostData
(1) 函数原型:
getPosToHostData(ByRef intMach As Integer, ByRef strPhyCardID As String, ByRef strDate As String, ByRef strTime As String) As Boolean
(2) 参数说明:
A、 intMach,int型,2字节,机器地址;
B、 strPhyCardID,string型,物理卡号,十位十进制表示;
C、 strDate,string型,刷卡日期,以考勤机上的日期为准,格式为“yyyy-mm-dd”;
D、 strTime,string型,刷卡时间,以考勤机上的日期为准,格式为“HH:mm:ss”;
(3) 注意事项:
A、 此事件产生的前提是:Mode=1、OpenRealtime=true、TcpState=7,如果刷卡产生不了此事件,请从以上三个方面查找原因;
B、 在此事件的处理过程中,应使用方法setCardFlag()下传控制指令给考勤机,这样才能完成一次实时应答。
C、 实时通讯中,有时会产生错误,这些错误可以用另一个函数来获得:getRealtimeError,一般可以将这些错误记录成日志,以备查看。
(4) 请参考实时控制的编程流程。
2、 软件下发卡状态 setCardFlag
方法原型: setCardFlag(ByVal intMachAddr As Integer, _
ByVal intCardFlag As Integer, _
Optional ByVal intBuzzer As Integer = 1, _
Optional ByVal intRelay As Integer = 1, _
Optional ByVal strRow1 As String = "", _
Optional ByVal strRow2 As String = "") As Boolean
参数: 6个:
intMachAddr,机号
intCardFlag,卡标志,取值为1—3;1—有效卡;2—重复刷卡;3—无效卡
intBuzzer, 蜂鸣器响的次数,取值范围 0--6
intRelay,继电器响的次数,取值范围 0--6
strRow1,考勤机屏幕上第一行要显示的字符串,最多7个汉字或14个英文字符;
strRow2,考勤机屏幕上第二行要显示的字符串,最多7个汉字或14个英文字符;
返回值: 布尔值True成功,False失败
备注:此方法是用在实时通讯时接到一个刷卡事件之后,向考勤机下发卡标志用的。请参考实时控制的编程流程。
3、 软件快速下发卡状态 setCardFlag_Fast
方法原型: Function setCardFlag_Fast( _
ByVal intBuzzer As Integer, _
ByVal intRow1_Flag As Integer, _
ByVal strRow2 As String) As Boolean
参数: 3个:
intBuzzer 蜂鸣器响的次数,取值范围 0--5
intRow1_Flag  第一行要显示的字符串标志,0—表示空串;1—OK;2—重复;3—无此卡;4—禁止。
strRow2 第二行要显示的字符串
返回值: 布尔值True成功,False失败
备注:此方法实际上是setCardFlag函数的简化版,在使用时请根据需要选用。

4、 取得实时通讯出错事件 getRealtimeError
(1) 触发条件:在实时控制中,出现通讯错误时触发。
(2) 函数原型:
A、 getRealtimeError(ByRef intMach As Integer, ByRef intErrNo As Integer, ByRef strData As String)
(3) 参数说明:
A、 intMach,int型,机号
B、 intErrNo,int型,错误代号;
C、 strData,string型,错误数据或错误描述。
(4) 常用取值见下表:
错误码 错误描述 产生原因分析 解决办法
1 上传数据校验错误 可能的原因有:1、网络干扰;2、考勤机异常;3、其他操作异常。
2 日期时间格式错误 考勤机产生故障等 视出现频率而定,如步率高,则换机器或检查网络。
3 未接到考勤机返回的确认信号 由于考勤机上传一条刷卡数据后,在2秒内必须接到软件下传的控制信息,之后,考勤机会再次返回一个确认信号给软件。所以出现此问题可能是:1、网络堵塞;2、电脑CPU过忙;3、考勤机通讯不稳定。
4 考勤机返回的确认信号校验错 同3
-1 其他未知错误 在接收考勤机上传的数据时,如产生未知错误时发生。
5 其他 下传控制指令时出现未知错误

(5) 注意事项:
A、 一般读到此出错描述之后,,应加入显示或存储出错信息的代码,以确保实时通讯过程的状态能保留下来。
5、 切换实时/脱机模式SetStorageModel
方法原型:
Function SetStorageModel(ByVal varAddr As Integer, Optional ByVal intMode As Integer = 1) As Boolean
参数: 2个
varAddr,考勤机地址
intMode ,整型,1--表示实时;2--表示脱机
返回值: 没有意义
备注: 在设置OpenRealtime属性时实际上内部就用了本函数。本函数的返回值没有意义。
四、 其他常规函数:
1、 建立与考勤机的TCP连接 Connect_Net
方法原型:
Connect_Net(ByVal sIP As String, Optional ByVal lPort As Long = 1001) As Boolean
参数: 2个
sIP,考勤机的IP地址,格式为:999.999.999.999
lPort,端口号,可选参数,默认为:1001
返回值: 布尔值True成功,False失败
备注: 此方法也可以用SetPort方法来代替。此方法只对内置有TCP/IP通讯模块的考勤机有效。

另外,为了方便在实时监控时,提高此函数的效率,也可以使用此函数的无返回值方法,它的原型是:Connect_Net_Void(ByVal sIP As String, Optional ByVal lPort As Long = 1001)

2、 断开与考勤机的TCP连接 Disconnect_Net
方法原型: Disconnect_Net() As Boolean
参数: 无
返回值: 布尔值True成功,False失败
备注: 此方法也可以用DestoryPort方法来代替。此方法只对内置有TCP/IP通讯模块的考勤机有效。
注意:对于TCP连接模式,不要经常关闭连接,只有在所有操作都进行完了之后,再关闭。因为重建一次TCP连接根据网络忙碌程度可能要花几秒的时间。
3、 打开串口或建立TCP连接 SetPort
方法原型:SetPort(ByVal intCom As Integer) As Boolean
功能说明: 如果是串口模式,则设置并打开串口;
如果是TCP模式,则连接考勤机
参数: intCom 串口号
返回值: 布尔值True成功,False失败
4、 关闭串口或断开TCP连接 DestoryPort
方法原型:DestoryPort() As Boolean
功能说明: 如果是串口模式,则关闭串口;
如果是TCP模式,则断开与考勤机的TCP连接
参数: 无
返回值: 布尔值True成功,False失败
注意:对于TCP连接模式,不要经常关闭连接,只有在所有操作都进行完了之后,再关闭。因为重建一次TCP连接根据网络忙碌程度可能要花几秒的时间。
5、 修改考勤机日期时间 ModifyDateTime
方法原型:ModifyDateTime(ByVal VarAddr As Integer, ByVal DDate As String, ByVal TTime As String, ByVal WWeek As Byte) As Boolean
功能说明: 修改日期时间,另外此方法经常用来测试考勤机是否通讯正常。
参数: VarAddr为机器地址
Ddate为日期
Ttime为时间
Wweek为星期(做考勤时不用)
返回值: 布尔值True成功,False失败
例子:
DDate = Right(Year(Date), 2) & Right(("00" & Month(Date)), 2) & Right(("00" & Day(Date)), 2)
TTime = Right(("00" & Hour(Time)), 2) & Right(("00" & Minute(Time)), 2) & Right(("00" & Second(Time)), 2)
WWeek = "01"
Mreturn = KQ.ModifyDateTime(CInt(Trim(TxtAddress.Text)), DDate, TTime, WWeek)
If Mreturn Then
Sta_Info.SimpleText = "修改日期成功"
Else
Sta_Info.SimpleText = "修改日期不成功"
End If

6、 向考勤机中发卡 CardSendToMachine
方法原型:CardSendToMachine(ByVal varAddr As Integer, ByVal strPhyCard As String, ByVal strCardID As String, ByVal strName As String, ByVal WeekFlag As Integer, ByVal TimeSect As String) As Boolean
功能说明:PC下传一条发卡名单
参数: 共6个
VarAddr 为机器地
strPhyCard 为物理卡号,十进制数表示
strCardID 为工号,8位表示
strName 姓名
WeekFlag 周允许状态,此参数暂时不用传"00"就可以了
TimeSect 时间段,此参数暂时不用传"00000000"就可以了
返回值: 布尔值True成功,False失败
例子:KQ.CardSendToMachine(CInt(TxtAddress.Text), TxtCardNum.Text, Trim(TxtNo.Text), "徐荣华", "00", "00000000")

7、 从考勤机中退卡 ClearName
方法原型:ClearName (ByVal VarAddr As Integer, ByVal PhyNum As String) As Boolean
功能说明:用来从考勤机的发卡名单中清除某张卡的发卡记录
参数: VarAddr为机器地址
PhyNum为物理卡号
返回值: 布尔值True成功,False失败
例子: KQ.clearname(CInt(TxtAddress.Text), Trim(TxtCardNum.Text))

8、 采集打卡数据总条数 GatherRecordSum
方法原型:GatherRecordSum(ByVal VarAddr As Integer, VarRecordCount As Long, VarDescritption As String) As Boolean
参数: VarAddr为机器地址
VarRecordCount返回的记录总数
VarDescription描述,用此参数可以查看错误信息
返回值: 布尔值True成功,False失败
例子: GatherRecordSum VarAddr, RecordSum, "ok"
9、 采集打卡数据 GatherData
方法原型:GatherData(ByVal VarAddr As Integer, ByVal VarFilePath As String, VarFileName As String, VarDescription As String, BackRecordSum As Long, Optional SleepDate As Long = 2,Optional phStrCardFlg As Long = 0, Optional IsFullYear As Boolean = False) As Boolean
功能说明:PC采集考勤机中的打卡数据,并存入文本文件中
参数: VarAddr为机器地址
VarFilePath文件路径
VarFileName文件名
VarDescription描述,用此参数可以查看错误信息
BackRecordSum 返回记录数
SleepDate 延时设置。(在局域网中采集可能要改变其参数)
phStrCardFlg 输出的物理卡号,默认0十六进制,1为十进制
IsFullYear  为真,表示输出完整年份,如2005,否则输出05
例子: GatherData(TxtAddress.Text, App.Path, "DataRecordSet.txt", "OK", RecordSum, SleepDate.Text)
文件格式如下:三位机器地址+十位物理卡号+(6或8)位年月日+6位时分秒.
执行完此函数之后,可以使用CheckData函数检验一下数据的正确性。
10、 采集发卡数据总条数 GtherSendCardSum
方法原型:GtherSendCardSum(ByVal VarAddr As Integer, VarRecordCount As String) As Boolean
参数: VarAddr为机器地址
VarRecordCount返回的记录总数
返回值: 布尔值True成功,False失败
例子: GatherSendCardSum VarAddr, RecordSum
11、 采集发卡数据 GatherSendCardData
方法原型:GatherSendCardData(ByVal varaddr As Integer, ByVal VarFilePath As String, ByVal VarFileName As String, VarDescription As String, BackRecordSum As Long, Optional ByVal SleepDate As Long = 15, Optional ByVal phStrCardFlg As Long = 0) As Boolean
功能说明:PC采集发卡数据,并存入文本文件中.
参数: VarAddr为机器地址
VarFilePath文件路径
VarFileName文件名
VarDescription描述,用此参数可以查看错误信息
BackRecordSum记录数
SleepDate延时,单位是毫秒,在局域网中采集可能要将其改大一些一般为10—100之间)
phStrCardFlg 输出的物理卡号,默认0十六进制,1为十进制,此参数可选,为了与以前兼容
返回值: 布尔值True成功,False失败
例子: KQ.GatherSendCardData(TxtAddress.Text,App.Path,"NameList.txt", StrDescription, RecCount1, SleepDate.Text)
文件格式如下:十位物理卡号+8位卡号(即工号)+四个汉字姓名
12、 清除考勤机全部打卡数据 ClearRecord
方法原型:ClearRecord(ByVal VarAddr As Integer) As Boolean
功能说明:清除考勤机全部打卡数据
参数: VarAddr为机器地址
返回值: 布尔值True成功,False失败
例子: KQ.ClearRecord(CInt(Trim(TxtAddress)))
13、 清除考勤机全部发卡名单 ClearNameList
方法原型:ClearNameList(ByVal VarAddr As Integer) As Boolean
功能说明:清除考勤机全部发卡名单
参数: VarAddr为机器地址
返回值: 布尔值True成功,False失败
例子: KQ.ClearNameList(CInt(Trim(TxtAddress)))
14、 读物理卡号 ReadCardNum
方法原型:ReadCardNum(ByVal VarAddr As Integer, ByRef AllStr As String) As String
功能说明:读取最近一次打卡的物理卡号(即读卡)
参数: VarAddr为机器地址
AllStr读出的全部信息。(内部使用)

返回值: 物理卡号
例子: KQ. ReadCardNum(CInt(Trim(TxtAddress)), AllStr)
15、 查找物理卡号是否在机器中已发过卡 FindCard
方法原型:FindCard(ByVal VarAddr As Integer, ByVal PhyNum As String, CardYN As Boolean) As Boolean
功能说明: 查找此物理卡号是否在机器中已发过卡
参数: VarAddr为机器地址
PhyNum 物理卡号 (传进十进制的物理卡号)
CardYN是否在机器中 (返回标志,True存在,False不存在)
返回值: 布尔值True成功,False失败
例子:FindCard(CInt(TxtAddress.Text), Trim(TxtCardNum.Text), CardYN)

16、 发送打卡数据 SendRecordToMachine
方法原型:SendRecordToMachine(ByVal varAddr As Integer, ByVal PhyNum As String, ByVal DateTime As String, Optional ByVal FlagByte As String = "FF", Optional ByVal KeepByte As String = "99") As Boolean
功能说明:发送一条打卡数据到考勤机上。
参数: VarAddr为机器地址
PhyNum 物理卡号 (传进8位十六进制的物理卡号)
DateTime年月日时分秒,格式为:yymmddhhmmss
FlagByte特征字节,默认为FF
KeepByte保留字节,默认为99
返回值: 布尔值True成功,False失败
例子:KQ.SendRecordToMachine(TxtAddress.Text,TxtCardNum.Text, "051018121235”, "1", "2")
17、 修改考勤机地址 RepairAddress
方法原型:RepairAddress (ByVal VarAddr As Integer, ByVal NewAddress As Integer) As Boolean
功能说明:修改考勤机地址
参数: VarAddr为机器旧地址
NewAddress机器新地址
返回值: 布尔值True成功,False失败
例子:KQ.RepairAddress(CInt(TxtAddress.Text), CInt(TxtNewAddr.Text))
18、 设置响铃时间点 SetClock
方法原型:SetClock(ByVal VarAddr As Integer, ByRef ITime() As Date, ByVal Sect As String) As Boolean
功能说明:下传响铃时间表总共为30段一次下发10段,分三次下发同SECT这个参数决定。
参数:VarAddr为机器地址
Itime时间
Sect时间段参数1、表第一个10段,2、表第二个10段,3、第三个10段。

返回值:布尔值True成功,False失败
另外请参见:SetClockStr函数,它可以接受字符串参数。
例子:
Dim TimeArry(10) As Date
Dim i As Integer
Dim IHour As String, IMinute As String
Dim MySecond As Long

For i = 0 To 9
If TxtHour(i) <> "" Then
IHour = TxtHour(i).Text
Else
IHour = "0"
End If
If TxtMin(i) <> "" Then
IMinute = TxtMin(i).Text
Else
IMinute = "0"
End If
TimeArry(i) = CDate(IHour + ":" + IMinute)
Next

If KQ.SetClock(CInt(TxtAddress.Text), TimeArry, 1) Then
Sta_Info.SimpleText = "成功"
Else
Sta_Info.SimpleText = "不成功"
End If
End Sub
19、 设置响铃时间点SetClockStr
方法原型:SetClockStr(ByVal varAddr As Integer, ByVal strTime As String, ByVal Sect As String) As Boolean
功能说明:下传响铃时间,表总共为30段,一次下发10段,如果要下发30段,则要分三次下发。下发哪一段由SECT参数决定。此数功能与SetClock一样,只不过传的参数是字符串。
参数:VarAddr为机器地址
strTime时间字符串,格式为两位小时+两位分钟;
例如:”0800120513301400180020302325”,代表8:00、12:05、13:30、14:00、18:00、20:30、23:25。
Sect时间段参数,可取的值为[1,2,3];取1、表示第一个10段;取2、表示第二个10段;取3、表示第三个10段。

返回值:布尔值True成功,False失败

例子:

Dim i As Integer
Dim IHour As String, IMinute As String
Dim MySecond As Long
strTime = ""
For i = 0 To 9
If TxtHour(i) <> "" Then
IHour = Right("00" & Trim(TxtHour(i).Text), 2)
Else
IHour = "00"
End If
If TxtMin(i) <> "" Then
IMinute = Right("00" & Trim(TxtMin(i).Text), 2)
Else
IMinute = "00"
End If
strTime = strTime & IHour & IMinute
Next

If KQ.SetClockstr(CInt(TxtAddress.Text), strTime, Text7.Text) Then
Sta_Info.SimpleText = "响铃时间设置成功!"
Else
Sta_Info.SimpleText = "响铃时间设置失败!"
End If


20、 清除新卡标志 ClearFlag
方法原型:ClearFlag(ByVal VarAddr As Integer) As Boolean
功能说明:清除新卡标志。在考勤机采用串口方式通讯时,此方法一般与ReadCardNum方法联用,实现实时监控功能。
参数:
VarAddr为机器地址
返回值: 布尔值True成功,False失败
例子: ClearFlag(18)
21、 下传开机画面 SendPictureMach
方法原型:SendPictureMach(ByVal VarAddr As String, ByVal BmpFilePath As String) As Boolean
功能说明:下传开机画面,由于此方法所需的位图文件需要特殊方法制作,所以此方法仅限出厂前使用,不提供给用户使用。
参数: VarAddr为机器地址
BmpFilePath文件名

返回值: 布尔值True成功,False失败
例子:KQ.SendPictureMach(TxtAddress.Text, BmpPath)

22、 读取系统参数 ReadSystemParameter
方法原型ReadSystemParameter(ByVal VarAddr As Integer, ByRef BackString As String) As Boolean
功能说明: 读取系统参数
参数: VarAddr为机器地址
BackString返回的参数
返回值: 布尔值True成功,False失败
例子:KQ.ReadSystemParameter(TxtAddress.Text, str)
23、 发送短信到考勤机(此函数暂不提供) SendShortMsg
方法原型:SendShortMsg(ByVal varaddr As Integer, ByVal TTime As Integer, ByVal MsgStr As String) As Boolean
功能说明: 发送短信到考勤机(此函数暂不提供)
参数: VarAddr为机器地址
Ttime为显示时长
MsgStr为短信内容
返回值: 布尔值True成功,False失败
例子:
If KQ.SendShortMsg(TxtAddress.Text, Text6.Text, TxtMsg.Text) Then
Sta_Info.SimpleText = " 发送短信成功!"
Else
Sta_Info.SimpleText = "发送短信失败!"
End If
24、 设置(修改)机器的菜单密码 SetMachinePassword
方法原型:SetMachinePassword(ByVal varaddr As Integer, ByVal nPassword As Integer) As Boolean
功能说明:设置(修改)机器的菜单密码(只适用带按键机型)
参数: VarAddr 为机器地址
nPassword 为要设置的密码,最多4位
返回值: 布尔值True成功,False失败
25、 读取机器菜单密码 GetMachinePassword
方法原型:GetMachinePassword(ByVal varAddr As Integer) As Integer
功能说明:读取机器菜单密码(只适用带按键机型)
参数: VarAddr 为机器地址
返回值: 不小于0的整数值,如读取失败,返回-1
26、 修改系统参数 RepairSystemParameter
方法原型:RepairSystemParameter(ByVal VarAddr As Integer, ByVal JDYS As String, ByVal DKYS As String, ByVal TZZ As String) As Boolean

功能说明:修改系统参数
参数: VarAddr为机器地址
JDYS 继电器延时 2 bytes
DKYS 打卡 延时 2 bytes
TZZ 特征字 2 ytes
0B101905040611402900 0100 03E8 000097
0B 10 19 050406 112947 00 0100 0000 0000 7B

0B101905040611420200010003E8 8000 3E
A + 0FH + 19H + 日期、时间、周 + 响铃/开锁延时2bytes + 打卡延时2bytes + 特征字2bytes + 校验

继电器延时为2个字节,前者对应继电器1/s,后者对应继电器2/s,数值均不超过99(63H),打卡延时为2字节,其值小于1440(05A0H),对应24小时以下的延时分钟的数值
特征字: D7 工作模式 0、考勤模式 1、门禁模式
D6 字体设置 0、简体 1、 繁体
D5 响铃允许 0、禁止响铃 1、允许响铃
D4 开锁模式 0、卡||密码 1、卡+密码
D3 认卡模式 0、发卡有效 1、直接有效

返回值: 布尔值True成功,False失败
例子:RepairSystemParameter(CInt(TxtAddress.Text), Right("0000" & TxtY.Text, 4), "0000", JF)
此函数暂不完善,很容易造成机器故障,请慎用此功能(一般使用出厂时设定)。
27、 根据采集回的数据(*.txt),验证数据的正确性CheckData
方法原型:Public Function CheckData( _
ByVal varAddr As Integer _
, ByVal VarFilePath As String _
, ByVal VarFileName As String _
, ByRef VarDescription As String _
, Optional ByVal intDelay As Integer = 24 _
, Optional ByVal phStrCardFlg As Long = 0 _
, Optional ByVal IsFullYear As Boolean = False _
, Optional ByVal strFirstDateTime As String = "2100-01-01 14:00:00" _
, Optional ByVal intTimeSpan As Long = 0 _
) As Integer
功能说明:根据采集回的数据(*.txt),验证数据的正确性,验证规则:
a) 读出当前机器内的数据总数(M),与文本文件中的总数(N)比较,如果(N<M或 M=0),则返回False;
b) 判断数据中的日期时间格式是否合法,如果不是有效的日期时间,则返回False;
c) 判断最后一笔记录的刷卡时间与当前时间的间隔,如果超过intDelay小时,则返回False;
d) 判断首记录的刷卡时间与传入的参考开始时间(strFirstDateTime)的大小,如果首记录的时间大于strFirstDateTime,则返回False.
e) 判断第一条记录和最后一条记录的时间跨度是多少,如果时间跨度 < IntTimeSpan小时,则返回False.
f) 动态判断日期时间是否升序排列,如果不是,则返回False;
g) 此函数一般用在采集完刷卡数据之后。

参数: VarAddr 为机器地址
VarFilePath 文件路径
VarFileName 文件名
VarDescription 描述,用此参数可以查看错误信息
intDelay 合理的时间间隔,单位是小时
phStrCardFlg  此参数可选,表示文本文件中物理卡号的格式。默认值为0表示物理卡号是十六进制,取值为1时,表示物理卡号为十进制。
IsFullYear   此参数可选,表示文本文件中年份的格式。为真,表示完整年份,如2005,否则输出05
StrFirstDateTime 此参数可选,第一条记录的参考时间上限,字符串型,格式为:“yyyy-mm-dd hh:nn:ss”
IntTimeSpan 此参数可选,表示第一条记录和最后一条记录的最小时间跨度,单位为小时
返回值: 整型,
0—表示数据正常;
1— 表示总条数小于机器内的条数; √
2— 表示有乱数据; √
3— 表示最后一笔记录的刷卡时间离现在间隔过长;
4— 日期时间没有按升序排列;
5— 表示机器内是0条数据 √
6— 表示首记录的时间超出范围
7— 表示第一条记录和最后一条记录的时间跨度 < IntTimeSpan
9—表示3、4、6中至少发生了两种情况,具体情况可查看VarDescription.
-1,表示其他异常,具体异常可查看VarDescription变量的值。 √
28、 查找物理卡号(FindCard_int)
此函数功能与FindCard函数相同,只是返回值与参数不同。
方法原型:FindCard_int(ByVal varAddr As Integer, ByVal PhyNum As String) As Integer
参数: VarAddr 为机器地址
PhyNum 物理卡号 (传进十进制的物理卡号)
返回值:-1,通讯失败或函数调用失败;0,不存在;1,存在
五、 通用函数 (2008-08-27新加)
1、 十进制转十六进制函数 DecToHex
方法原型:Function DecToHex(ByVal strDec As String, Optional ByVal intBit As Integer = 0) As String
参数: strDec十进制数串,最多可接受14位数
intBit,返回值位数,前面可补0,如果不传参数,则返回全部位
返回值: 为空值,表示失败,否则,成功
例子: strPhyCard = DecToHex(“0007885411”, 8)
2、 十六进制转十进制 HexToDec
方法原型:Function HexToDec(ByVal strHex As String, Optional ByVal intBit As Integer = 0) As String
参数: strHex十六进制数串,最多可接受12位数
intBit,返回值位数,前面可补0,如果不传参数,则返回全部位
返回值: 为空值,表示失败,否则,成功
例子: strPhyCard = HexToDec (“0EA0677B”, 10)
 

 

    快速获得支持

   点击“”简单填写
   资料,您可以就您关注的硬
   件或软件获得相应在线支持。
   电话: 
0755-83740970

 

 

 

快乐赛车 快乐飞艇 快乐飞艇 快乐赛车 快乐赛车 快乐飞艇 快乐赛车 快乐飞艇 快乐飞艇 快乐飞艇