Temic卡门锁接口开发包说明

更新时间:2024-06-16 12:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Temic卡(感应式)门锁接口开发包使用说明

一、Temic卡门锁工作原理

卡中主要有作业流水号、时间长度两种类型参数来决定开启房门的条件: 1. 更换作业流水号标志,其中作业流水号是由日期时间中的年月日时+1小时内所发卡

的序号组成。1小时内的发卡序号需由开发人员在程序设计时做好分析判断,并确认可用的序号。

卡中作业流水号必须大于等于门锁电路板中作业流水号,否则将导致开门失败。

2. 取消在用的客人卡(可解释为挂失客人卡)标志使用方法:单个客人必须置对应标

志位为1;多个客人住同一间房时的情况可举例说明如下: 若一个房间同时发三张卡,第一张卡对应挂失标志为需置为1,后两张卡该挂失标志位需置为0。

3. 最重要的是需在接口软件中写客人卡之前,应先将工具软件 GetLockID.exe拷贝至

门锁软件工作目录下,然后再运行GetLockID.exe文件,运行后选择对应的门锁软件的版本号,然后获取门锁软件中的房号与门锁编号对应表文件,再将此文件中的房号门锁编号关系,改成自已的对应表; 或在门锁软件中每一房号写一遍客人卡,然后一一读出客人卡的门锁编号来建立你自己的房号门锁编号对应库,剩下的过程就简单了。

4. 特别注意,每张卡的作业流水号务必保持唯一并且存挡,它是开门查询的依据。

二、函数声明原型

接口动态库文件:LCRFRW_SDK.dll

1. 打开串口

int mif_selecom(int com,int baud); 2. 读卡

int tem_readdoorcard_sdk(LPSTR BH, LPSTR buff) 返回10个字符的门锁编号; 3. 写卡

int tem_writedoorcard_sdk(LPSTR BH, LPSTR fksj,int xh,int sjdw,int sjlength,bool gs)

写10个字符的门锁编号:

4. 关闭串口

int mif_closecom(void);

三、用户接口软件开发使用步骤

1. 将获取房号门锁编号工具文件GetLockID.exe拷贝至门锁软件工作目录下。

2. 运行GetLockID.exe文件,选择对应门锁软件版本,然后按[获取]按钮,得出房号门锁编号对应关系表,获取的此表文件存放于门锁软件的工作目录下的LockID.ini,用户可直接将此文件拷贝至接口工作目录下,接口软件可直接对此表进行操作,或另建自已的数据库表进行读操作。LockID.ini文件说明:

此文件中左边是房号,右边是对应此房号的门锁编号。

3. 将门锁接口文件LCRFRW_SDK.dll拷贝至接口程序工作目录下。

4. 接上专用的接口读写器,安装USB读写器驱动(运行USBDriver_RW.exe驱动程序即可自动完成)。

5. 使用专用的接口读写器,否则接口函数在读写卡时将返回错误代码值129。

6. 建立自己的房号门锁编号对应关系表,这里有两种方法:

A. 利用GetLockID.exe工具软件获取的房号与门锁编号对应关系表,将此对应关

系表填入自已的房号门锁编号数据表中,或直接使用此表; B.

C. 利用SDK接口读卡函数或演示程序读出卡片数据中的门锁编号部分。

房号门锁编号对应关系表至少应包括门锁编号及所对应的房号字段,门锁编号为10个字符长度的字段,如下表(此表是假设用户建立起的自已的房号数据表)

门锁编号 Abcd0001 Efgh0002 Acda0003 Bded0004 . 房号 101 102 201 202 . ? ? ? ? ? . 表1

注:存入的门锁编号字段值用户不要关心它是否具务一定的规律性的,其值是门锁软件自动分配的一个没有规律的门锁编号,用户只需将此编号作为写卡参数即可。门锁系统就是用此编号对房门进行编号且为唯一一标识号,它是决定是否能开门的条件之一。

7. 开始读卡,将读出卡中的门锁编号及日期时间序号,读出的门锁编号为10个字符。在写卡之前用户可以不进行读卡,根据实际应用情况用户可选择读卡或不读卡。 8. 输入房号,接口软件需从房号数据表找到此房号所在记录所对应的门锁编号字段值,如输入房号201则接口软件将找到门锁编号为Acda0001,用此门锁编号作为写卡函数中的门锁编号的参数值。

