485 硬件接口协议 50.docx
《485 硬件接口协议 50.docx》由会员分享,可在线阅读,更多相关《485 硬件接口协议 50.docx(16页珍藏版)》请在冰豆网上搜索。
485硬件接口协议50
门禁控制器485硬件接口协议Ver5.0
2008-3-8
本协议为控制器通讯协议
说明:
本协议属保密文件,未经过许可不得复制、发送给其他人员。
如果您不能维护本文件的安全,请删除它。
运行流程(485控制器):
查询状态——是否有记录——有记录取记录——检查状态
2008版权所有
1发送数据从电脑到控制器方向
功能
STX
Address
Command
Data
Div
Len
CS
ETX
说明
开始位
控制器地址
指令
数据
特征码
长度
校验
结束
长度
Byte
Byte
Byte
0-
2bytes
1byte
Byte
Byte
校验
长度
函数例子:
增加数据字节到发送缓冲数组:
procedureAdd2Buf(Abyte:
byte)
begin
OutBuffer[nBytesWrite]:
=Abyte;
OutBufferCS:
=AbytexorOutBufferCS;
inc(nBytesWrite);
end;
常量说明
STX=0x02;
ETX=0x03;
ACK=0x06;
DLE=0x10;
NAK=0x15;
SYN=0x16;
2从控制器到电脑方向,控制器应答
功能
STX
Address
Command
Data
Div
Len
CS
ETX
说明
开始位
控制器地址
指令
数据
特征码
长度
校验
结束
长度
Byte
Byte
Byte
0-
2bytes
1byte
Byte
Byte
校验
长度
对无记录返回指令:
执行成功:
Data=ACK
执行不成功:
Data=NAK
伪代码例子
OutBuffer:
array[0..100];定义输出缓冲变量
定义发送指令缓冲队列(以设置地址命令0x01为例)
OutBuffer[0]=(STX);第一个开始位
OutBufferCS=(STX);校验初始值
nBytesWrite=1;数据保存指针
Add2Buf(Address);控制器地址如0x01就是控制器的编号
Add2Buf(Command);指令代码如0x01
Add2Buf($5B);客户OEM代码,定制客户有不同的代码,本处默认为0x5B
Add2Buf($A0);客户OEM代码,定制客户有不同的代码,本处默认为0xA0
Add2Buf
(1);6位控制器的序列号如123456
Add2Buf
(2);
Add2Buf(3);
Add2Buf(4);
Add2Buf(5);
Add2Buf(6);
Add2Buf
(1);在这个总线上的控制器数量
Add2Buf(Group);控制器的分组号码如0
Add2Buf($35);序列号的倒数第2位的ASCII码123456
Add2Buf($36);序列号的倒数第1位的ASCII码123456
Add2Buf(nBytesWrite);指令长度=15
Add2Buf(OutBufferCS);加入校验值
OutBuffer[nBytesWrite]=ETX;结束符
inc(nBytesWrite);计算发送字节数量
WriteFile(hComFile,OutBuffer,nBytesWrite,dwWritten,@osWrite);写入串口
hComFile串口句柄
dwWritten返回值已经写入数量
更多函数WriteFile的信息请参考对应语言的帮助。
指令列表
序号
指令
名称
说明
1
0x01
设置控制器地址
2
0x63
设置控制器参数
3
0x2c
开门
4
0x2d
门常开
5
0x2E
关门
6
0x07
时间同步
7
0x61
设置门的参数
8
0x61
设置门的参数
9
0x0F
清除门的全部开放时间
10
0x0D
增加一个开放时间
11
0x09
增加一个假日
12
0x0C
删除全部假日
13
0x17
清除所有卡
14
0x04
控制器复位
15
0x18
设置报警
16
0x19
设置火警
17
0x31
取刷卡记录
18
0x3A
取报警记录
19
0x62
增加卡
1门适用
20
0x62
增加卡
2门适用
21
0x62
增加卡
4门适用
22
0x40
取状态
23
0x64
批量增加卡
1门适用
24
0x64
批量增加卡
2门适用
25
0x64
批量增加卡
4门适用
26
0x89
搜索控制器
27
0x2F
锁/解锁门
指令――――――――――――――――――――――――――――――――――
1.Command0x01
功能:
设置控制器地址
功能
OEM
Serialno
ControlNum
Group
Div
Len
说明
客户代码
序列号
控制器数量
组
特征码
长度
字节数
2
6
1
1
2
15
特征码:
控制器序列号的后2位数字的ASCII码,必然如果序列号是123456,则特征码是0x35,0x36
2.Command0x63
功能:
设置控制器参数
发送Data:
数据
1
2-3
4-5
6-7
说明
互锁设置
火警时间
报警时间
挟持密码
字节数
1
2
2
2
互锁设置0:
没有互锁,1:
1-2门互锁2:
3-4门互锁
火警时间火警输出时间长度。
低位在前,高位在后
报警时间警报输出时间长度。
低位在前,高位在后
3.Command0x2c
功能:
开门发送Data:
数据
DoorAddress
说明
门地址1-4
字节数
1
4.Command0x2d
功能:
门常开发送Data:
数据
DoorAddress
说明
门地址1-4
字节数
1
5.Command0x2E
功能:
关门发送Data:
数据
DoorAddress
说明
门地址1-4
字节数
1
6.Command0x07
功能:
时间同步
数据
Time
说明
时间
字节数
7
Data:
7ByteBCDformat
格式:
SecondMinuteHourWeekDayMonthYear
例子:
把数据直接做16进制使用,年要减2000;0x340x120x080x010x090x050x05
7.Command0x61对控制器版本Ver6.3
功能:
设置门的参数
Data:
数据
1
2
3
4
5
6
7
8
9
说明
门地址
开门时间
关门时间
双向检测
开门太长
开门时间
报警类型
报警时间
报警时间
字节数
1
1
1
1
1
1
1
1
1
2开门时间开门时间的低8位
6开门时间的高8位
7报警类型,那些报警产生报警输出
8报警输出的报警时间低8位
9报警输出的报警时间高8位
8.Command0x0f
功能:
清除门的全部开放时间
数据
DoorAddress
说明
门地址1-4
字节数
1
9.Command0x0d
功能:
增加一个开放时间
Data:
数据byte
1
2
3-4
5-6
7
8
9-11
12-14
说明
门地址
时区号
开始时间
结束时间
星期
开门方式
截至日期
开始日期
时区号:
0-15
开始时间:
小时分钟如12:
34转换为16进制1234,2个字节
结束时间:
小时分钟
星期:
Byte的有效位1-7位表示星期日到星期6,8位表示假日
开门方式:
鉴别方式种类0x01单卡识别,0x02卡加密码,0x04双卡,0x08密码,0x10首卡开门
0x80防遣返,除防遣返之外不能同时具有
截至日期:
时区到那一天开始,顺序为年月日(3个字节)0x000x010x01表示无限制
开始日期:
时区从那一天开始,顺序为年月日(3个字节)0x000x010x01表示无限制
10.Command0x09
功能:
增加一个假日
Data:
数据byte
1
1
1
说明
假日索引
假日的月
假日的日
假日索引的大小范围0-59
11.Command0x0C
功能:
删除全部假日
Data:
无
12.Command0x17
功能:
清除所有卡
Data:
无
13.Command0x04
功能:
控制器复位
Data:
无
说明:
本功能不建议使用,因为需要比较长的时间
14.Command0x18
功能:
设置报警
Data:
数据
Close
Keep
说明
是否关闭报警
是否常开
字节数
1
1
Close=1关闭报警Close=0输出报警报警时间为控制器参数设置
Keep是否常开报警输出
15.Command0x19
功能:
设置火警
功能
Close
Keep
说明
是否关闭火警
是否常开
字节数
1
1
Close=1关闭报警Close=0输出火警报警时间为控制器参数设置
Keep是否常开火警输出
16.Command0x031
功能:
取刷卡记录
功能
Data
说明
事件记录序列号
字节数
1
Data:
事件记录序列号1Byte1-255
每次执行成功加1,任何一次返回错误则重新从1开始,且要执行一次取状态函数,返回包括本次执行的系列号,对比不同则不加1重新执行一次,直到成功或没有记录。
返回:
Data
数据位
1-4
5-10
11
12
13
14
说明
卡号
时间
记录
门号
是否还有记录
返回记录序列号
如果返回序列号不等于发送事件记录序列号,则重新开始或保持按发送的事件记录序列号重新执行一次,如开始1,执行成功返回1,再发送2,执行返回2,再发送3,返回3;
发送序列号和返回应该相同,有任何一次不同,就需要重新执行发送的序列号。
如果没有记录或者返回错误,则重新执行取状态函数。
17.Command0x03A
功能:
取报警记录
功能
Data
说明
事件记录序列号
Data:
事件记录序列号1Byte1-255
每次执行成功加1,任何一次返回错误则重新从1开始,且要执行一次取状态函数,返回包括本次执行的系列号,对比不同则不加1重新执行一次,直到成功或没有记录。
返回:
Data
数据位
1-6
7
8
9
10
说明
时间
记录类型
门号
是否还有记录
返回记录序列号
如果返回序列号不等于发送事件记录序列号,则重新开始或保持按发送的事件记录序列号重新执行一次,如开始1,执行成功返回1,再发送2,执行返回2,再发送3,返回3;
发送序列号和返回应该相同,有任何一次不同,就需要重新执行发送的序列号。
如果没有记录或者返回错误,则重新执行取状态函数。
18.Command0x62
功能:
增加卡(单门适用)
发送Data:
数据位
1-4
5-6
7-8
9-10
11
12-16
17
说明
卡号
密码
权限
卡序列号
状态
截至日期
刷卡次数
卡序列号卡的唯一ID号,不能大于控制器的容量,16位(高8位在前)从0开始!
权限2字节16位表示16个开放时间,位1表示选中。
状态默认1,0表示无效
增加成功的卡,刷卡应该显示无效时区或能开门。
截至日期:
到本日期之后将不能刷卡;默认无此功能,按年月日时分5个字节
刷卡次数:
允许的刷卡次数;0-0xFF;0xFF表示无限制默认无此功能
例子:
卡号:
4760765转换为:
072164189;16进制:
0048A4BD
BufferData[1]=0x00
BufferData[2]=0x48
BufferData[3]=0xA4
BufferData[4]=0xBD
密码:
1234不需要转换,直接按16进制传入。
BufferData[5]=0x12
BufferData[6]=0x34
19.Command0x62
功能:
增加卡(2门适用)
发送Data:
数据位
1-4
5-6
7-8
9-10
11-12
13
12-16
17
说明
卡号
密码
门1权限
门2权限
卡序列号
状态
截至日期
刷卡次数
卡序列号:
卡的唯一ID号,不能大于控制器的容量,16位(高8位在前)从0开始!
权限:
2字节16位表示16个开放时间,位1表示选中。
其他参数见前面指令
20.Command0x62
功能:
增加卡(4门适用)
功能
STX
Address
Command
Data
CS
ETX
说明
开始位
控制器地址
0x62
卡数据
校验
结束
发送Data:
数据位
1-4
5-6
7-10
11-12
13
12-16
17
说明
卡号
密码
4个门上的权限
卡序列号
状态
截至日期
刷卡次数
卡序列号卡的唯一ID号,不能大于控制器的容量,16位(高8位在前)从0开始!
权限4字节表示4个门的8个开放时间,位1表示选中。
其他参数见前面指令
21.Command0x64
功能:
批量增加卡
发送Data:
数据位
1-A
A+1-
说明
卡数据1
卡数据2
一次传输2张卡,数据结构和增加一张卡一样。
如果无效卡,将改card=0
对应不同型号的控制器的增加卡的指令使用相同。
22.Command0x40
功能:
取状态
发送Data:
无
返回Data:
数据
1
2
3
4
5
说明
是否有记录A
B
门状态
0
控制器代码版本
Aand0x08是否有刷卡
Aand0x10是否有报警记录
B继电器状态
门状态:
门的开关,按位表示
23.Command0x40
功能:
搜索控制器
发送Data:
数据位
1
1
说明
搜索时间
是否搜索
搜索时间控制器返回记录的时间范围。
是否搜索是否搜索
返回Data:
数据
6
1
说明
控制器序列号
控制器地址
24.Command0x2F
功能:
锁、解锁门
发送Data:
数据位
1
1
说明
门号
动作
门号1-N门号码;1表示第1个门2表示第2个门等等。
0xFE表示这个控制器的全部门。
动作0–1表示锁或者解锁
这里是文件的结尾。