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

📄 share.pas

📁 HD 6P RFID 发卡器、考勤卡钟 RS232 通讯接口程序 Delphi 源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -