原帖:http://topic.csdn.net/u/20101120/08/29c75bcd-b90a-4a13-a4c0-8baa25771ad0.html
调用流程:
1. 打开串口 OpenCommPort
2. 连机 CallClock
3. 调用相关函数
4. 关闭串口 DisConnectClock
不要用 ConnectClock ,这个函数有问题
只要按照这4个步骤去调用,所有的函数都可以正常使用
接口文档:
Lanben10.dll作为上层电脑软件与底层卡钟的接口,由Delphi5.0完成。
接口自定义结构:
type
PClockInfo=^TClockInfo;
TClockInfo=record
clock_id: Byte;
Fireware: Double;
RunMode: Integer;
port, baudrate, clock_type: integer;
end;
外部调用定义:例: pclk: PClockInfo;
pclk.Port 串口号
pclk. clock_id 卡钟号
pclk. Fireware
pclk. RunMode 运行模式
pclk. Baudrate 波特率
pclk. clock_type 卡钟类型
在使用接口内的函数前,请先使用 SetClockParam 对PclockInfo进行设置
type
PICRecord=^TICRecord;
TICRecord=packed record
Card: array[0..15] of char; 卡号字符串
timeString: array[0..15] of char; 14位刷卡时间字符串,格式为:yyyymmddhhnnss
mark: Integer; 打卡标识
flag: Integer; 记录类型
end;
外部调用定义: 例: Buf: array of TICRecord;
所有函数公共传入参数:
hPort 必需的。Thandle型,传入的通讯口号。可为下列之一:1,2,3,4
BaudRate 必需的。 Thandle型,传入的通讯口号速率。为:19200
ClockNo 必需的。 Byte型,传入的机器号。范围为:0-252
BroadCast 可选的。Boolean型,调用时不必传入。只能传入False
function DisConnectClock(hPort: THandle):Boolean;stdcall;
说明:断开联接的设备及关闭端口
返回值:布尔型(Boolean)
function CheckConnectClock(hPort: THandle; ClockNo: Byte; BroadCast: Boolean=False): Byte; stdcall;返回值:Byte0—联机不成功;1—联机成功
说明:返回机器运行模式
function TestCallClock(hPort: THandle; ClockNo: Byte; ATimeOut: Integer=0): Byte; stdcall;返回值:Btye说明:返回机器运行模式。0—联机不成功,1—联机成功
参数
AtimeOut 必需的,整型,响应超时
function ResetClock(hPort: THandle): Boolean;stdcall;返回值:Boolean说明:将卡卡复位到出厂状态,复位将清除卡钟内所有数据及下载名单。
function GetClockParam(hPort: THandle; var DeviceType: Integer; var Fireware: Double; var ICID: Boolean): Boolean; stdcall返回值:Boolean 说明:取得卡钟型号参数。适用于Delphi,外部调用请使用PclockInfo结构,详细请看PClockInfo
参数
Devicetype 必需的。取得接口内的公共变量的值.返回值为55
Fireware 必需的。取得接口内的公共变量的值.返回值为1.0。
ICID 必需的.取得接口内的公共变量的值.返回值为False
function SetClockParam(hPort: THandle; DeviceType: Integer; Fireware: Double; ICID: Boolean): Boolean; stdcall;返回值:Boolean 说明:用于对接口内的公共变量进行赋值。适用于Delphi,外部调用请使用PclockInfo结构,详细请看PclockInfo
DeviceType 必需的。Integer型。1—考勤设备。(型号:K55)
Fireware 必需的。Double型。必须为1.0
ICID 必需的。Boolean型。必须为False
function SetupDisplayNumberType(hPort: THandle; Kind: Integer): Boolean;stdcall;返回值:Boolean说明:设置卡钟刷卡时显示工号或卡号状态。
参数
Kind 必需的。整型值。显示类型,0—显示卡号,1—显示工号。
function SetupBackLight(hPort: THandle; Kind: Integer; TimeZone: PChar): Boolean;stdcall;返回值:Boolean说明:设置背景灯
参数
Kind 必需的。 整型值。背景显示类型
0—背景灯常闭;1—背景灯常亮;2—背景灯指定时段亮.
TimeZone 必需的.Pchar型,指定的背光进段,格式为:hhmmhhmm
function SetupBrushCardInterval(hPort: THandle; SameCardInterval: Integer; DifferCardInterval: Integer): Boolean;stdcall;
返回值:Boolean说明:设置两次刷卡的时间间隔。
参数
SameCardInterval 必需的。Integer型。相同卡两次刷卡时的时间间隔.(0—99分钟,0—无时间间隔.)
DifferCardInterval 必需的。Integer型。不同卡两次刷卡时的时间间隔.(0—10秒,0—无时间间隔.)
function SetupBrushPeriods(hPort: THandle; Periods: PChar): Boolean;stdcall;返回值:Boolean说明:设置考勤时段,最多5段。
Periods 必需的。 Pchar,格式为:hhmmhhmm。
Function SetupHornTimes(hPort: THandle; HornTimes: PChar): Boolean;stdcall;返回值:Boolean说明:设置打铃时间,最多32个。
参数
HornTimes 必需的。Pchar。格式为:hhmmddhhmmdd。
hh:小时,mm:分,dd:打铃持续时长(01--99)
function SetupGuardPeriods(hPort: THandle; GuardPeriods: PChar): Boolean;stdcall;返回值:Boolean说明:设置门禁开门时间,最多8段。
参数
GuardPeriods 必需的。Pchar。格式为:hhmmhhmm。
function SetupHornType(hPort: THandle; Value: Integer): Boolean;stdcall;返回值:Boolean说明:打铃设置。
参数
Value 必需的。整型。0—无铃声,1—蜂鸣器打铃,2—继电器1外接电铃,3—继电器2外接电铃。
function SetupExternalPort(hPort: THandle;Value1: Integer;value2:integer;value3:integer): Boolean;stdcall;返回值:Boolean说明:电锁设置。
参数
Value1 必需的。Integer型。是否有电锁. 0—无电锁,1—继电器1外接电锁,2—继电器2外接电锁。
value2 必需的。Integer型。设置电锁类型. 0--无电锁,1—外接阳锁,2—外接阴锁。
Value3 必需的。Integer型。设置电锁延时时间。
function SetNotification(hPort: THandle; Kind: Integer; TimeZone: PChar; Notication: PChar; Company: PChar): Boolean;stdcall;返回值:Boolean说明:下载显示消息,公司名。
参数
Kind 必需的.类型:Integer,值为1
TimeZone 必需的,类型:Pchar,消息显示时段,格式为:mmddmmddhhnnhhnnhhnnhhnn
mm:月;dd:日;hh:小时;nn分钟
Notication 必需的,类型:Pchar,显示消息内容(最多32个字节).如果消息为空,所传入的时间必须为:mmdd mmdd 0000 0000 0000 0000
strComName 必需的,类型:Pchar,公司名(最多16个字节)
注:如果想删除消息,则将时间都改为 mmdd mmdd 0000 0000 0000 0000发下即可
function SetClockID(hPort: THandle; ClockID: Byte; RunMode: Integer=0): Boolean; stdcall;返回值:Boolean说明:设置卡钟编号及运行模式。
参数
ClockID 必需的。类型:Byte。新机号。
RunMode 必需的。类型: Integer。新的运行模式。值为1(考勤机)
function GetClockID(Port, BaudRate: Integer;var ClockID: Byte): Boolean; stdcall;返回值:Boolean说明:取得机器号。
参数
ClockID 必需的。类型:Byte。返回卡钟编号
function ReadClockTime(hPort: THandle; var CurTime: Double): Boolean; stdcall;返回值:Boolean说明:取卡钟时间
参数
CurTime 必需的。类型: Double。返回卡钟时间.
function SetClockTime(hPort: THandle; NewTime: Double): Boolean; stdcall;返回值:Boolean说明:设置卡钟时间。
参数
NewTime 必需的。Double型。
function DownLoadFontPage(hPort: THandle; lpData: PChar; Size: Integer=16; First: Boolean=False; Finish: Boolean=False): Boolean; stdcall;返回值:Boolean说明:下载汉字库到卡卡钟
参数
lpData 必需的。PChar型。字库数据指针
Size 必需的。Integer型。字节数,只能是16字节。
First 必需的。Boolean型。下载开始。
Finish 必需的。Boolean型。下载结束
function ReadClockRecordTotal(hPort: THandle; var data: Integer; kind: Integer=0): Boolean;stdcall;返回值:Boolean型说明:从卡钟读取刷卡记录总数
参数
data 必需的。Integer型。返回刷卡记录总数.
kind 可选的。Integer型。只能为0
function BatchReadRecord(hPort: THandle;var Records: array of TICRecord; FirstRecord: Boolean; Retry: Boolean=False; kind: Integer=0):Integer;stdcall;返回值:Integer型说明:批量读取考勤数据
参数
Records 必需的。自定义变量。返回记录数组
FirstRecord 必需的。Boolean型。是否读第一条记录
Retry 可选的。Boolean型。是否重试上一条记录
kind 可选的。Integer型。只能为0
function StopReadRecord(hPort: THandle): Boolean;stdcall;返回值:Boolean型说明:中途取消读取数据操作。
function ClearAllReadCard(hPort: THandle): Boolean; stdcall;返回值:Boolean型说明:清除考勤机内的刷卡数据。
function SetAllowedCard(hPort: THandle; card: PChar; emp_id: PChar; emp_name: PChar=nil; First: Boolean=True;Finish: Boolean=False;Batch:Boolean=False): Boolean; stdcall;返回值:Boolean型说明:向卡钟注册卡信息。
参数
card 必需的。PChar型。ID卡号。
emp_id 必需的。PChar型。员工工号。
emp_name 必需的。PChar型。员工姓名。
First 可选的。Boolean型。开始注册,第一次调用时为True。
Finish 可选的。Boolean型。结束注册,结束时为True。
说明:当First和Finish同时为True时表示单张增加注册,否则表示重新排序注册。注意:重新排序注册是会删除以前所有注册信息再重新进行注册(此处如有疑问请与开发商联系。)
function ReadAllowedCard(hPort: THandle; card_id, emp_id, emp_name: PChar; First: Boolean;var Finish: Boolean;var Total: Integer): Boolean; stdcall;返回值:Boolean型说明:从卡钟读取注册卡信息。
参数
card 必需的。PChar型。返回卡号,缓冲区必须大于11个字节。
emp_id 必需的。PChar型。返回工号,缓冲区必须大于11个字节。
emp_name 必需的。PChar型。返回姓名,缓冲区必须大于11个字节。
First 必需的。Boolean型。开始读注册卡信息。
Finish 必需的。Boolean型。结束读注册卡信息。
Total 必需的。Integer型。当First为True时返回注册卡总数。
说明:不能中途退出
function DeleteAllowedCard(hPort: THandle; card: PChar): Boolean; stdcall;返回值:Boolean型说明:删除单张注册卡信息。
参数
card 必需的。PChar型。欲删除的卡号。
function DeleteAllAllowedCard(hPort: THandle): Boolean; stdcall;返回值:Boolean型说明:删除所有注册卡信息。
function SetEmployeeCustomMessage(hPort: THandle; Card: PChar; msg: PChar; First: Boolean; Finish: Boolean): Boolean;stdcall;返回值:Boolean型说明:设置员工自定义刷卡消息(最多200人)。
参数
card 必需的。PChar型。欲注册消息的卡号。
msg 必需的。PChar型。欲注册消息,最多64个字符。
First 必需的。Boolean型。开始下载。
Finish 必需的。Boolean型。结束下载。
function DeleteEmployeeCustomMessage(hPort: THandle; Card: PChar): Boolean;stdcall;返回值:Boolean型说明:删除自定义员工刷卡消息。
参数
card 必需的。PChar型。欲删除注册消息的卡号。
function DeleteAllEmployeeCustomMessage(hPort: THandle): Boolean;stdcall;返回值:Boolean型说明:删除所有自定义员工刷卡消息。
实时通讯类函数
function StartupRealTime(hPort: THandle): Boolean;stdcall;返回值:Boolean型说明:开始实时通讯。
function StartupRealCollect(hPort: THandle): Boolean;stdcall;返回值:Boolean型说明:开始实时接收数据。
function StopRealCollect(hPort: THandle): Boolean;stdcall;返回值:Boolean型说明:停止实时接收数据。
说明:与StartupRealCollect对应
function RealReadRecord(hPort: THandle; Card: PChar; timeString: PChar; var mark, flag, clock_id: Integer): Integer;stdcall;返回值:Integer型说明:实时读取一条刷卡数据(马上返回),成功为0。
参数
card 必需的。PChar型。实时通讯取得的卡号(0结束),缓冲区需大于20个字节长。
timeString 必需的。PChar型。实时通讯取得的14位刷卡时间(0结束),格式为yyyymmddhhmmss,缓冲区需大于20个字节长度。
mark 必需的。Integer型。刷卡数据类型。
flag 必需的。Integer型。记录类型。
clock_id 必需的。Integer型。刷卡机号。
非实时通讯功能(即时读取卡号)
function ReadCardNo(hPort: THandle; Card: PChar; Kind: Integer): Boolean;stdcall;返回值:Boolean型说明:实时读取刷卡区的卡号,无等待返回。
参数
card 必需的。PChar型。返回读取卡号缓冲区,缓冲区需大于20个字节长。
Kind 必需的。Integer型。取卡号状态,0—开始读卡号,1—结束读卡号。
function RealReadCardNo(hPort: THandle; Card: PChar; Card_Length: Integer=10): Boolean;stdcall;返回值:Boolean型说明:设置取卡号状态。
参数
card 必需的。PChar型。即时通讯取得的卡号,缓冲区需大于20个字节长。
Card_Length 必需的。Integer型。希望取得卡号的长度,必须为10。
说明:必须先调用ReadCardNo
Nanben字符串说明:
传入参数中,文字不用空格隔开。如传入文字格式为:"中国人民"。