杨格门锁 YGSLockSDK V3.3酒管软件接口_99v

链接:https://pan.baidu.com/s/1HP7FEWdA7sTmHzW1OTbGfg 密码:om1f

LockSDK 智能门锁管理系统开发包说明文档

请仔细阅读下面的每一条说明, 这样对接就能事半功倍  !!!!!!!!!!

一、重要说明

  1. 本接口支持各种开发语言, 包括:C#、VC、Delphi7、Delphi2000、PB9.0、PB10、VB.net、VB6.0等(每种语言一个文件夹),请选择自己常用的语言的演示程序(Demo)进行测试和开发。
  2. 接口文件为LockSDK.dll,  而这个接口又会调用底层各种动态库. 酒管软件对接时, 对接到LockSDK.dll上就可以了.
  3. 请把LockReg.exe放入发布包, 会自动处理注册, 读取授权卡等操作.
  4. Demo:测试的时候,请打开任何一种语言的文件夹,找到LockSDK_Demo.exe, 双击运行→选择RF57(T5557卡)或者RF50(Mifare卡)门锁类型,点击“配置SDK”按钮,然后就可以进行发卡测试了。一般建议如下图进行设置。

l  新卡顶替旧卡:同一个客房, 入住时间(checkin_time)靠后的宾客卡会使之前的宾客卡失效。例如一张宾客卡的入住时间是12:00,本来可以开门的,但是另外一张的入住时间为12:05的宾客卡刷卡开门后,之前的宾客卡就不能再开门了。 所以如果要允许多张宾客卡同时能开一个房间, 则其入住时间必须相同,或者后发的卡片设置不顶替前卡标志。

如果用几个软件(例如Demo, 酒管软件, 门锁管理软件)交替发卡,因为入住时间不同,很可能只有入住时间靠后的那张宾客卡能开门。在门锁上刷一次授权卡或者校时卡,则被顶替掉的宾客卡就又可以使用了。 碰到问题时,请查看一下几张宾客卡的入住时间是否一致。

l  允许开反锁:要设置允许开反锁标志,宾客卡才能在打了反锁的时候开锁。

l  检查入住时间:为了防止门锁时间不太精确而导致宾客卡不能开门,所以默认情况下是不检查宾客卡的入住时间的。如果启用,则对门锁的时钟精度要求比较高,需要经常对门锁校时。制卡时,入住时间总是会被强制设为电脑当前时间.

  1. 门锁号的格式: 1.2.8203,  如果是套间房, 则后面再加一个字母,  例如: 1.2.8203.A。注意, 在早期DLock 管理软件中, 门锁号的格式类似这样: 102 或者 20105A 或者 A0203 等;如果早期的DLock软件没有门锁号,那么请直接输入房号(门锁管理软件有门锁号的,必须输入门锁号);具体请查看门锁管理软件的"客房设置->房间信息"窗口!!!
  2. 因为门锁时钟是有误差的, 请把预离时间往后推30分钟.  例如如果预离时间为第二天12:00, 那么最好把预离时间设为12:30。
  3. 入住时间和预离时间的格式:  2012-01-01 12:30:00 , 请务必按此格式输入, 必须跟电脑的日期格式设置无关(可以调整一下电脑的日期格式, 然后发卡试试看)
  4. 必须用在门锁管理系统里面能正常发卡的发卡器,  否则就算能发卡, 发出来的卡片也不一定能开门(可能因为授权卡信息不正确)!!!这种情况下, 可以尝试关闭软件,然后把授权卡放在发卡器上,再打开软件, 这样授权卡信息会被自动读取。
  5. 如果发的宾客卡不能开门, 可以用门锁管理软件查看卡片信息,  看看跟门锁管理系统发出来的卡片有什么不同(特别注意门锁号和入住时间,以及是否顶替前卡)。
  6. 制卡记录保存在cardRecord.ini, 其中remark=new表示新卡;remark=copy表示复制卡。也可以用随带的小工具查询制卡记录(注意把RMCRecords.exe和语言包Languages(RMC)放到PMS所在目录才能查询)。
  7. 门锁常见错误提示(把卡片放到门锁上刷一下, 然后马上拿开, 听响几声)

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等, 具体可咨询门锁厂家;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏图形学与OpenGL

8.6.4编程实例-纹理映射

GLubyte stripeImage[4*stripeImageWidth];

762
来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(44)-SD-销售退货账务处理

退货与销售折让是企业经常性的经营行为,若不正确处理这些业务,将会在会计核算上带来很多不便。 下面谈谈常用的账务处理方法。 1、购买方未付货款并且未作账务处理的 ...

2624
来自专栏草根专栏

适合在Markdown里面使用的emoji

因为Markdown里面加颜色需要写html style, 所以对于一些标题, 还是用一下emoji吧: RED APPLE (🍎): ? GR...

2654
来自专栏钱塘大数据

100张经典信息可视化图表,让你脑洞大开

01-Redefining the Dome by National Geographic

844
来自专栏高性能服务器开发

关于我

先生姓张,临近而立之年。性耿直,直言罪人,然亦有口无心或苦口之言。亲旧知其如此,不予介怀;生人多异之,或非而攻之,小子晏如也。 闲静少言,不慕荣利,心无城府,胸...

2685
来自专栏GIS讲堂

Arcgis for Js实现graphiclayer的空间查询

本节讲的是Arcgis for Js的针对graphiclayer的空间查询,内容很简单,代码如下:

602
来自专栏区块链资讯

慈善机构使用BCH向南苏丹民众提供食物救援

目前,慈善机构Eat BCH开始向非洲东部国家南苏丹缺乏食物的个人和家庭提供食物,而这些食物是该机构使用社区捐赠的比特币现金购买而来。此前,Eat BCH一直在...

943
来自专栏Data Analysis & Viz

手把手教你完成一个数据科学小项目(5):省份提取与可视化

请先阅读“中国年轻人正带领国家走向危机”,这锅背是不背? 一文,以对“手把手教你完成一个数据科学小项目”系列有个全局性的了解。

591
来自专栏腾讯研究院的专栏

Doctor Si, Xiao:Thoughts on Chinese Safe Harbor Rules

Thoughts on Chinese Safe Harbor Rules ——Shared by Doctor Si, Xiao at Stanford...

3875
来自专栏余生开发

echarts太阳分布图-饼图来回穿梭

var dom = document.getElementById("container");

772

扫码关注云+社区