购彩平台官网

您現在的位置:首頁>>資料下載>>二次開發工具>> 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