杨格门锁 YGSLockSDK V3.3酒管软件接口 | 您所在的位置:网站首页 › 发夹读音几声 › 杨格门锁 YGSLockSDK V3.3酒管软件接口 |
链接:https://pan.baidu.com/s/1HP7FEWdA7sTmHzW1OTbGfg 密码:om1f LockSDK 智能门锁管理系统开发包说明文档 请仔细阅读下面的每一条说明, 这样对接就能事半功倍 !!!!!!!!!! 一、重要说明 本接口支持各种开发语言, 包括:C#、VC、Delphi7、Delphi2000、PB9.0、PB10、VB.net、VB6.0等(每种语言一个文件夹),请选择自己常用的语言的演示程序(Demo)进行测试和开发。接口文件为LockSDK.dll, 而这个接口又会调用底层各种动态库. 酒管软件对接时, 对接到LockSDK.dll上就可以了.请把LockReg.exe放入发布包, 会自动处理注册, 读取授权卡等操作.Demo:测试的时候,请打开任何一种语言的文件夹,找到LockSDK_Demo.exe, 双击运行→选择RF57(T5557卡)或者RF50(Mifare卡)门锁类型,点击“配置SDK”按钮,然后就可以进行发卡测试了。一般建议如下图进行设置。l 新卡顶替旧卡:同一个客房, 入住时间(checkin_time)靠后的宾客卡会使之前的宾客卡失效。例如一张宾客卡的入住时间是12:00,本来可以开门的,但是另外一张的入住时间为12:05的宾客卡刷卡开门后,之前的宾客卡就不能再开门了。 所以如果要允许多张宾客卡同时能开一个房间, 则其入住时间必须相同,或者后发的卡片设置不顶替前卡标志。 如果用几个软件(例如Demo, 酒管软件, 门锁管理软件)交替发卡,因为入住时间不同,很可能只有入住时间靠后的那张宾客卡能开门。在门锁上刷一次授权卡或者校时卡,则被顶替掉的宾客卡就又可以使用了。 碰到问题时,请查看一下几张宾客卡的入住时间是否一致。 l 允许开反锁:要设置允许开反锁标志,宾客卡才能在打了反锁的时候开锁。 l 检查入住时间:为了防止门锁时间不太精确而导致宾客卡不能开门,所以默认情况下是不检查宾客卡的入住时间的。如果启用,则对门锁的时钟精度要求比较高,需要经常对门锁校时。制卡时,入住时间总是会被强制设为电脑当前时间. 门锁号的格式: 1.2.8203, 如果是套间房, 则后面再加一个字母, 例如: 1.2.8203.A。注意, 在早期DLock 管理软件中, 门锁号的格式类似这样: 102 或者 20105A 或者 A0203 等;如果早期的DLock软件没有门锁号,那么请直接输入房号(门锁管理软件有门锁号的,必须输入门锁号);具体请查看门锁管理软件的"客房设置->房间信息"窗口!!!因为门锁时钟是有误差的, 请把预离时间往后推30分钟. 例如如果预离时间为第二天12:00, 那么最好把预离时间设为12:30。入住时间和预离时间的格式: 2012-01-01 12:30:00 , 请务必按此格式输入, 必须跟电脑的日期格式设置无关(可以调整一下电脑的日期格式, 然后发卡试试看)必须用在门锁管理系统里面能正常发卡的发卡器, 否则就算能发卡, 发出来的卡片也不一定能开门(可能因为授权卡信息不正确)!!!这种情况下, 可以尝试关闭软件,然后把授权卡放在发卡器上,再打开软件, 这样授权卡信息会被自动读取。如果发的宾客卡不能开门, 可以用门锁管理软件查看卡片信息, 看看跟门锁管理系统发出来的卡片有什么不同(特别注意门锁号和入住时间,以及是否顶替前卡)。制卡记录保存在cardRecord.ini, 其中remark=new表示新卡;remark=copy表示复制卡。也可以用随带的小工具查询制卡记录(注意把RMCRecords.exe和语言包Languages(RMC)放到PMS所在目录才能查询)。门锁常见错误提示(把卡片放到门锁上刷一下, 然后马上拿开, 听响几声)1短声: 时间错误 2短声: 打了反锁 3短声: 楼栋、楼层、门锁号不对 4短声: 卡片被挂失了 5短声: 卡片密码错误 6短声: 客户码错误 7短声: 没有刷设置卡引导(门锁里已有房号) 二、返回值说明 enum ERROR_TYPE { OPR_OK = 1, // 操作成功 NO_CARD = -1, // 没检测到卡片 NO_RW_MACHINE = -2, // 没检测到读卡器 INVALID_CARD = -3, // 无效卡 CARD_TYPE_ERROR = -4, // 卡类型错误 RDWR_ERROR = -5, // 读写错误 PORT_NOT_OPEN = -6, // 端口未打开 END_OF_DATA_CARD = -7, // 数据卡结束 INVALID_PARAMETER = -8, // 无效参数 INVALID_OPR = -9, // 无效操作 OTHER_ERROR = -10, // 其它错误 PORT_IN_USED = -11, // 端口已被占用 COMM_ERROR = -12, // 通讯错误 ERR_CLIENT = -20, // 客户码错误 ERR_NOT_REGISTERED = -29, // 未注册 ERR_NO_CLIENT_DATA = -30, // 无授权卡信息 ERR_ROOMS_CNT_OVER = -31, // 房数超出了可用扇区 }; 三、接口函数说明 /*============================================================================= 函数名: TP_Configuration ; 功 能:动态库初始化配置, 完成门锁类型选择/发卡器连接等 输 入:lock_type -- 门锁类型(也就是使用的卡片类型): 4-RF57门锁; 5-RF50门锁 输 出: 无 返回值:错误类型 =============================================================================*/ int __stdcall TP_Configuration(int lock_type); /*============================================================================= 函数名: TP_MakeGuestCardEx ; 功 能:制作宾客卡 输 入:room_no -- 门锁号: 字符串, 例如 "1.2.8102"等 checkin_time -- 入住时间: 预留. 制卡时入住时间被强制为当前时间!!! checkout_time -- 预离时间: 年月日时分秒, 字符串格式 "YYYY-MM-DD hh:mm:ss" iflags -- 宾客卡选项, 一般置0. iflags的各种赋值解释如下: 1: 表示允许开反锁 8: 表示复制卡, 不顶替前卡(可以跟之前发的卡片一起用, 允许一个房间发多张卡片) 32: 表示一次性开门, 开门后失效 128: 表示检测卡片的入住时间(如果卡片入住时间 > 门锁当前时间, 则不能开门, 不建议用这个选项) 上述各属性值可以相加进行组合. 如果iflags ==0, 表示会顶替前卡,刷卡后之前的卡片失效; 不是一次性开门卡; 不检测卡片的入住时间 输 出: card_snr -- 卡号: 字符串, 至少预分配20字节 例 子1: room_no="1.2.8102", SDateTime="", EDateTime="2008-06-07 12:00:00" iFlags=8 !!!!!!!!(复制卡) 返回值:错误类型 说明: Room要输入 门锁号!! 其格式视门锁管理软件而定, 请查看门锁管理软件的"客房设置"界面. 如果门锁管理软件中没有门锁号, 则请输入房号. =============================================================================*/ int __stdcall TP_MakeGuestCardEx(char *card_snr, char *room_no, char *checkin_time,char *checkout_time, int iflags); /*============================================================================= 函数名: TP_ReadGuestCardEx ; 功 能:读宾客卡信息 输 入:无。 输 出: card_snr -- 卡号: 字符串, 至少预分配20字节 room_no -- 房号: 字符串, 至少预分配20字节 checkin_time -- 入住时间: 年月日时分秒, 字符串格式 "YYYY-MM-DD hh:mm:ss", 至少预分配30字节 checkout_time -- 预离时间: 年月日时分秒, 字符串格式 "YYYY-MM-DD hh:mm:ss", 至少预分配30字节 iFlags -- 卡片标志字节 返回值:错误类型 =============================================================================*/ int __stdcall TP_ReadGuestCardEx(char *card_snr,char *room_no, char *checkin_time, char *checkout_time, int *iFlags); /*============================================================================= 函数名: TP_CancelCard ; 功 能:注销卡片/卡片回收 输 入: 无 输 出: 输 出: card_snr -- 卡号: 字符串, 至少预分配20字节 返回值:错误类型 =============================================================================*/ int __stdcall TP_CancelCard(char *card_snr); /*============================================================================= 函数名: TP_GetCardSnr ; 功 能:读取卡号(卡片的唯一的序列号) 输 入: 无 输 出: card_snr -- 卡号: 字符串, 至少预分配20字节 返回值:错误类型 =============================================================================*/ int __stdcall TP_GetCardSnr(char *card_snr); ////////////////////// 以下函数供酒管软件进行会员卡管理 /////////////////////// /*============================================================================= 函数名: TP_M1Active 功 能:卡片激活(读取卡号) 参 数:无 输 出: card_snr -- 卡号, 4字节(字符串表示为8个字符) 返回值:错误类型 描 述:卡片激活 =============================================================================*/ int __stdcall TP_M1Active(char *card_snr); /*============================================================================= 函数名: TP_M1AuthKey 功 能:验证卡片密钥 参 数:keyA: 密钥, 六字节, 卡片的默认密钥是 "ffffffffffff" sector_no: 扇区号, 1~40 返回值:错误类型 描 述:验证卡片的相应扇区的密钥, 验证过后才可以读写 例 子:keyA = "ffffffffffff", sector_no = 3 =============================================================================*/ int __stdcall TP_M1AuthKey(char *keyA, UINT sector_no); /*============================================================================= 函数名: TP_M1SetKeyA 功 能:修改密钥A 参 数:NewKeyA: 新密钥A, 六字节, 用字符串表示(12个字符) sector_no: 扇区号 返回值:错误类型 描 述:修改卡片密钥A, 注意要先用AuthKey验证原密钥. 注意函数调用顺序: TP_M1Active → TP_M1AuthKey → TP_M1SetKeyA 例 子:newKeyA = "ffffffffffff", sector_no = 3 =============================================================================*/ int __stdcall TP_M1SetKeyA(char *newKeyA, UINT sector_no); /*============================================================================= 函数名: TP_M1WriteBlock 功 能:写数据 参 数:block_no: 块号(一般是扇区号*4 + 扇区内块号) data: 要写入的16字节数据, 用字符串表示(32个字符,只能是0~9和A~F, a~f ) 返回值:错误类型 描 述:写一块数据. 必须先用TP_M1AuthKey验证密钥 ; 例如, 扇区9可以读写的块号包括: 9x4 9x4+1 9x4+2, 即: 36 37 38块. 注意函数调用顺序: TP_M1Active → TP_M1AuthKey → TP_M1WriteBlock 例 子:block_no = 3x4 = 12, data = "112233445566778899AABBCCDDEEFF" =============================================================================*/ int __stdcall TP_M1WriteBlock(UINT block_no, char *data); /*============================================================================= 函数名: TP_M1ReadBlock 功 能:读数据 参 数:block_no: 块号(一般是扇区号*4 + 扇区内块号) 输 出: data: 16字节数据, 用字符串表示(32个字符) 返回值:错误类型 描 述:读取一块. 必须先用TP_M1AuthKey验证密钥. 注意函数调用顺序: TP_M1Active → TP_M1AuthKey → TP_M1ReadBlock =============================================================================*/ int __stdcall TP_M1ReadBlock(UINT block_no, char *data); 关于M1卡的简单说明: 1. 卡片有16个扇区,编号从0~15;每个扇区可以设置独立的密码; 2. 每个扇区里面有4个块,编号从0~3, 只可以读写0~2块。 3. 读卡和写卡时要用 "扇区号x4 + 扇区内块号", 扇区9可以读写的块号包括: 9x4 9x4+1 9x4+2, 即: 36 37 38块. 4. 要避开门锁使用的扇区,门锁一般使用扇区1、扇区11、扇区15等, 具体可咨询门锁厂家; |
CopyRight 2018-2019 实验室设备网 版权所有 |