📄 eastriver.pas
字号:
{考勤机控制类}
// 读设备已经存储的考勤记录数
function ReadClockRecordTotal(hPort: THandle; var data: Integer): Boolean;stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// data : 返回考勤记录数量
//返回值:
// True : 成功
// False : 失败
// 读设备可以存储的最大考勤记录数
function ReadMaxClockRecordTotal(hPort: THandle; var data: Integer): Boolean;stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// data : 返回设备可以存储的最大考勤记录数
//返回值:
// True : 成功
// False : 失败
// 修改任意卡打卡的时间间隔
function SetCardTimeInterval(hPort: THandle; timeInterval: Double): Boolean;stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// timeInterval : 新的打卡时间间隔, 范围: 0.0 -- 2.25 秒
//返回值:
// True : 成功
// False : 失败
// 读任意卡打卡的时间间隔
function ReadCardTimeInterval(hPort: THandle; var timeInterval: Double): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// timeInterval : 返回打卡时间间隔, 单位秒
//返回值:
// True : 成功
// False : 失败
// 设置全天考勤(任意时间可以刷卡)
function SetWholeTimeClock(hPort: THandle): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
//返回值:
// True : 成功
// False : 失败
type
PClockerTime=^TClockerTime;
TClockerTime=packed record
StartTime,
EndTime: array[0..5] of char;
end;
// 读取允许考勤刷卡时间段 (最多返回4个时间段)
function ReadClockerTime(hPort: THandle; var Clocks: array of TClockerTime{; ArraySize: Integer}): Integer; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// Clocks : 返回时间段数组, 最少需要4个单元
// ArraySize : Delphi不需要,如果是VB或是C++需要传数组大小参数
//返回值:
// 0 : 读取失败
// 1-4 : 刷卡时间段个数
// 设置考勤时间段 (最多可以设置4个考勤时间段)
function SetClockerTime(hPort: THandle; StartTime, EndTime: PChar): Boolean;stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// startTime : 开始时间, 格式:hhmm, 范围:0000-2400
// EndTime : 结束时间, 同上
//返回值:
// True : 成功
// False : 失败
// 设置同一张卡重复刷卡时间间隔
function SetRepeatClockerTime(hPort: THandle; timeLen: Integer): Boolean;stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// timeLen : 时间间隔, 设置为 1-99 分钟
//返回值:
// True : 成功
// False : 失败
// 读同一张卡重复刷卡时间间隔
function ReadRepeatClockerTime(hPort: THandle; var timeLen: Integer): Boolean;stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// timeLen : 时间间隔, 设置为 1-99 分钟
//返回值:
// True : 成功
// False : 失败
// 清除设备的所有打铃时间
function ClearRing(hPort: THandle): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
//返回值:
// True : 成功
// False : 失败
type
TRingTime=packed record
hour, minute, second, RingTimeLen: Integer;
end;
// 读取设备打铃时间 (最多返回32个打铃)
function ReadRing(hPort: THandle; var RingTimes: array of TRingTime{, ArraySize: Integer}): Integer;stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// RingTimes : 打铃时间数组, 最少需要32个单元
// ArraySize : Delphi不需要,如果是VB或是C++需要传数组大小参数
//返回值:
// 0 : 失败
// 1-32 : 有效打铃时间数量
// 设置设备打铃时间 (最多可以设置32次打铃)
function SetRing(hPort: THandle; hour: Integer; minute: Integer; second: Integer; ringTimeLen: Integer): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// hour, minute, second : 为打铃的起始时间, 数值分别为 : 0-23, 0-59, 0-59
// ringTimeLen : 为打铃的持续时间, 数值为 1-60 秒
//返回值:
// True : 成功
// False : 失败
// 读刷卡记录(ALL)
function ReadRecord(hPort: THandle; data: PChar; timeString: PChar; var mark: Char; FirstRecord: Boolean): Boolean; stdcall; external EASTRIVER_API
//本函数为通用读记录函数, 可以用其他特定功能函数代替
//参数说明:
// hPort : 端口句柄, 需要联机
// data : 读回的卡号字符串, 缓冲区需大於20字节长度
// timeString : 读回的14位刷卡时间字符串, 格式为yyyymmddhhmmss, 缓冲区需大於20字节长度
// mark : 读卡机标识字符.
// FirstRecord : 是否只读取最顶端记录,否则删除最顶端记录,读取下一条记录
//返回值:
// True : 成功
// False : 失败
// 读刷卡记录(^2G)
function ReadStandardRecord(hPort: THandle; Data: PChar; timeString: PChar; var mark: Char; var flag: Integer; var cardTimes: Integer; var cardGroup: Integer): Boolean; stdcall; external EASTRIVER_API
//使用函数前需确保设备卡的存储长度为16
//参数说明:
// hPort : 端口句柄, 需要联机
// data : 读回的卡号字符串, 缓冲区需大於20字节长度
// timeString : 读回的14位刷卡时间字符串, 格式为yyyymmddhhmmss, 缓冲区需大於20字节长度
// mark : 读卡机标识字符.
// flag : 存储卡的结果
// flag = 0 : 表示为正常卡
// flag.0 = 1 : 表示为非法门禁卡
// flag.1 = 1 : 表示为非法考勤卡
// flag.2 = 1 : 表示为黑名单卡
// cardTimes : 发卡次数, 0-15
// cardGroup : 卡的组别, 0-255
//返回值:
// True : 成功
// False : 失败
// 读取刷卡记录(ALL)
function ReadClockData(hPort: THandle; CardNo: PChar; var SignTime: Double; var mark: Char; FirstRecord: Boolean): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// CardNo : 返回记录卡号
// SignTime : 返回记录刷卡时间, Delphi的TDateTime类型,VB的Date类型
// mark : 返回记录标识, 范围:'0'-'9', 'A'-'F'
// FirstRecord : 是否只读取最顶端记录,否则删除最顶端记录,读取下一条记录
//返回值:
// True : 成功
// False : 失败
// 读取记录(以文本格式1G)
function ReadRecordText(hPort: THandle; data: PChar; FirstRecord: Boolean): Integer; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// data : 记录文本, 格式根据具体机型而定,一般是:yy年MM月dd日hh时nn分mark标识CardNo卡号
//返回值:
// -1 : 错误
// 1-30 : 成功
//批读记录结构
type
PICRecord=^TICRecord;
TICRecord=packed record
Card: array[0..19] of char; // 卡号字符串
timeString: array[0..19] of char; // 14位刷卡时间字符串, 格式为yyyymmddhhnnss
EmpId: array[0..09] of char;
mark: Integer; // 读卡机标识字符
flag: Integer; // 存储卡的结果
// flag = 0 : 表示为正常卡
// flag.0 = 1 : 表示为非法门禁卡
// flag.1 = 1 : 表示为非法考勤卡
// flag.2 = 1 : 表示为黑名单卡
cardTimes: Integer; // 发卡次数, 0-15
consume : WORD; // 消费额
balance : WORD; // 消费后余额
end;
// 批量读数据(^2G)
function BatchReadRecord(hPort: THandle; var Records: array of TICRecord{; ArraySize: Integer}): Integer; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
// Records : 返回记录数组, 最少需要16个单元
// ArraySize : Delphi不需要,如果是VB或是C++需要传数组大小参数
//返回值:
// -1 : 错误
// 0 : 记录已经读完
// 1-16 : 正确读取的记录条数
// 读上一次调用BatchReadRecord所读的记录(^3G)
function BatchReadPrevRecord(hPort: THandle; var Records: array of TICRecord{; ArraySize: Integer}): Integer; stdcall; external EASTRIVER_API
//同BatchReadRecord()
// 删除所有的存储考勤卡记录
function ClearAllReadCard(hPort: THandle): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort : 端口句柄, 需要联机
//返回值:
// True : 删除成功
// False : 删除失败
const
BytesOfRecord=32; //每记录字节数
RecordsOfFrame=400; //每帧记录数
type
//ER-980门禁记录结构
P980ReadData=^T980ReadData;
T980ReadData=packed record
Verify_Error : Boolean; //此记录校验是否正确, 由用户处理,
//如果记录校验错误且需继续读返回一条记录则需重置为False
CardNo : array[0..19] of char; //卡号(20个字节,以0结束字符串)
TimeString : array[0..19] of char; //时间(20个字节,以0结束字符串)
flag : 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 : Integer; //分组
Times : Integer; //发卡次数
Record_Total : Integer; //采集数据的总记录数
Record_Index : Integer; //当前记录是第几条记录
end;
//ER-690消费记录结构(大小和ER-980记录一致)
P690ReadData=^T690ReadData;
T690ReadData=packed record
Verify_Error : Boolean; //此记录校验是否正确, 由用户处理,
//如果记录校验错误且需继续读返回一条记录则需重置为False
CardNo : array[0..19] of char; //卡号(20个字节,以0结束字符串)
TimeString : array[0..19] of char; //时间(20个字节,以0结束字符串)
flag : Integer; //打卡结果
// flag = 0 : 表示正常记录
// flag = 3 : 退还了误收金额的消费记录
// flag = 7 : 表示此记录的卡片在写入金额时由于过早离开了感应区,有可能金额没有正常写入
Consume : WORD; //消费金额,单位角
Balance : WORD; //消费后余额,单位角
Times : Integer; //充值次数
Record_Total : Integer; //采集数据的总记录数
Record_Index : Integer; //当前记录是第几条记录
end;
PReadData=P690ReadData;//按需要更改声明
TReadData=T690ReadData;//按需要更改声明
PArrayReadData=^TArrayReadData;
TArrayReadData=array[0..RecordsOfFrame] of TReadData;
// 数据处理回调函数
TDataProcess = function(lpData: Pointer; lpReadData: PReadData): Boolean;stdcall;
// lpData : 自定义变量, 对应ReadAllRecord()的第二个参数
// lpReadData : 记录结构指针
//返回值:
//如果需要返回下一条记录则返回True, 如果需要中止数据读取可返回False,
TTimeLapse = procedure(lpData: Pointer; microsecond: Integer);stdcall;
//延时回调
//参数说明:
// lpData : 自定义变量, 对应ReadAllRecord()的第二个参数
// microsecond : 如果使用此函数则应在microsecond 微秒内按时返回
//无返回值
// 按帧(一帧400条)读取机具所有记录
function ReadAllRecord(hPort: THandle; lpData: Pointer; DataProcess: TDataProcess; Wait:TTimeLapse=nil): Integer;stdcall; external EASTRIVER_API
//读所有记录调用
//参数说明:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -