?? eastriver.pas
字號:
{ EastRiver Smart Function Library }
{ }
{ Author: shuguang LING }
{ }
{ March.23.2004 }
unit EastRiver;
{$WEAKPACKAGEUNIT}
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; //節(jié)假日開門時段與權限
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:發(fā)卡機 5:其它)
Mode, SystemMode, ExtraMode, //運行參數(shù)
SaveMode,
Block, //使用IC卡塊號
DispCardLen, CardLen, //顯示卡號長度, 存儲卡號長度
GroupStation: Integer; //分組字節(jié)位置
GroupCheck, //是否打卡分組
Connected, //是否已聯(lián)機
CmdVerify, RWOnly: Boolean; //是否專用發(fā)卡器
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 考勤門禁機,包含很多版本,不完全兼容,正式發(fā)行版由1.25-1.30(fireware)
ER-900 C 通用發(fā)卡機
第三代(簡稱3G)
ER-980 四門門禁機,讀頭可以是IC也可以是ID,混合使用
ER-981C 單門門禁機
ER-690C 消費機,兼容ER-980的大部分功能,只有部分和記錄有關的指令不兼容,
另外還擴展了部分消費專用指令
ER-690D 實時ID卡消費機
}
// 取得最后發(fā)生的錯誤代號
function GetRecentErrCode(): DWORD; stdcall; external EASTRIVER_API
// 取得端口最后發(fā)生的錯誤代號
function GetPortRecentErrCode(Port: Byte): 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; //通訊超時
ERROR_IC_PASSWORD = $00000009; //IC卡密碼錯
ERROR_NO_SUPPORT = $00000010; //不支持的命令
{設備聯(lián)接類}
// 打開串行端口
function OpenCommPort(Port: Integer; BaudRate: Integer): THandle; stdcall; external EASTRIVER_API
//參數(shù)說明:
// Port : 端口號,允許值1-256, 如: COM1=1, COM2=2...COM256=256
// BaudRate : 端口波特率,允許值: 9600, 19200, 38400, 通常是9600
//返回值:
// -1 : 端口無效或正在使用
// 0 : 無法打開端口
// 其它值 : 端口句柄,用于其它函數(shù)調用
//備注:
// 請使用Windows API CloseHandle(hObject: HANDLE): BOOL; 來關閉端口句柄
// 關閉已經打開的端口號
function CloseCommPort(Port: Integer): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// Port : 端口號,允許值1-256, 如: COM1=1, COM2=2...COM256=256
//返回值:
// True=成功, False=失敗
// 關閉端口句柄
function ClosePortHandle(hPort: THandle): Boolean;stdcall; external EASTRIVER_API
//參數(shù)說明:
// hPort : 已經打開的端口句柄
//返回值:
// True=成功, False=失敗
// 初始化端口設置, 在打開端口和聯(lián)機時自動調用, 除非需要修改端口參數(shù)
// 一般不需要自己調用
function InitCommPort(hPort: THandle; BaudRate: DWORD; Parity: Byte): Boolean;stdcall; external EASTRIVER_API
//參數(shù)說明:
// hPort : 端口句柄
// BaudRate : 新的端口波特率,允許值: 9600, 19200, 38400, 置為0時將保留原波特率
// Parity : 新的端口校驗方式,允許值如下:
// NOPARITY = 0; //無校驗
// ODDPARITY = 1; //奇校驗
// EVENPARITY = 2; //偶校驗
// MARKPARITY = 3; //標記校驗(聯(lián)機之前)
// SPACEPARITY = 4; //空校驗 (聯(lián)機之后)
// 255 =$FF; //不更改校驗設置
//返回值:
// True=成功, False=失敗
// 打開端口及聯(lián)接設備(包含 OpenCommPort )
function ConnectClock(Port, BaudRate: Integer; clock_id: Integer): THandle;stdcall; external EASTRIVER_API
//參數(shù)說明:
// Port : 端口號,允許值: 1-256, 如: COM1=1, COM2=2...COM256=256
// BaudRate : 端口波特率,允許值: 9600, 19200, 38400, 通常是9600
// clock_id : 機號,允許值: 0-255, 由于機具上顯示的機號實際上是兩位16進制數(shù)
// 所以機號范圍16進制表示應該為: 0x00-0xFF
//返回值:
// -1 : 端口無效或正在使用
// 0 : 無法聯(lián)機, 可能是端口,波特率,機號或是線路故障
// 其它值 : 聯(lián)機成功,返回端口句柄,用于其它函數(shù)調用
// 斷開聯(lián)接及關閉端口句柄
function DisConnectClock(hPort: THandle): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// hPort : 端口句柄,通過調用ConnectClock函數(shù)得到
//返回值:
// True : 脫機成功
// False : 脫機失敗
// 檢查指定的機器是否在聯(lián)機狀態(tài)
function CheckConnectClock(hPort: THandle; clock_id: Integer): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// hPort : 端口句柄,通過調用OpenCommPort函數(shù)得到
//返回值:
// True : 聯(lián)機狀態(tài)
// False : 脫機狀態(tài)
// 顯式聯(lián)機命令
function CallClock(hPort: THandle; clock_id: Integer): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// hPort : 端口句柄,通過調用OpenCommPort函數(shù)得到
// clock_id : 機號,允許值: 0-255, 由于機具上顯示的機號實際上是兩位16進制數(shù)
// 所以機號范圍16進制表示應該為: 0x00-0xFF
//返回值:
// True : 聯(lián)機成功
// False : 聯(lián)機失敗
//備注:
// "1G"機型不能重復聯(lián)機
// 所有和機具通訊且沒有帶機號的函數(shù)都必須在聯(lián)機后才能調用
// 用戶一般不需要直接調用此函數(shù), 建議使用 ConnectClock 函數(shù)
// 脫機命令
function UnCallClock(hPort: THandle): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// hPort : 端口句柄,通過調用OpenCommPort函數(shù)得到
//返回值:
// True : 脫機成功
// False : 脫機失敗
//備注:
// 脫機后,所有和機具通訊沒有帶機號的函數(shù)均不起作用
// 檢查指定機號在線上是否響應, 在限定的時間內返回
function TestCallClock(hPort: THandle; clock_id: Integer; TimeOut: Integer=0): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// hPort : 端口句柄,通過調用OpenCommPort函數(shù)得到
// clock_id : 機號,允許值: 0-255, 由于機具上顯示的機號實際上是兩位16進制數(shù)
// 所以機號范圍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
//參數(shù)說明:
// hPort : 端口句柄, 需要聯(lián)機
//返回值:
// True : 自動識別成功
// False : 機型無法識別,請調用強制設置機型函數(shù)
//備注:
// 由于不同的型號,不同讀頭的機具接受的卡號格式不完全相同,所以DLL需要知道正在聯(lián)機
// 機型來轉換不同的卡號格式,否則所有和卡號有關的函數(shù)將會起不到預期的效果
// 取得機具型號(DLL內部需要識別機型)
function GetClockModel(hPort: THandle;var Model: Integer;var Ver: Double;var cls: Integer): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// 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內部正在聯(lián)機的機具型號(當自動識別無效時)
function SetClockModel(hPort: THandle; Model: Integer; Ver: Double; cls: Integer): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// 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
//參數(shù)說明:
// BaudRate : 新的機具波特率, 允許值: 9600, 19200, 38400
//返回值:
// True : 修改成功
// False : 修改失敗
//備注: 調用前必須使用正確的波特率聯(lián)機, 修改成功后如果需要和機具通訊必須
// 調用 InitCommPort 函數(shù)將端口波特率修改成和新的機具波特率一致
{設備聯(lián)接類}
{版本控制類}
// 查詢在線的機具是否支持某項功能
function GetClockSupports(hPort: THandle; Index: Integer): Boolean; stdcall; external EASTRIVER_API
//參數(shù)說明:
// hPort : 端口句柄, 需要聯(lián)機
// Index : 功能編號, 可能的值如下表
const
fiStoreRecord = $00000000; //存儲刷卡記錄
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -