📄 share.pas
字号:
unit share;
interface
Uses Windows , SysUtils ;
// messages
Const WM_USER = 1024;
Const WM_COMM_SENDDATAEMPTY = (WM_USER + 101);
Const WM_COMM_REQUESTHANGUP = (WM_USER + 102);
Const WM_COMM_RECEIVEERROR = (WM_USER + 103);
Const WM_COMM_MODEMSTATECHANGE = (WM_USER + 104);
Const WM_COMM_RECEIVEDATA = (WM_USER + 105);
Const WM_HDLC_RECVHDLCFRAME = (WM_USER + 106);
Const WM_ICDM_RECVICDMDATA = (WM_USER + 107);
Const WM_ICDM_SENDICDMDATA = (WM_USER + 108);
Const WM_ICDM_ERROR = (WM_USER + 109);
// 其它
Const HD_LIGHTENLED = 1; // lighten LED
Const HD_BLACKLED = 0; // Black LED
Const HD_BEEPSHORT = 1; // Beep short
Const HD_BEEPLONG = 256; // Beep long
Const HD_VERIFYKEYAORKEYB = 1; // Verify keya or keyb
Const HD_VERIFYKEYB = 2; // Verify keyb
Const HD_NOTOPRTHISBLOCK = 0; // Not operate this block
Const HD_OPRTHISBLOCK = 1; // Operate this block
Const HD_CHECKMODE_KEYAORKEYB = $01; // KeyA or KeyB
Const HD_CHECKMODE_KEYB = $02; // KeyB
//---------------------------------------------------------------------------
// 枚举类型
//---------------------------------------------------------------------------
type CHINESETYPE = // 汉字内码
(
GB_GB = 0, // 后台-GB / 终端-GB
GB_BIG5 = 1, // 后台-GB / 终端-BIG5
BIG5_GB = 2, // 后台-BIG5 / 终端-GB
BIG5_BIG5 = 3 // 后台-BIG5 / 终端-BIG5
);
type TACCESSCTRL = // 存取控制字
(
CTRLWORD_0 = $698007ff,
CTRLWORD_1 = $6988077f,
CTRLWORD_2 = $69877788,
CTRLWORD_3 = $698f7708
);
type MFCARDTYPE = // MF卡类型
(
MFCARDTYPE_ID = $00, // ID
MFCARDTYPE_S70 = $02, // Mifare S70
MFCARDTYPE_S50 = $04, // Mifare one
MFCARDTYPE_S10 = $10 // Mifare light
);
type CARDTYPE = // 卡类型
(
CARDTYPE_POS = $0080, // 消费卡
CARDTYPE_ATT = $0040, // 考勤卡
CARDTYPE_ACC = $0020, // 门禁卡
CARDTYPE_OPR = $0010 // 操作卡
);
type OPRCARDTYPE = // 操作卡类型
(
OPRCARDTYPE_ENDOPR = $01, // 终端操作员卡
OPRCARDTYPE_ENDADMIN = $02, // 终端主管操作员卡
OPRCARDTYPE_READEROPR = $03, // 发卡器操作员卡
OPRCARDTYPE_TELLEROPR = $04, // 充值机操作员卡
OPRCARDTYPE_ENDCONFIG = $20 // 终端配置卡
);
type CERTTYPE = // 证件类型
(
CERTTYPE_ID = $0001, // 身份证
CERTTYPE_TEMPID = $0002, // 临时身份证
CERTTYPE_DENIZEN = $0003, // 居民户口本
CERTTYPE_SOLDIER = $0004, // 军人证
CERTTYPE_POLICE = $0005, // 警察证
CERTTYPE_CHINAPASS = $0006, // 中国护照
CERTTYPE_FOREIGNPASS = $0007, // 外国护照
CERTTYPE_OTHER = $0050, // 其它证件
CERTTYPE_NONE = $0051 // 无证件
);
type FILEOFHD4K = // HD4k卡文件
(
FILEOFHD4K_ATT = 1, // 考勤门禁卡文件标志
FILEOFHD4K_POS = 2, // 消费卡文件标志
FILEOFHD4K_OPR = 3 // 操作员卡文件标志
);
type MESSAGETYPE = // 命令
(
// 基本命令
MT_NOP = $00, // 无效命令
MT_READ_CARDID = $01, // 读卡序列号
MT_INIT_NOTECASE = $02, // 初始化钱包
MT_ADD_NOTECASE = $03, // 钱包加值
MT_REDUCE_NOTECASE = $04, // 钱包减值
MT_READ_BLOCK = $05, // 读块
MT_WRITE_BLOCK = $06, // 写块
MT_READ_SECTOR = $07, // 读扇区
MT_WRITE_SECTOR = $08, // 写扇区
MT_BEEP = $09, // 鸣叫
MT_LED = $0a, // lighten LED
MT_RECV_READERPROP = $0b, // 取设备属性
MT_WRITE_BLOCK1 = $0c, // 写块(判断换卡)
MT_WRITE_SECTOR1 = $0d, // 写扇区(判断换卡)
MT_READ_DISCRETEBLOCK = $32, // 读离散块
MT_WRITE_DISCRETEBLOCK = $33, // 写离散块
MT_READ_DISCRETESECTOR = $34, // 读离散扇区
MT_WRITE_DISCRETESECTOR = $35, // 写离散扇区
MT_SET_WAITTIME = $38, // 设置操作等待时间
MT_SEND_CARDID = $39, // 主动上送卡序列号
// HD4k扩展命令
MT_READ_CARDOFHD4K = $a0, // 读卡
MT_WRITE_CARDOFHD4K = $a1, // 写卡
MT_UPDATEKEY_CARDOFHD4K = $a2, // 更改密码
MT_READEW_CARDOFHD4K = $a3, // 读钱包
MT_WRITEEW_CARDOFHD4K = $a4, // 写钱包
// HD6k扩展命令
MT_INIT_CARDOFHD6K = $b0, // 初始化卡(写标识目录区以及应用扇区的密码)
MT_ERASE_CARDOFHD6K = $b1, // 洗卡(清卡密码及数据)
MT_UPDATEKEY_CARDOFHD6K = $b2, // 更新卡密码
MT_ERASEDATA_CARDOFHD6K = $b3, // 清卡数据(应用扇区的数据清为0xff, 但不改密码)
MT_READDATA_CARDOFHD6K = $b4, // 读卡
MT_WRITEDATA_CARDOFHD6K = $b5, // 写卡
MT_READEW_CARDOFHD6K = $b6, // 读钱包
MT_WRITEEW_CARDOFHD6K = $b7, // 写钱包
MT_READORGEW_CARDOFHD6K = $b8, // 读原始钱包
MT_WRITEORGEW_CARDOFHD6K = $b9, // 写原始钱包
MT_READSECTOR_CARDOFHD6K = $ba, // 读扇区
MT_WRITESECTOR_CARDOFHD6K = $bb // 写扇区
);
type RESULTCODE = // 结果码
(
RC_SUCCESS = 0, // 成功
RC_POLLCARDFAIL = 1, // 寻卡失败
RC_ANTICOLLFAIL = 2, // 防冲突失败
RC_SELECTCARDFAIL = 3, // 选卡失败
RC_AUTHENTICATIONFAIL = 4, // 认证失败
RC_READFAIL = 5, // 读卡失败
RC_WRITEFAIL = 6, // 写卡失败
RC_ADDFAIL = 7, // 加值失败
RC_REDUCEFAIL = 8, // 减值失败
RC_CARDBEENREPLACE = 9, // 已换卡
RC_BLOCKOPRFAIL = 10, // 块操作失败
RC_BLOCK0OPRFAIL = 11, // 块0操作失败
RC_BLOCK1OPRFAIL = 12, // 块1操作失败
RC_BLOCK2OPRFAIL = 13, // 块2操作失败
RC_BLOCK3OPRFAIL = 14, // 块3操作失败
RC_BLOCKOVERFLOW = 20, // 块号非法
RC_AUTHMODEERROR = 21, // 认证方式非法
RC_MONEYOVERFLOW = 22, // 金额越界
RC_CTRLWORDERROR = 23, // 控制字非法
RC_SECTOROVERFLOW = 24, // 扇区号非法
RC_FRMCHECKSUMERROR = 1000, // 帧校验码错误
RC_RECVDATAERROR = 1001, // 接收数据格式错误
RC_SENDDATAERROR = 1002, // 发送数据格式错误
RC_NOTHISCOMMAND = 1003 // 无此命令
);
//---------------------------------------------------------------------------
// 数据结构定义
//---------------------------------------------------------------------------
// 基本数据结构
type CARDIDSTRUCT = packed record // 卡序列号结构
CardType:BYTE; // 卡类型/钱包索引/块号/扇区号
CardID:Cardinal; // 卡序列号
end;
type TKey = array[1..16] of Byte;
//type TNewKey= array[1..16] of Byte;
type HEADER_BLOCKOPRSTRUCT = packed record // Header
BlockNum:BYTE; // 块号/扇区号
AuthMode:BYTE; // 认证方式
// AuthKeyA[6]:BYTE; // 认证密码A
AuthKeyA:array[1..6] of byte;
// AuthKeyB[6]:BYTE; // 认证密码B
AuthKeyB:array[1..6] of byte;
end;
type HEADER_SECTOROPRSTRUCT = packed record // Header
SectorNum:BYTE; // 扇区号
// BlockFlag[4]:bool; // 块操作标志
BlockFlag:array[1..4] of Boolean;
AuthMode:BYTE; // 认证方式
// BYTE AuthKeyA[6]; // 认证密码A
AuthKeyA:array[1..6] of byte;
// BYTE AuthKeyB[6]; // 认证密码B
AuthKeyB:array[1..6] of byte ;
end;
type BLOCKSTRUCT = packed record // 块结构
// BYTE Data[16];
//Data:array[1..16] of byte ;
Data:TKey;
end;
type KEYSTRUCT = packed record // 密码块结构
// BYTE KeyA[6]; // 密码A
KeyA:array[1..6] of byte;
// BYTE AccessCtrl[4]; // 存取控制
AccessCtrl:array[1..4] of byte;
// BYTE KeyB[6]; // 密码B
KeyB:array[1..6] of byte ;
end;
type SECTORSTRUCT = packed record // 扇区结构
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -