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