9. 将当前时间、发卡序号(1小时内)、时间单位、对应时间单位的时间长度、是否挂失在用的客人卡标志等内容按规定的格式作为写客人卡时的对应参数。 10. 开始将已准备好的参数数据写入卡中。

接口程序的函数调用的步骤一般为:

A. 打开串口

int mif_selecom(int com,int baud); B. 读卡

int tem_readdoorcard_sdk(LPSTR BH, LPSTR buff) 返回10个字符的门锁编号;

C. 写卡

int tem_writedoorcard_sdk(LPSTR BH, LPSTR fksj,int xh,int sjdw,int sjlength,bool gs)

写10个字符的门锁编号;

D. 关闭串口

int mif_closecom(void);

四、函数使用说明

1. 打开串口

int mif_selecom(int com,int baud); 〖参 数〗

COM=0:串行口一 COM=1:串行口二 Baud=9600(固定); 〖返回值〗

0:正确;其它:参看函数返回代码

注意:

1. USB读写器在安装驱动后,其串口号值的查看如下所示:

在桌面上找到我的电脑,在我的电脑上按右键->点击属性->点击硬件->点击设备管器,如下图:

串口号为3,在打开串口的串口参数应为2

一般USB读写器的串口号值为3-8;

2. 非USB读写器的串口号一般在门锁软件中的对应参数功能中查看,一般其串口

号为1-2;

3. 接口中的串口号是从0开始的,门锁软件中的串口号是从1开始,所以如果在

门锁软件中的看到的串口参数为串口一,则此处的的参数应填写为0。 2. 读卡

int tem_readdoorcard_sdk(LPSTR BH, LPSTR buff) BH: 门锁编号,10字符长度,

buff:卡中日期时间,长度为10个字符,前8个为年月日时,后两位为一小时内发卡序号(它是一个十六进制数),读出结果为作业流水号。每张卡的作业流水号是唯一的。

在读卡之前,卡片必须经门锁系统写过一次客人卡(主要是写入客人卡标识),否则读卡将失败返回。

〖返回值〗

0:正确;其它:参看函数返回代码 3. 写卡

int tem_writedoocard_sdk(LPSTR BH, LPSTR fksj,int xh,int sjdw,int

sjlength,bool gs) 〖参 数〗

BH: 门锁编号为10字符长度。

fksj: 发卡时间,为年月日时,每个两位,比如发卡时间为2004年8月9日10点,

fksj=“04080910”; 注意:如果一小时内的发卡序号超过63此发卡时间可以小时+1方式进行。比如,

当前时间是2004年08月09日10点,如在此10点内的发卡序号在0-63内则此参数值为04080910,如在此10点内的发卡序号已超过63,则此参数值为04080910+1小时=04080911,同时发卡序号再从0开始。 客人退房时仍可调用此函数进行退房写卡,达到回收卡片功能,此时的写卡参数

中的BH=实际门锁编号,fksj=00000000,xh=0,sjdw=0,sjlength=1,gs=0即实现退房回收卡片功能。

xh: 一小时内发卡序号,从0到63;

此发卡序号意为当前写卡时间的小时内的第几次写卡,如果在当前小时内的写卡次数超过64次(即发卡序号大于63),则需要将fksj参数以小时数+1为新的fksj参数进行写卡,同时此发卡序号复位为0开始(即新的fksj中的序号)。

sjdw: 时间单位(小时/天/月/年);0为小时,1为天,2为月,3为年。其它为天

sjlength:时间长度;卡片有效时间。为几天或为几小时。取值范围(1--63小时/ 1--63

天/ 1--15月 /1--3年)

gs: 1为取消在用的客人卡(挂失),0为不取消(不挂失)。

退房时间的钟点在非小时时间单位时是由门锁系统自行设定,接口软件不用关心。

〖返回值〗

0:正确;其它:参看函数返回代码

4. 关闭串口

int mif_closecom(void); 〖参 数〗 无

〖返回值〗

0:正确;其它:参看函数返回代码

注:读写卡完成后必须调用此函数关闭串口,以便释放串口资源。

五、总卡,栋卡,层卡的制作

说明:此类卡的制作与客人卡的制作基本相拟,只需将读客人卡的编号更换成读相应总卡或栋卡或层卡的编号,具体说明如下:

在门锁系统中制作一总卡或栋卡或层卡,然后用演示程序或接口程序读出此卡的门锁编号,读出后保存至自已的数据库中,并标明此编号为总卡或栋卡或层卡的编号,接口程序制

作总卡或栋卡或层卡时首先在自已的数据库中找到此总卡或栋卡或层卡对应的编号然后用此编号值作为参数调用写卡函数(tem_writedoorcard_sdk())即可。

如下表所示: 编号 Abcd0001 Efgh0002 Ijkl0003 卡类 总卡 栋卡 层卡 ? ?

即写卡函数tem_writedoorcard_sdk()能制作所有开门卡,调用时仅仅门锁编号参数有所变化,其它参数意义均一致相同.

同样,接口程序在制作总卡或栋卡或层卡均需用在门锁系统中制过的客人卡进行制作。

六、时钟卡的制作

必须在门锁管理软件中写过一次的时钟卡. 1. 读时钟卡

int tem_readtimercard_sdk(LPSTR fksj,LPSTR lpTime) 参数说明:

fksj:卡中日期时间,长度为10个字符,前8个为年月日时,后两位为一小时内发卡序号(十六进制),读出结果为作业流水号。

lpTime:上次写卡的时钟,时钟格式为年+月+日+时+分, 长度为10个字符,每段均占用2位,如0712081530表示2007年12月8日15点30分

2. 写时钟卡

int tem_writetimercard_sdk(LPSTR fksj,int nXh, LPSTR lpTime) 参数说明:

fksj: 发卡时间,长度为8个字符,分别年月日时,每个两位,比如发卡时间为2004

年8月9日10点,fksj=“04080910”; xh: 一小时内发卡序号,从0到63;

lpTime:写入的时钟, 长度为10个字符(传递至门锁的时钟),分别年月日时分,每个两位,精确至分钟,如0408092052表示需要将门锁时钟调至2004年8月9日20点52分.

注意:时钟中的年月日与流水号的年月日需相同

七、函数返回代码 代码 0 1 2 描述 正确 通讯错误 超时错误 原因 通讯底层中断 内部错误 解决方法 检查通讯硬件是否存在 检查硬件及接口函数版本号 3 4 5 16 17 18 19 20 128 129 130 256 数据区域错误 数据错误 通讯错误 无卡 卡片没有上电 密码错误 坏卡 功能错误 接口未授权 内部错误 读卡片数据发生错误或卡片没有插好或插入卡片不是客人卡 通讯口不正确 读写器上没有正确放置卡片 卡片没有放好 内部错误 卡片可能已损坏 内部错误 未正确使用授权码授权 检查硬件及接口函数版本号 重新将卡片插好或再在门锁系统中重新写一次客人卡 检查通讯串口号或通讯线 重新放置感应卡至读写器上 重新放置卡片至读写器上 检查硬件及接口函数版本号 换一张新的感应卡重试。 检查硬件及接口函数版本号 向门锁供应商索取授权码 向门锁供应商索取接口专用读写器或选择正确的串口号 重新获取或检查输入的门锁编号值 检查硬件及接口函数版本号 读写器型号错误 非接口使用的读写器或串口号错误 门锁编号错误 系统错误 输入的对应房号的门锁编号有错误 内部错误

八、注意

1. 所有客人卡片都必须在门锁软件系统中写一遍客人卡。

2. 发卡原则,开门卡在酒店管理系统发行,而其他管理类卡片均需在门锁软件系统发行。 3. 禁止多个门锁软件在不同卡片之间串发。

4. 正式开通使用,建议将所有卡片全部收回之后,再发一张复位卡把所有门锁的数据复位,然后再进行发卡。

5. 特别注意计算机时间一定不能出现混乱,保持时间正确,否则可能导致开门失败。

6. 如果某客人卡经门锁自身系统的注销或回收功能后,需将此卡再次发行一次客人卡,否则在接口软件中读写卡将失败。

九、开发示例

当前已包括VB6.0,VFP6.0,Delphi5.0,PB9.0环境下的四种语言工具样例源代码,以便用户参考。

注意,示例程序仅供程序代码的参考,通过示例程序读写出的开门卡,因写卡函数的参数与实际门锁软件应用的差异,所以不能保证能正确开门,但是只要写卡函数中的参数与实际门锁软件系统数据对应则可成功开启门锁。

强烈建议开发人员事先必须认真阅读并理解此文档,这样才能保证完成接口任务。

更新日期:2009-08-15

本文来源:https://www.bwwdw.com/article/en03.html

Top