logo资料库

RS485电梯门禁控制器接口详情含JAVA代码.doc

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
门禁控制器动态库接口 门禁动态库接口说明 动态库文件 COMdllX.dll 文件版本 更新日期 :2013-11-12 该动态库支持 1 门 485 控制器 2 门 485 控制器 4 门 485 控制器 485 电梯控制器 V3 版 485 液晶一体机
门禁动态库接口说明 结构说明 动态库是一个 COM 组件,需要注册才能使用。 包括以下几个接口 名称 说明 IBaseControl IAllControls ICOM I1Door I2Door I4Door IST 公共接口 获取接口对象 串口 1 门控制器接口 2 门控制器接口 4 门控制器接口 电梯控制器接口 动态库引出函数只有一个: Function MachineDll: IAllControls; stdcall; 该函数能获取全部使用的对象,然后根据需要使用对应的接口对象。 步骤 1. 注册文件 2. 调用函数 MachineDll,获得 IAllControls 对象。 3. 调用 IAllControls. COM485.OpenCom, 打开串口。 4. 调用 IAllControls. BaseControl. SetAddress.设置地址。如果成功就执行下面的。 5. 调用 IAllControls. BaseControl. GetStatus,获取状态。如果失败执行第 4 步,电梯的函数为 IAllControls. BaseControl. Get32Status。 具体的流程见文件后面的伪代码。
指令列表 序号 接口 函数 说明 门禁动态库接口说明 1 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ICOM ICOM OpenComm CloseComm 打开串口 关闭串口 IBaseControl 1-4 门适用 1-4 门适用 设置控制器地址 取状态 时间同步 设置控制器参数 设置门的参数 开门 关门 门常开 设置报警 设置火警 锁门 或者 解锁 设置一个开放时间 清除门的全部开放时间 清除卡 清除所有卡 取刷卡记录 删除全部刷卡记录 取报警记录 SetAddress GetStatus SetTime SetControl SetDoor OpenDoor CloseDoo OpenDoorLong SetAlarm SetFire LockDoor SetDoorTimeZone ClearDoorTimeZone DeleteCard ClearAllCard GetCardEvent ClearAllCardEvent GetAlarmEvent ClearAllAlarmEvent 删除全部报警记录 GetCardStatus UpdateCardStatus ResetSystem AddHoliday ClearAllHoliday ReadCard 取卡状态,防潜返用 更新卡状态,防潜返用 控制器复位 增加一个假日 删除全部假日 从设备中读出卡数据
门禁动态库接口说明 序号 25 接口 IAllControls 26 27 28 30 32 33 34 I1Door I2Door I4Door IST IST IST IST 函数 COM485 BaseControl OneDoor TwoDoor FourDoor StControl AddCard AddCard AddCard Get32Status Set32ControlA CloseDoor AddCardST 说明 串口对象 公共对象 单门 2 门 4 门 电梯 增加卡 增加卡 增加卡 查询电梯状态 设置电梯板参数 关闭楼层 增加卡到电梯板 1 门适用 2 门适用 4 门适用 电梯板
门禁动态库接口说明 函数 功能 参数 返回值 COM BaudRate TimeDelay WordBool function OpenCOM(const COM: WideString; BaudRate: Integer; TimeDelay: Integer): WordBool; stdcall; 打开串口 串口号如 COM1 COM2 固定 9600 延时,一般为 0 是否成功 以下爱是 485 电梯接口: function Set32ControlA(Address: Integer; ConnectMask: Integer; Group: Integer; is16: WordBool; OpenTime: Integer; AddTime: Integer; AlarmTime: Integer; AlarmMast: Integer; const Duress: WideString; const OutPut1: WideString; const OutPut2: WideString): WordBool; stdcall;设置电梯控制器参数 输入点是否做为门磁,否则为按钮 第一个输入点是否做为火警 Address 控制器地址编号 InputasMC firstAsfire OutputMast DoorLockEach 双门互锁保留 FireTimeLong 火警时间 2 字节 AlarmTimeLong 报警时间 2 字节 DuressPIN 挟持密码 备用 输出控制 OutputMast 输出控制继电器的极性。16 个 16 进制的字符,如“AB CD 12 34 56 78 90 AB CD EF 01 23 45 67 89 AB”(没有 空格) 合计成 2 进制标识 128 个位,每个位对应 128 个点的状态设置,1 表示长闭,0 表示长开。其中 0-3 个字节表示第一 个主板,第 4-7 表示第 1 个扩展板,以此类推。 function Get32Status(Address: Integer; ConnectMask: Integer; var Fun: Byte; out Ver: Byte; out HasCardEvent: WordBool; out HasAlarmEvent: WordBool; out HasEventStatus: WordBool; out DoorStatusA: Integer; out DoorStatusB: Integer; out DoorStatusC: Integer; out DoorStatusD: Integer; out DoorStatusE: Integer; out DoorStatusF: Integer; out DoorStatusG: Integer; out DoorStatusH: Integer): WordBool; stdcall; 查询电梯控制器状态 Address 控制器地址编号 Ver 版本 HasCardEvent HasAlarmEvent HasEventStatus 是否有刷卡记录 是否有报警记录 是否有状态事件 保留
门禁动态库接口说明 DoorStatusA DoorStatusB DoorStatusC DoorStatusD DoorStatusE DoorStatusF DoorStatusG DoorStatusH 8 字的状态 合计 8×2×8 = 128 位,表示 128 个状态 function AddCardST(Address: Integer; ConnectMask: Integer; Fun: Integer; Ver: Integer; CardIndex: Integer; const CardName: WideString; const CardNo: WideString; const PIN: WideString; TZ: Byte; Box1A: Integer; Box1B: Integer; Box2A: Integer; Box2B: Integer; Box3A: Integer; Box3B: Integer; Box4A: Integer; Box4B: Integer; Status: Byte; EndDate: TDateTime; Times: Integer): WordBool; stdcall; 增加一张卡到电梯控制器 Address 控制器地址编号 Index 卡编号 CardNo 卡号 PIN 密码 TZ 8 位的开放时间选择,8 个位分别对应开放时间表里面的对应序言是否选择 Box1A, Box1B, Box2A, Box2B, Box3A, Box3B, Box4A, Box4B :16×8=128 位表示可以开的输出 Status 状态 1 有效卡 EndDate 终止日期 备用
门禁动态库接口说明 数据类型 TIndefityType = (is_Card,is_PIN,is_CardPIN,is_DCard,is_Free); 开门时鉴别方式 EventType 见数据库表 TEventType 工作流程说明: 1 软件打开后必须执行 setAddress 函数,给控制器编码,设置地址。 2 其它的所有函数使用地址编码和控制器通信。 3 如果 GetStatus 执行不成功,那么就要 setAddress,以确认控制器在线。 4 取记录过程中的任何错误,都要重新执行 GetStatus,重新来过。 5 如果取刷卡记录错误,不可以不执行 GetStatus,去执行取报警记录;同样,必须先执行 GetStatus 才能取报警记录。 While(true){ // 取刷卡记录 GetStatus(Net,Address,ControlType,ControlStatus,DoorStatus,Ver,HasCardEvent,HasAlarmEvent,HasCardStatus) { EventIndex = 1;AlarmIndex=1;ReturnIndex=1; HasOtherEvent = true; If(HasCardEvent) // 有刷卡事件 循环取事件 { While (HasOtherEvent) { // 继续取记录 If (GetCardEvent(Address,EventIndex,EventIndexReturn, CardNo,EventTime,Door,EventType,HasOtherEvent)) { // 开始取记录 If ((indexEvent = ReturnIndex)and(indexEvent=1)) or (indexEvent=ReturnIndex+1)) { EventIndex ++ // do something // 处理记录 //无记录或错 或者返回错误就跳出循环 ((indexEvent = $FE) or (not HasOtherEvent)) // 记录取完了 或者达到最大值 GetCardEvent(Address,0, ReturnIndex, CardNo,EventTime,Door,EventType,HasOtherEvent); Break; if { } break; //无记录或错 或者返回错误就跳出循环 } else { } } else break; } // while } // 有刷卡记录 } // 取刷卡记录结束
//取报警记录 GetStatus(Net,Address,ControlType,ControlStatus,DoorStatus,Ver,HasCardEvent,HasAlarmEvent,HasCardStatus) { 门禁动态库接口说明 AlarmIndex=1;ReturnIndex=1; HasOtherAlarm = true; If(HasAlarmEvent) // 有报警事件 循环取事件 { While (HasOtherAlarm) { // 继续取记录 If (GetAlarmEvent(Address,AlarmIndex,ReturnIndex,AlarmTime,AlarmType,Door,HasOtherAlarm)) { // 开始取记录 If ((AlarmIndex = ReturnIndex)and(AlarmIndex =1)) or (AlarmIndex =ReturnIndex+1)) { AlarmIndex ++ // do something // 处理记录 //无记录或错 或者返回错误就跳出循环 if { ((AlarmIndex = $FE) or (not HasOtherAlarm)) // 记录取完了 或者达到最大值 GetAlarmEvent(Address,0,ReturnIndex,AlarmTime,AlarmType,Door,HasOtherAlarm); Break; } break; //无记录或错 或者返回错误就跳出循环 } else { } } else break; } // while } //有记录 } // 取报警记录结束 // 取卡状态记录 GetStatus(Net,Address,ControlType,ControlStatus,DoorStatus,Ver,HasCardEvent,HasAlarmEvent,HasCardStatus) { StatusIndex=1;ReturnIndex=1; HasOtherStatus = true; If(HasCardStatus) { // 有卡状态事件 While (HasOtherStatus) { // 继续取记录 If (GetCardStatus(Address,AlarmIndex,ReturnIndex,vEmployeeID,vStatus, HasOtherStatus)) { // 开始取记录 If ((StatusIndex = ReturnIndex)and(StatusIndex =1)) or (StatusIndex =ReturnIndex+1)) { StatusIndex ++
分享到:
收藏