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

📄 eastriver.pas

📁 pasa人力资源考勤管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{       EastRiver Smart Function Library               }
{                                                      }
{            Author: shuguang LING                     }
{                                                      }
{               March.23.2004                          }

unit EastRiver;

interface
uses
  Windows, SysUtils;

const
  EastRiver_API     = 'EastRiver.dll';
//设备版本号(Fireware), 比较时最好用这些常量, 否则类型不匹配将出将比较错误
  FW119: Double     = 1.19;
  FW120: Double     = 1.20;
  FW125: Double     = 1.25;
  FW128: Double     = 1.28;
  FW129: Double     = 1.29;
  FW130: Double     = 1.30;

//新门禁机常量
  INOUT_RIGHT       =$00; //出入权限设置
  CIPHER_ENABLE     =$01; //密码检测时段
  ALERT_ENABLE      =$02; //报警生效时段
  BUTTON_ENABLE     =$03; //按键生效时段
  OPEN_DOOR         =$04; //电锁常开时段
  MAGNETISM_ENABLE  =$05; //门磁检测时段
  HOLIDAY_OPENRIGHT =$06; //节假日开门时段与权限
  SUPERUSERPWD_ENABLE=$07; //超级用户密码时段

// IC卡读写卡号格式常量
  CARDSTYLE_UNKNOWN= 0000; //未知卡号格式(可能为空)
  CARDSTYLE_IDCARD = 0001; //ID卡格式
  CARDSTYLE_UTFCARD= 0002; //自定义卡格式
  CARDSTYLE_OLDCARD= 0830; //旧ER-680C消费卡格式
  CARDSTYLE_NEWCARD= 0880; //新ER-880C卡格式
  CARDSTYLE_690CARD= 0690; //新消费机ER-690卡格式

//  通讯卡号格式转换方法
  CS_AUTO          = $00;  //对880机具调用默认处理,880D=ID_NOCONVERT,880C=IC_CONVERT,新型门禁机=IC_CONVERT
                           //如果卡号为16位标准卡则ID,IC都不变换
  CS_GENERAL       = $01;  //不转换卡格式(明文)
  CS_NEWCARD       = $02;  //IC卡号,需要变换成IC标准卡号
  CS_OLDCARD       = $03;  //转换成旧ER-830C IC卡类型
  CS_IDCARD        = $04;  //ID卡号,变换成16位标准卡号即最高两个位时'EF'


type
  PClockInfo=^TClockInfo;
  TClockInfo=record
    hPort: THandle;
    clock_id: Byte;
    port, baudrate: DWORD;        //通讯端口和速率
    Fireware: Double;             //模具版本
    clock_type,                   //运行模式
    VerOrd,                       //版本系列
    model,                        //机具型号
    cls,                          //读头类型(0: ID卡, 1:IC卡, 2: 混合)
    run_mode,                     //工作模式(0:考勤机, 1:考勤门禁 2:门禁机 3:消费机 4:发卡机 5:其它)
    Mode, SystemMode, ExtraMode,  //运行参数
    SaveMode,
    Block,                        //使用IC卡块号
    DispCardLen, CardLen,         //显示卡号长度, 存储卡号长度
    GroupStation: Integer;        //分组字节位置
    GroupCheck,                   //是否打卡分组
    Connected,                    //是否已联机
    CmdVerify, RWOnly: Boolean;   //是否专用发卡器
    mark: Char;                   //刷卡标识
  end;


{***************依时利产品概况*******************
第一代(简称1G)
  ER-210 C/D 考勤消费机
  ER-610 C/D 考勤机
  ER-680 C/D 消费机
  ER-7x0 C/D 考勤门禁机
  ER-810 C/D 考勤机
  ER-830 C/D 考勤门禁机

第二代(简称2G)
  ER-880 C/D 考勤门禁机,包含很多版本,不完全兼容,正式发行版由1.25-1.30(fireware)
  ER-900 C   通用发卡机

第三代(简称3G)
  ER-980  四门门禁机,读头可以是IC也可以是ID,混合使用
  ER-981C 单门门禁机
  ER-690C 消费机,兼容ER-980的大部分功能,只有部分和记录有关的指令不兼容,
          另外还扩展了部分消费专用指令

}




//      取得最后发生的错误代号
function GetRecentErrCode(): DWORD; stdcall; external EASTRIVER_API
//返回值:
const
  ERROR_IO_CHECK    = $00000001; //校验错误
  ERROR_IO_READ     = $00000002; //读错误
  ERROR_IO_WRITE    = $00000003; //写错误
  ERROR_IO_NOEND    = $00000004; //串口接收未结束而中断
  ERROR_IO_NOPEN    = $00000005; //不能打开端口
  ERROR_IO_COMMAND  = $00000006; //命令错误
  ERROR_IO_NOHANDLE = $00000007; //无句柄错误
  ERROR_IO_TIMEOUT  = $00000008; //通讯超时


{设备联接类}

//      打开串行端口
function OpenCommPort(Port: Integer; BaudRate: Integer): THandle; stdcall; external EASTRIVER_API
//参数说明:
// Port         : 端口号,允许值1-256, 如: COM1=1, COM2=2...COM256=256
// BaudRate     : 端口波特率,允许值: 9600, 19200, 38400, 通常是9600
//返回值:
// -1           : 端口无效或正在使用
// 0            : 无法打开端口
// 其它值       : 端口句柄,用于其它函数调用
//备注:
// 请使用Windows API CloseHandle(hObject: HANDLE): BOOL; 来关闭端口句柄

//      关闭已经打开的端口号
function CloseCommPort(Port: Integer): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// Port         : 端口号,允许值1-256, 如: COM1=1, COM2=2...COM256=256
//返回值:
// True=成功, False=失败

//      关闭端口句柄
function ClosePortHandle(hPort: THandle): Boolean;stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 已经打开的端口句柄
//返回值:
// True=成功, False=失败

//      初始化端口设置, 在打开端口和联机时自动调用, 除非需要修改端口参数
//      一般不需要自己调用
function InitCommPort(hPort: THandle; BaudRate: DWORD; Parity: Byte): Boolean;stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄
// BaudRate     : 新的端口波特率,允许值: 9600, 19200, 38400, 置为0时将保留原波特率
// Parity       : 新的端口校验方式,允许值如下:
//    NOPARITY    = 0;   //无校验
//    ODDPARITY   = 1;   //奇校验
//    EVENPARITY  = 2;   //偶校验
//    MARKPARITY  = 3;   //标记校验(联机之前)
//    SPACEPARITY = 4;   //空校验  (联机之后)
//    256         =$FF;  //不更改校验设置  
//返回值:
// True=成功, False=失败

//      打开端口及联接设备(包含 OpenCommPort )
function ConnectClock(Port, BaudRate: Integer; clock_id: Integer): THandle;stdcall; external EASTRIVER_API
//参数说明:
// Port         : 端口号,允许值: 1-256, 如: COM1=1, COM2=2...COM256=256
// BaudRate     : 端口波特率,允许值: 9600, 19200, 38400, 通常是9600
// clock_id     : 机号,允许值: 0-255, 由于机具上显示的机号实际上是两位16进制数
//                所以机号范围16进制表示应该为: 0x00-0xFF
//返回值:
// -1           : 端口无效或正在使用
// 0            : 无法联机, 可能是端口,波特率,机号或是线路故障
// 其它值       : 联机成功,返回端口句柄,用于其它函数调用

//      断开联接及关闭端口句柄
function DisConnectClock(hPort: THandle): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄,通过调用ConnectClock函数得到
//返回值:
// True         : 脱机成功
// False        : 脱机失败

//      检查指定的机器是否在联机状态
function CheckConnectClock(hPort: THandle; clock_id: Integer): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄,通过调用OpenCommPort函数得到
//返回值:
// True         : 联机状态
// False        : 脱机状态

//      显式联机命令
function CallClock(hPort: THandle; clock_id: Integer): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄,通过调用OpenCommPort函数得到
// clock_id     : 机号,允许值: 0-255, 由于机具上显示的机号实际上是两位16进制数
//                所以机号范围16进制表示应该为: 0x00-0xFF
//返回值:
// True         : 联机成功
// False        : 联机失败
//备注:
// "1G"机型不能重复联机
// 所有和机具通讯且没有带机号的函数都必须在联机后才能调用
// 用户一般不需要直接调用此函数, 建议使用 ConnectClock 函数

//      脱机命令
function UnCallClock(hPort: THandle): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄,通过调用OpenCommPort函数得到
//返回值:
// True         : 脱机成功
// False        : 脱机失败
//备注:
// 脱机后,所有和机具通讯没有带机号的函数均不起作用

//      检查指定机号在线上是否响应, 在限定的时间内返回
function TestCallClock(hPort: THandle; clock_id: Integer; TimeOut: Integer=0): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄,通过调用OpenCommPort函数得到
// clock_id     : 机号,允许值: 0-255, 由于机具上显示的机号实际上是两位16进制数
//                所以机号范围16进制表示应该为: 0x00-0xFF
// TimeOut      : 响应超时,用于调整搜索速度,推荐值(单位毫秒ms):
//    RS-232线路  = 100-120;
//    RS-485线路  = 120-200;
//    TCP/IP线路  = 500-800;
//    最大        > 1000;
//返回值:
// True         : 机具存在
// False        : 机具不存在

//      自动识别机具型号(DLL内部需要识别机型)
function ClockAutoModel(hPort: THandle): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄, 需要联机
//返回值:
// True         : 自动识别成功
// False        : 机型无法识别,请调用强制设置机型函数
//备注:
// 由于不同的型号,不同读头的机具接受的卡号格式不完全相同,所以DLL需要知道正在联机
// 机型来转换不同的卡号格式,否则所有和卡号有关的函数将会起不到预期的效果

//      取得机具型号(DLL内部需要识别机型)
function GetClockModel(hPort: THandle;var Model: Integer;var Ver: Double;var cls: Integer): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄
// Model        : 返回机具型号, 如:
//    ER-880C     = 880;
//    ER-980      = 980;
// ...
// Ver          : 返回机具版本号, 必须大于0, 如: 1.28, 1.30等等
// cls          : 返回机具类型(读头)
//    ER-880C     = 1;  //IC读头
//    ER-980      = 1;  //IC,ID读头混合
//    ER-880D     = 0;  //ID读头
//返回值:
// True=成功, False=错误

//      设置标识DLL内部正在联机的机具型号(当自动识别无效时)
function SetClockModel(hPort: THandle; Model: Integer; Ver: Double; cls: Integer): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄
// Model        : 机具型号, 如:
//    ER-880C     = 880;
//    ER-980      = 980;
// ...
// Ver          : 机具版本号, 必须大于0, 如: 1.28, 1.30等等
// cls          : 机具类型(读头)
//    ER-880C     = 1;  //IC读头
//    ER-980      = 1;  //IC,ID读头混合
//    ER-880D     = 0;  //ID读头
//返回值:
// True=成功, False=错误

//      修改机具通信速率(^2G)
function SetClockBaudRate(hPort: THandle; BaudRate: DWORD): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// BaudRate     : 新的机具波特率, 允许值: 9600, 19200, 38400
//返回值:
// True         : 修改成功
// False        : 修改失败
//备注: 调用前必须使用正确的波特率联机, 修改成功后如果需要和机具通讯必须
//      调用 InitCommPort 函数将端口波特率修改成和新的机具波特率一致

{设备联接类}



{版本控制类}

//      查询在线的机具是否支持某项功能
function GetClockSupports(hPort: THandle; Index: Integer): Boolean; stdcall; external EASTRIVER_API
//参数说明:
// hPort        : 端口句柄, 需要联机
// Index        : 功能编号, 可能的值如下表
const
  fiStoreRecord     = $00000000; //存储刷卡记录
  fiAttendance      = $00000001; //支持考勤功能
  fiDoorGuard       = $00000002; //支持门禁功能
  fiConsumption     = $00000003; //支持消费功能
  fiIssueCard       = $00000004; //支持发卡功能
//  ...                          //5-F 保留
  fiDoorList        = $00000010; //支持门禁名单
  fiWhiteList       = $00000011; //支持白名单
  fiBlackList       = $00000012; //支持黑名单
  fiHaveMark        = $00000013; //设备支持刷卡标识
  fiIDReader        = $00000014; //有ID读头
  fiICReader        = $00000015; //有IC读头
  fiScreen          = $00000016; //支持控制屏显示
  fibuzzer          = $00000017; //支持控制蜂器发声
  fiAdminCard       = $00000018; //支持管理卡
  fiBrushPeriods    = $00000019; //支持刷卡时段
  fiRingTime        = $0000001A; //支持打铃时间
  fiGroupCard       = $0000001B; //支持分组打卡
  fiRealTime        = $0000001C; //支持实时上传
  fiRealControl     = $0000001D; //支持实时控制
  fiChangeMode      = $0000001E; //支持更改运行模式

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -