1、动态库函数使用说明 一、 动态库说明 (1) 该动态库接口所适用的卡类型:MF1S50卡。 (2) “btlock73L.dll”这个文件是调用读写卡函数的动态库。 (3) “zymsr232.dll”这个文件是调用RW-21读卡器的驱动,“zymurusb.dll、EasyD12_500.dll”这两个文件是调用RW-33读卡器的驱动,“btmf1232.dll”这个文件是调用RW-26D读卡器的驱动,“acr120u.dll、AcsReader.dll”这两个文件是调用RW-41读卡器的驱动。 (4) 酒店密码(HotelPwd)由酒店提供。 (5) 房间号(DoorID)由酒
2、店提供, 门锁软件有房间号与房间名称的对应表。 (6) 宾客流水号(1---4294967296)可按时间生成或者按累加1算法生成,具有顶替功能,即宾客流水卡号大的宾客卡顶替宾客流水号小的宾客卡。 (7) 宾客序号(1-255),即表示同住宾客卡时同住宾客的流水号相同,序号不同。 (8) 更改酒店密码时,密码一定要6位字符串。 (9) 有效时间的值一定要10位,年、月、日、时、分。 (10) MF1S50卡扇区默认值为0,当酒店所使用的扇区己作更改时,请填写相应的扇区号。 (11) 每一个使用接口发卡点都必须配合一个“硬件狗”才可以运行,即是有多少个发卡点就需要多少个“硬件狗”。
3、 二、“btlock73L.dll”库函数说明(语言:DelPhi7) (1) function Write_Guest_Card(Port, ReaderType, SectorNo: Byte; HotelPwd: PChar; ClientID: Longword; CardNo, GuestSN, GuestIdx: Integer; DoorID, SuitDoor, PubDoor, BeginTime, EndTime: PChar): Integer; 说明:写宾客卡函数。 参数说明: Port:通讯口号1、2、3、4分别代表串口COM1、COM2、COM3、C
4、OM4(范围 1------4); 当使用的读卡器为USB设备时,通迅口号不生效。 ReaderType:MF读卡器类型,1:RW-21;2:RW-33;3:RW-26B;4:RW-41 SectorNo:MF1S50卡使用扇区号(范围0------15) HotelPwd:酒店密码 (6位字符串,字符串内容为ASCII码字符) ClientID:客户对应的客户标识(范围0 ------4,294,967,295) CardNo:宾客卡号(范围 1------4294967296) GuestSN:宾客流水号(范围 1-----
5、4294967296) GuestIdx:宾客序号(范围 1------255) DoorID:房间号 (6位字符串) SuitDoor:套房内门选号,即宾客卡能够开启的多个套房内门的代号串,长度为4, 默认值为“0000”。宾客卡最多能够同时开启16个套房内门及1个套房大门。如果门锁系统中存在两个或以上前6位门锁代号相同的房间,则该系统设置了套房。如果门锁系统没有设置套房或者不需要开启套房内门(宾客卡一定能开启套房外门),则可以填写默认值“0000”。算法:从右至左按位判断是否能够开启对应序号的套房内门,如果能够开启则置1,否则置0。最后再合并成十六进制的字符串。举例:
6、宾客卡可以开启01、02、07、08号套房内门,则置位二进制字符串为:“0000 0000 1100 0011”,转化为十六进制字符串为:“00C3”。 PubDoor:公共门选号,即宾客卡能够开启的多种公共门的代号串,长度为8,默认值为“00000000”。宾客卡最多能同时开启32种公共门。如果系统没有设置公共门或者不需要开启公共门,则可以填写默认值“00000000”。从右至左按位判断是否能够开启对应序号的公共门,如果能够开启则置1,否则置0。最后再合并成十六进制的字符串。宾客卡可以开启01、08、15号公共门,则置位二进制字符串为:“0000 0000 0000 0000
7、0100 0000 1000 0001”,转化为十六进制字符串为:“00004081”。 BeginTime:有效起始时间,长度为10,时间格式“年年月月日日时时分分”。 EndTime:有效终止时间,长度为10,时间格式“年年月月日日时时分分”。 (2) function Read_Guest_Card(Port, ReaderType, SectorNo: Byte; HotelPwd: PChar; ClientID: Longword; var CardNo, GuestSN, GuestIdx: Integer; DoorID
8、 SuitDoor, PubDoor, BeginTime, EndTime: PChar): Integer 说明:读宾客卡函数。 参数说明: Port:通讯口号1、2、3、4分别代表串口COM1、COM2、COM3、COM4(范围 1------4); 当使用的读卡器为USB设备时,通迅口号不生效。 ReaderType:MF读卡器类型,1:RW-21;2:RW-33;3:RW-26B;4:RW-41 SectorNo:MF1S50卡使用扇区号(范围0------15) HotelPwd:酒店密码 (6位字符串,字符串内容为ASCII码字符)
9、 ClientID:客户对应的客户标识(范围0 ------4,294,967,295) CardNo:宾客卡号(范围 1------4294967296) GuestSN:宾客流水号(范围 1------4294967296) GuestIdx:宾客序号(范围 1------255) DoorID:房间号 (6位字符串) SuitDoor:套房内门选号,即宾客卡能够开启的多个套房内门的代号串,长度为4, 默认值为“0000”。宾客卡最多能够同时开启16个套房内门及1个套房大门。如果门锁系统中存在两个或以上前6位门锁代号相同的房间,则该系统设置了套
10、房。如果门锁系统没有设置套房或者不需要开启套房内门(宾客卡一定能开启套房外门),则可以填写默认值“0000”。算法:从右至左按位判断是否能够开启对应序号的套房内门,如果能够开启则置1,否则置0。最后再合并成十六进制的字符串。举例:宾客卡可以开启01、02、07、08号套房内门,则置位二进制字符串为:“0000 0000 1100 0011”,转化为十六进制字符串为:“00C3”。 PubDoor:公共门选号,即宾客卡能够开启的多种公共门的代号串,长度为8,默认值为“00000000”。宾客卡最多能同时开启32种公共门。如果系统没有设置公共门或者不需要开启公共门,则可以填写默认值“
11、00000000”。从右至左按位判断是否能够开启对应序号的公共门,如果能够开启则置1,否则置0。最后再合并成十六进制的字符串。宾客卡可以开启01、08、15号公共门,则置位二进制字符串为:“0000 0000 0000 0000 0100 0000 1000 0001”,转化为十六进制字符串为:“00004081”。 BeginTime:有效起始时间,长度为10,时间格式“年年月月日日时时分分”。 EndTime:有效终止时间,长度为10,时间格式“年年月月日日时时分分”。 (3) function Bin_Hex(Dest: PChar; S
12、ource: PChar; Len: Integer): Integer 说明:二进制字符串转十六进制字符串。 参数说明: Dest:目的十六进制字符串。 Source:原二进制字符串。 Len:原二进制字符串长度。 参数返回:0为转换成功,-1为不转成功。 (4) function Hex_Bin(Dest: PChar; Source: PChar; Len: Integer): Integer 说明:十六进制字符串转二进制字符串。 参数说明: Dest:目的二进制字符串。 Source:原十六进制字符串。 Len:原十六进制字符串长度。 参数返回:0
13、为转换成功,-1为不转成功。 (5) function SerialNo_FromNow():Integer; 说明:通过本地电脑的时间换算出4个字节的整型流水号,可以用此作为宾客卡号和宾客流水号的值。 参数返回:> 0 当前电脑时间的整型流水号。 (6) function Reader_Alarm (Port, ReaderType, AlarmCount: Byte):Integer; 说明:读卡器蜂鸣函数。 参数说明: Port:通讯口号1、2、3、4分别代表串口COM1、COM2、COM3、COM4(范围 1------4); 当使用的读卡器为USB设备
14、时,通迅口号不生效。 ReaderType:MF读卡器类型,1:RW-21;2:RW-33;3:RW-26B;4:RW-41 AlarmCount:读卡器蜂鸣次数(范围 1-----255) (7) function Write_Guest_Lift(Port, ReaderType, SectorNo: Byte; HotelPwd: PChar; ClientID: Longword; CardNo, BeginAddr, EndAddr, MaxLiftAddr: Integer; BeginTime, EndTime, LiftData: PCha
15、r): Integer; 说明:写电梯控制信息函数。 参数说明: Port:通讯口号1、2、3、4分别代表串口COM1、COM2、COM3、COM4(范围 1------4); 当使用的读卡器为USB设备时,通迅口号不生效。 ReaderType:MF读卡器类型,1:RW-21;2:RW-33;3:RW-26B;4:RW-41 SectorNo:MF1S50卡使用扇区号,该扇区号为宾客卡所使用的扇区号(范围0------15) HotelPwd:酒店密码 (6位字符串,字符串内容为ASCII码字符) ClientID:客户对应
16、的客户标识(范围0 ------4,294,967,295) CardNo:卡号(范围 1------4294967296) BeginAddr:电梯所用的卡上起始地址,具体值请查看门锁软件 EndAddr:电梯所用的卡上结束地址,具体值请查看门锁软件 MaxLiftAddr:所有电梯使用最大的结束地址,具体值请查看门锁软件 BeginTime:有效起始时间,长度为10,时间格式“年年月月日日时时分分”。 EndTime:有效终止时间,长度为10,时间格式“年年月月日日时时分分”。 LiftData:电梯控制信息,即宾客卡可使用
17、的电梯控制串码(只对一台电梯),长度为电梯可控制楼层数,算法:从左至右按位判断是否能够开启对应楼层号,如果能够开启则置1,否则置0。最后再合并成十六进制的字符串。举例:宾客卡可以开启01、02、07、08号楼层,该电梯可控制十六层,则置位二进制字符串为:“1100 0011 0000 0000”,转化为十六进制字符串为:“C300”。 (8) function Read_Guest_Lift(Port, ReaderType, SectorNo: Byte; HotelPwd: PChar; BeginAddr, EndAddr: Integer; ClientID: Longword;
18、 var CardNo: Integer; BeginTime, EndTime, LiftData: PChar): Integer; 说明:读电梯控制信息函数。 参数说明: Port:通讯口号1、2、3、4分别代表串口COM1、COM2、COM3、COM4(范围 1------4); 当使用的读卡器为USB设备时,通迅口号不生效。 ReaderType:MF读卡器类型,1:RW-21;2:RW-33;3:RW-26B;4:RW-41 SectorNo:MF1S50卡使用扇区号,该扇区号为宾客卡所使用的扇区号(范围0------15)
19、 HotelPwd:酒店密码 (6位字符串,字符串内容为ASCII码字符) BeginAddr:电梯所用的卡上起始地址,具体值请查看门锁软件 EndAddr:电梯所用的卡上结束地址,具体值请查看门锁软件 ClientID:客户对应的客户标识(范围0 ------4,294,967,295) CardNo:卡号(范围 1------4294967296) BeginTime:有效起始时间,长度为10,时间格式“年年月月日日时时分分”。 EndTime:有效终止时间,长度为10,时间格式“年年月月日日时时分分”。 LiftDat
20、a:电梯控制信息,即宾客卡可使用的电梯控制串码(只对一台电梯),长度为电梯可控制楼层数,算法:从左至右按位判断是否能够开启对应楼层号,如果能够开启则置1,否则置0。最后再合并成十六进制的字符串。举例:宾客卡可以开启01、02、07、08号楼层,该电梯可控制十六层,则置位二进制字符串为:“1100 0011 0000 0000”,转化为十六进制字符串为:“C300”。 (9) function Write_Guest_PowerSwitch(Port, ReaderType, SectorNo: Byte; PowerSwitchPwd: PChar; CardNo, GuestSex:
21、Integer; DoorID,GuestName, BeginTime, EndTime: PChar; PowerSwitchType: Byte): Integer; 说明:写取电开关信息函数。 参数说明: Port:通讯口号1、2、3、4分别代表串口COM1、COM2、COM3、COM4(范围 1------4); 当使用的读卡器为USB设备时,通迅口号不生效。 ReaderType:MF读卡器类型,1:RW-21;2:RW-33;3:RW-26B;4:RW-41 SectorNo:MF1S50卡使用扇区号(范围0------15)
22、 PowerSwitchPwd:取电开关密码 (12位字符串,字符串内容为十六进制码字符) CardNo:宾客卡号(范围 1------4294967296) GuestSex:宾客性别,0:男,1:女 DoorID:房间号 (6位字符串) GuestName:宾客姓名(8位字符串) BeginTime:有效起始时间,长度为12,时间格式“年年月月日日时时分分秒秒”。 EndTime:有效终止时间,长度为12,时间格式“年年月月日日时时分分秒秒”。 PowerSwitchType:取电开关类型,1:8601-1M
23、57BA;2:8601-6M-57BA; (10) function Read_Guest_PowerSwitch(Port, ReaderType, SectorNo: Byte; PowerSwitchPwd: PChar; var CardNo, GuestSex: Integer; DoorID, GuestName, BeginTime, EndTime: PChar; PowerSwitchType: Byte): Integer 说明:读取电开关信息函数。 参数说明: Port:通讯口号1、2、3、4分别代表串口COM1、COM2、COM3、COM4(范
24、围 1------4); 当使用的读卡器为USB设备时,通迅口号不生效。 ReaderType:MF读卡器类型,1:RW-21;2:RW-33;3:RW-26B;4:RW-41 SectorNo:MF1S50卡使用扇区号(范围0------15) PowerSwitchPwd:取电开关密码 (12位字符串,字符串内容为十六进制码字符) CardNo:宾客卡号(范围 1------4294967296) GuestSex:宾客性别,0:男,1:女 DoorID:房间号 (6位字符串) GuestName:宾客姓名(8位字符串
25、 BeginTime:有效起始时间,长度为12,时间格式“年年月月日日时时分分秒秒”。 EndTime:有效终止时间,长度为12,时间格式“年年月月日日时时分分秒秒”。 PowerSwitchType:取电开关类型,1:8601-1M-57BA;2:8601-6M-57BA; (11) function Write_Data(Port, ReaderType, SectorNo: Byte; SectorPwd: PChar; Data: PChar): Integer; 说明:写其它扇区数据函数。 参数说明: Port:通讯口号1
26、2、3、4分别代表串口COM1、COM2、COM3、COM4(范围 1------4); 当使用的读卡器为USB设备时,通迅口号不生效。 ReaderType:MF读卡器类型,1:致远MF串口读卡器;2:致远MF USB读卡器;3: 必达MF串口读卡器;4:ACS120USB读卡器 SectorNo:MF1S50卡使用扇区号(范围1------15) SectorPwd:扇区密码 (12位字符串,字符串内容为16进制数字符串) Data:写入数据,长度为32,数据为16进制数字符串。 (12) function Read_
27、Data(Port, ReaderType, SectorNo: Byte; SectorPwd: PChar; Data: PChar): Integer; 说明:读其它扇区数据函数。 参数说明: Port:通讯口号1、2、3、4分别代表串口COM1、COM2、COM3、COM4(范围 1------4); 当使用的读卡器为USB设备时,通迅口号不生效。 ReaderType:MF读卡器类型,1:致远MF串口读卡器;2:致远MF USB读卡器;3: 必达MF串口读卡器;4:ACS120USB读卡器 SectorNo:MF1S50卡使用扇区号(范围1--
28、15) SectorPwd:扇区密码 (12位字符串,字符串内容为16进制数字符串) Data:读出数据,长度为32,数据为16进制数字符串。 三、函数错误类型代码 0:表示成功。 255:表示不成功。 1:打开串口错误。 2:无卡错误。 3:卡类型错误。 4:读卡错误。 5:酒店密码错误。 6:写卡错误。 7:客户标识非法。 8:注册过期。 9:找不到加密狗。 四、其它说明 1、酒店密码(HotelPwd)由酒店提供。 2、房间号(DoorID)由酒店提供, 门锁软件有房间号与房间名称的对应表。
29、 3、宾客流水号(1---4294967296)可按时间生成或者按累加1算法生成,具有顶替功能 即宾客流水卡号大的宾客卡顶替宾客流水号小的宾客卡;如果宾客流水号是使用按时间生成算法时,可调用函数“SerialNo_FromNow”来自动将电脑当前时钟换算成出4个字节的整型流水号。 4、宾客序号(1-255),即表示同住宾客卡时同住宾客的流水号相同,序号不同。 5、更改酒店密码时,密码一定要6位字符串。 6、有效时间的值一定要10位,年、月、日、时、分。 7、MF1S50卡扇区默认值为0,当酒店所使用的扇区己作更改时,请填写相应的扇区号。 8、写取电
30、开关信息函数和读取电开关信息函数中的取电开关类型包含两种,分别是:8601-1M-57BA、8601-6M-57BA;若取电开关为公司型号的取电开关,分别是:8602-1M-57BA、8602-1M-57BB,则无需调用以上两个函数,直接调用写宾客卡信息函数和读宾客卡信息函数即可。 五、操作流程 1、写卡流程 该步骤为写客人卡函数。 Write_Guest_Card 该步骤为写电梯信息,该步骤可选。 Write_Guest_Lift 该步骤为写取电开关信息,该步骤可选。 Write_Guest_ PowerSwitch
31、该步骤为写其它扇区数据信息,该步骤可选。 Write_Data Reader_Alarm 该步骤为写完卡后读卡器蜂鸣。 2、读卡流程 该步骤为读客人卡函数。 Read_Guest_Card 该步骤为读电梯信息,该步骤可选。 Read_Guest_Lift 该步骤为读取电开关信息,该步骤可选。 Read _Guest_ PowerSwitch Read_Data 该步骤为读其它扇区数据信息,该步骤可选。 该步骤为读完卡后读卡器蜂鸣。 Reader_Alarm






