You are on page 1of 7

ADEL 门锁接口规范

爱迪尔门锁系统接口函数(SDK)说明
(MAINDLL.DLL 函数说明)
适用门锁系统:V6.51 及以上版本。
一、门锁函数(必须已经安装并设置好门锁系统)
1、Init
初始化。函数原形:
int Init(int software,char *server,char *username, int port, int
Encoder, int TMEncoder);
参数:
software [in]:指定门锁系统,参见注 2。
server [in]:字符指针,指定门锁系统数据库安装的服务器(SQL Server)名。
username [in]:字符指针,用户名,用于门锁系统记录操作人员。
Port [in]:串口号,0-USB,1-COM1,2-COM2,3-COM3,4-COM4 依次类推。
Encoder [in]:发行机类型,0-手动发行机,1-自动发行机,2-MSR206(磁卡)。
TMEncoder [in]:TM 发行机类型,1-DS9097E,5-DS9097U
返回值:见注 1。
2、 EndSession
结束工作期。函数原形:
int EndSession(void);
参数:无
返回值:见注 1。
3、 ChangeUser
更改操作员。函数原形:
void ChangeUser(char *username);
参数:
username [in]:字符指针,用户名,用于门锁系统记录操作人员。
返回值:无。

4、 NewKey
发行新客人卡,此功能注销当前在用的客人卡,新发行的客人卡开门后原来的客人卡将
不能使用。函数原形:
int NewKey(char *room,char *gate,char *stime,char *guestname,char
*guestid, int overflag, long *cardno,char * track1,char * track2);
参数:
room [in]:房号,6 字节字符串,必须是门锁系统设置的房号。
gate [in]:公共通道,字符串参数,“00”表示按默认授权通道,“99”表示授
权所有公共通道,其他为指定通道代码。例如:“010203”表示授权 01、02、03 三个通道。
Stime [in]:起止时间,24 字节字符串,格式 yyyymmddhhnnyyyymmddhhnn,例如:
“200012311230200101011230”表示 2000 年 12 月 31 日 12 时 30 分到 2001 年 1 月 1 日 12
时 30 分。Lock9200:起止时间不能在同一天内,且不能超过 1 个月。
Guestname [in]:客人姓名,最大 30 字节,可以为 NULL。
Guestid [in]:客人 ID,最大 30 字节,可以为 NULL。
Overfla [in]:整形,是否覆盖当前卡上的内容。1-覆盖,当前卡不是新卡则自动
注销(必须是客人卡)。0-不覆盖,不是新卡则返回。磁卡(手动发行机)忽略此参数,直
1
深圳市爱迪尔电子有限公司 2007 年 1 月
ADEL 门锁接口规范

接覆盖,不自动注销。
Cardno [out]:长整形指针,接收卡号(发卡后分配的唯一卡代码)。可以为
NULL。
track1 [in]:字符串指针,磁卡第 1 轨数据,如不写此轨可为 NULL。
track2 [in]:字符串指针,磁卡第 2 轨数据,如不写此轨可为 NULL。
返回值:见注 1。
5、 DupKey
“复制”客人卡,新发行的客人卡与原来的客人卡可同时使用,且起始时间相同。函数
原形:
int DupKey(char *room,char *gate,char *stime,char *guestname,char
*guestid, int overflag, long *cardno,char * track1,char * track2);
参数:
room [in]:房号,6 字节字符串,必须是门锁系统设置的房号。
gate [in]:公共通道,字符串参数,“00”表示按默认授权通道,“99”表示授
权所有公共通道,其他为指定通道代码。例如:“010203”表示授权 01、02、03 三个通道。
Stime [in]:起止时间,24 字节字符串,格式 yyyymmddhhnnyyyymmddhhnn,例如:
“200012311230200101011230”表示 2000 年 12 月 31 日 12 时 30 分到 2001 年 1 月 1 日 12
时 30 分。起始时间与在用客人卡相同。
Guestname [in]:客人姓名,最大 30 字节,可以为 NULL。
Guestid [in]:客人 ID,最大 30 字节,可以为 NULL。
Overfla [in]:整形,是否覆盖当前卡上的内容。1-覆盖,当前卡不是新卡则自动
注销(必须是客人卡)。0-不覆盖,不是新卡则返回。磁卡(手动发行机)忽略此参数,直
接覆盖,不自动注销。
Cardno [out]:长整形指针,接收卡号(发卡后分配的唯一卡代码)。可以为
NULL。
track1 [in]:字符串指针,磁卡第 1 轨数据,如不写此轨可为 NULL。
track2 [in]:字符串指针,磁卡第 2 轨数据,如不写此轨可为 NULL。
返回值:见注 1。
6、ReadCard
读卡。函数原形:
int ReadCard(char *room, char *gate,char *stime, char *guestname, char
*guestid, char *track1, char *track2, long *cardno, int *st);
参数:
room [out]:字符串指针,接收返回的房号,建议 10 字节。
gate [out]:字符串指针,接收返回的授权公共通道,可以为 NULL。
Guestname [out]:字符串指针,接收返回的客人姓名,可以为 NULL。
Guestid [out]:字符串指针,接收返回的客人 ID,可以为 NULL。
track1 [out]:接收磁卡第 1 轨数据,可以为 NULL。
track2 [out]:接收磁卡第 2 轨数据,可以为 NULL。
Cardno [out]:长整形指针,接收返回的卡号,可以为 NULL。
St [out]:整形指针,接收返回的卡状态,1-正常使用,3-正常注销,4-遗失注
销,5-损毁注销,6-自动注销。可以为 NULL。
返回值:见注 1。
7、 EraseCard
2
深圳市爱迪尔电子有限公司 2007 年 1 月
ADEL 门锁接口规范

注销卡,同时更新数据库数据。函数原形:
int EraseCard (long cardno,char * track1,char * track2);
参数:
cardno [in]:卡号,可以为 0。当此参数为 0 时:IC 卡、RF 卡、TM 卡、磁卡(自动
发行机)自动读取卡号并注销,同时更新数据库;磁卡(手动发行机)注销当前卡,不更
新 数 据 库 , 建 议 再 调 用 CheckOut 函 数 更 新 数 据 库 , 或 先 读 卡 获 取 卡 号 后 再 调 用
EraseCard。
track1 [in]:字符串指针,磁卡第 1 轨数据,如不写此轨可为 NULL。
track2 [in]:字符串指针,磁卡第 2 轨数据,如不写此轨可为 NULL。
返回值:见注 1。
8、 CheckOut
退房,仅更新数据库数据,不注销卡。函数原形:
int CheckOut (char *room, long cardno);
参数:
room [in]:房号。
Cardno [in]:卡号,可以为 0。当此参数为 0 时,将客房所有客人卡标记为正常注
销。
返回值:见注 1。
9、 LostCard
遗失注销,仅更新数据库数据,不注销卡。函数原形:
int Lostcard (char *room, long cardno);
参数:
room [in]:房号。
Cardno [in]:卡号,标记为遗失注销客人卡的卡号。
返回值:见注 1。
二、公用函数(门锁接口和独立使用均可)
10、 PopCard
弹出卡。函数原形:
int PopCard(void);
参数:无
返回值:见注 1,独立使用时返回 20 表示‘没有调用 SetPort’。
11、SetPort
设置串口,调用 Init 函数后不必调用此函数。函数原形:
int SetPort(int software,int port, int encoder, int tmencoder);
参数:
software [in]:指定门锁系统,参见注 2。
Port [in]:串口号,整形,1-COM1,2-COM2,3-COM3,4-COM4 依次类推。
Encoder [in]:发行机类型:0-手动发行机,1-自动发行机。
TMEncoder [in]:TM 发行机类型:1-DS9097E,5-DS9097U。
返回值:见注 1。
12、ReadCardId
读 Mifare 卡 ID,函数原形:
int ReadCardId(unsigned long *pid);
参数:
3
深圳市爱迪尔电子有限公司 2007 年 1 月
ADEL 门锁接口规范

pid [out]:4 字节无符指针,接收卡 ID。


返回值:见注 1。
13、CheckSC(Lock3200K,A30 支持)
核对 4442 卡密码。函数原形:
int CheckSC(unsigned char *sc);
参数:
sc [in]:IC 卡密码,3 字节无符字符指针。
返回值:见注 1。
14、ReadIC(Lock3200K,Lock4200D,Lock7200D,A30,A90 支持)
读卡数据。函数原形:
int ReadIC(unsigned int start, unsigned int len, unsigned char *str);
参数:
start [in]:起始地址,指定数据写的位置。对于 Mifare 卡(Adel9200),起始地址
由两字节组成:高字节为块号,低字节为区号。如 0x0102 表示读取 2 区 1 块。
Len [in]:要读取数据的长度。对于 Mifare 卡(Adel9200)长度为 16 的整数倍。
str [in,out]:无符字符指针,接收所读取的数据。对于 Mifare 卡(A90)同时作为
输入参数传入所读区的授权密码,由 7 个字节组成:第一个字节为授权码:若为 0 需
核对 A 密码,若为 1 需核对 B 密码,后 6 个字节为密码。
返回值:见注 1。
15、WriteIC(Lock3200K,Lock4200D,Lock7200D,Lock9200T、A30,A90 支
持)
写数据到 IC 卡。(Lock3200K:建议用户数据存储在 0x80 及以后的字节;Lock9200T:
建议用户数据存储在 0x18 及以后的 8 个字节)。函数原形:
int WriteIC(unsigned int start, unsigned int len, unsigned char *str);
参数:
start [in]:起始地址,指定数据写的位置;对于 Mifare 卡(Adel9200),起始
地址由两字节组成:高字节为块号,低字节为区号。如 0x0102 表示读取 2 区 1 块。
Len [in]:写入数据的长度。对于 Mifare 卡(Adel9200)长度为 16 的整数倍。
Str [in]:无符字符指针,要写入 IC 卡的数据。对于 Mifare 卡(A90)前 7 个字
节传入所读区的授权密码:第一个字节为授权码:若为 0 需核对 A 密码,若为 1 需核对 B
密码,后 6 个字节为密码。从第 8 个字节开始为写入的数据。
返回值:见注 1。
16、WriteMagCard
写磁卡,建议用户数据存储在 1、2 轨,门锁系统使用第 3 轨。函数原形:
int WriteMagCard(char *track1, char * track2, char * track3);
参数:
track1 [in]:字符串指针,磁卡第 1 轨数据,如不写此轨可为 NULL。
track2 [in]:字符串指针,磁卡第 2 轨数据,如不写此轨可为 NULL。
track3 [in]:字符串指针,磁卡第 3 轨数据,如不写此轨可为 NULL。
返回值:见注 1。
17、 ReadMagCard
读磁卡。函数原形:
int ReadMagCard(char * track1, char * track2, char * track3);
参数:
4
深圳市爱迪尔电子有限公司 2007 年 1 月
ADEL 门锁接口规范

track1 [out]:字符串指针,接收磁卡第 1 轨数据,如不读此轨为 NULL。


track2 [out]:字符串指针,接收磁卡第 2 轨数据,如不读此轨为 NULL。
track3 [out]:字符串指针,接收磁卡第 3 轨数据,如不读此轨为 NULL。
返回值:见注 1。
18、 Reader_Beep
蜂鸣器。函数原形:
int Reader_Beep (int Sound);
参数:
Sound [in]:指定声音和 LED 状态。11-绿灯 1 秒,长叫一声;12-红灯 1 秒,长叫
一声;15-红灯 1 秒,短叫两声;16-短叫一声。
返回值:见注 1。

三、网络节电开关函数
19、GetBuffInfo
函数原形:
int GetBuffInfo (unsigned char *buff,int len,int *cardtype,int
*cardst,int *cardno,char *roomno,char *username,char *stime);
参数:
buff [in]:无符字符指针,卡上数据。
len [in]:数据长度(字节)。
cardtype[out]:整型指针,接收卡型:1-总裁卡,2-别墅卡,3-管理卡,4-总控
卡,5-时钟卡,6-领班卡,7-楼层卡,8-清洁卡,9-客人卡,10-终止卡,11-会议卡,12-
应急卡,13-退房卡,14-备用卡;可以为 NULL。
cardst[out]:整型指针,接收卡状态:1-正常,3-注销,4-遗失,5-损毁,6-过
期;可以为 NULL。
cardno[out]:整型指针,接收卡号,可以为 NULL。
roomno[out]:字符指针,接收客人卡/备用卡房号,领班卡/楼层卡/清洁卡区域。
不小于 20 字节,可以为 NULL。
username[out]:字符指针,接收客人姓名,不小于 20 字节,可以为 NULL。
返回值:见注 1。
stime[out]:字符指针,接收客人卡/清洁卡有效期,不小于 28 字节,可以为
NULL。格式 yyyymmddhhnnyyyymmddhhnn,例如:“200012311230200101011230”表示 2000
年 12 月 31 日 12 时 30 分到 2001 年 1 月 1 日 12 时 30 分。
返回值:见注 1。
20、GetMagBuffInfo
函数原形:
int GetMagBuffInfo (char *buff, int *cardtype,int *cardst,int
*cardno,char *roomno,char *username,char *stime);
参数:
buff [in]:字符串指针,磁卡数据。
cardtype[out]:整型指针,接收卡型:1-总裁卡,2-别墅卡,3-管理卡,4-总控
卡,5-时钟卡,6-领班卡,7-楼层卡,8-清洁卡,9-客人卡,10-终止卡,11-会议卡,12-
应急卡,13-退房卡,14-备用卡;可以为 NULL。
cardst[out]:整型指针,接收卡状态:1-正常,3-注销,4-遗失,5-损毁,6-过
5
深圳市爱迪尔电子有限公司 2007 年 1 月
ADEL 门锁接口规范

期;可以为 NULL。
cardno[out]:整型指针,接收卡号,可以为 NULL。
roomno[out]:字符指针,接收客人卡/备用卡房号,领班卡/楼层卡/清洁卡区域。
不小于 20 字节,可以为 NULL。
username[out]:字符指针,接收客人姓名,不小于 20 字节,可以为 NULL。
返回值:见注 1。
stime[out]:字符指针,接收客人卡/清洁卡有效期,不小于 28 字节,可以为
NULL。格式 yyyymmddhhnnyyyymmddhhnn,例如:“200012311230200101011230”表示 2000
年 12 月 31 日 12 时 30 分到 2001 年 1 月 1 日 12 时 30 分。
返回值:见注 1。

21、GetCardInfo
函数原形:
int GetCardInfo(int cardno,int cardtype,int *cardst, char *roomno,char
*username,char *stime);
参数:
cardno [in]:卡号。
cardtype[in]:卡型。
cardst[out]:整型指针,接收卡状态:1-正常,3-注销,4-遗失,5-损毁,6-过
期;可以为 NULL。
roomno[out]:字符指针,接收客人卡/备用卡房号,领班卡/楼层卡/清洁卡区域。
不小于 20 字节,可以为 NULL。
username[out]:字符指针,接收客人姓名,不小于 20 字节,可以为 NULL。
stime[out]:字符指针,接收客人卡/清洁卡有效期,不小于 28 字节,可以为
NULL。格式 yyyymmddhhnnyyyymmddhhnn,例如:“200012311230200101011230”表示 2000
年 12 月 31 日 12 时 30 分到 2001 年 1 月 1 日 12 时 30 分。
返回值:见注 1。

注:一、函数返回值:
0-操作成功 1-读写错误/数据错误
2-卡已损坏 3-无卡
4-串口错误 5-卡被更换
6-不是新卡 7-卡是新卡
8-非本系统卡 9-不是客人卡
10-不是会员卡 11-密码错误
12-无开门记录 13-卡型不正确
14-参数错误 15-用户取消操作(按下<ESC>键)
16-等待超时 17-插卡错误
18-卡是空白卡或插卡错误 19-保留(为向前兼容)
20-没有调用 Init 函数 21-不支持该版本的门锁软件
22-连接(门锁系统数据库)错误 23-门锁系统参数不存在
24-初始化失败 25-没有客人在住/指定客人不存在
26-客房已满 27-没有此卡记录
28-没有调用 SetPort 函数 29-无效的客房房号
6
深圳市爱迪尔电子有限公司 2007 年 1 月
ADEL 门锁接口规范

30-错误的时间范围 31-卡号已存在,无法登记(Lock9200)
32-不支持调用 33-无效的授权码,授权码错误或过期

二、门锁系统常量:
Lock3200-1 Lock3200K-2 Lock4200-3 Lock4200D-4 Lock5200-5
Lock6200-6 Lock7200-7 Lock7200D-8 Lock9200-9 Lock9200T-10

A30-11 A50-14 A90-18 A92-22

三、运行环境:32 位 Windows 操作系统,使用门锁函数需安装 MDAC。

四、调用方式:遵循 Windows API 调用标准,即 stdcall。

五、参数说明:[in]为输入参数,[out]为输出参数。

7
深圳市爱迪尔电子有限公司 2007 年 1 月

You might also like