⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eastriver.pas

📁 pasa人力资源考勤管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:




















{考勤机控制类}
//		  读设备已经存储的考勤记录数
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 + -