当前位置:文档之家› 指纹仪485通信协议

指纹仪485通信协议

指纹仪RS485通信传输协议本文描述指纹仪与门禁控制器设备之间的数据传输协议1.简介●本产品的通讯连接方式默认为RS485接口,但本数据传输协议亦可根据不同的实际需要,更改为其他通讯连接方式,如:RS232接口、USB接口或以太网等。

●本数据传输协议的传输方式为可靠式(reliable)、连接式(connectionoriented)和数据流式(stream)。

●在网络中的所有设备均分配一个唯一的网络结点地址用于通信,同时另一保留地址用于传送广播信息。

●通信请求可由任意方(控制系统、核心模块或其他外部设备)发出。

●连接采用三向式握手协定(3-way handshaking)。

●数据在不定长的数据包中传送。

数据长度包括包头总长度为1518字节(其中数据长度上限为1500字节)。

超过上限的数据采用封包切割(Fragmentation)和再组合方式传送。

2.数据包结构数据包结构格式如下图:其中:STX :数据包开始标志,数值为2Packet Head :数据包头,参见2.1节Packet Data :数据包资料,具体参见相关产品的控制指令ETX :数据包结束标志,数值为3下面将作详细描述。

2.1.数据包头数据包头格式如下:0 1 2 3 4 5 6 78 9 10 11 12 13 14 152.1.1.Version协议的版本号码(占1字节)。

它的作用是区分该数据封包所使用的版本是否正确。

如果版本号码不对,处理该协议的软件可选择相适应的处理方式或拒绝接受该数据。

在通信中该字节存放的是版本号数值的10倍。

本文所描述的协议版本号为2,在通信中该字节应为20(0x14)。

2.1.2.Head Length封包的包头长度(占2字节)。

当前版本为固定长度16字节。

2.1.3.Data Length所携带的数据长度(占2字节)。

2.1.4.Identification封包的编号(占2字节)。

发送端为封包给定的识别号。

如果封包需要分割,则需要和Flags,Fragment Offset结合使用。

参见2.2节说明。

2.1.5.Flags封包的片段标识(占1字节)。

参见2.2节说明。

2.1.6.Fragment Offset封包的片段偏移地址(占2字节)。

参见2.2节说明。

2.1.7.Source Node源节点地址(占1字节)。

参见2.1.8节描述。

2.1.8.Destination Node目的节点地址(占1字节)。

在指纹仪网络中,源节点和目的节点的设定如下:0,指纹仪默认;1…250,用户自定义251…254,厂家保留255,广播;2.1.9.Code Bits控制位(占1字节)。

有些封包可以不带数据,而只含有包头,其功能是用于某些连接状态控制。

如建立连接,结束连接或数据响应等。

这些功能由控制位来表示。

控制位置1表示有效,置0则表示无效。

具体位控内容如下:7 6 5 4 3 2 1 0SYN请求连接。

参见3.1节。

FIN请求断线。

参见3.2节。

ACK本封包中ACK置1,Acknowledge有效。

用于响应上一次接受到的封包。

RST连接重置。

即强迫结束连接。

参见3.3节。

FRG分包数据错误。

标识分包传送有错误。

参见2.2节。

ABO取消上次操作。

其余两位暂作保留。

当接收方收到不带数据的包时,如需要回送响应包,Acknowledge为接收到的包中的Identification加1。

参见2.1.10节。

2.1.10.Acknowledge确认信息(占2字节)。

当需要确认收到封包时,此项数值为Data Length加上Identification。

并且Code Bits中ACK位置1。

2.1.11.Checksum校验和(占1字节)。

计算方法为从数据包开始标志(STX)开始以字节为单位逐一累加,直到数据包最后一个字节(ETX)为止,最后得到的总值再取其1的补数,即为数据封包的checksum值。

要注意的是,在计算Checksum 值前要先将数据包内Checksum位置零。

2.2.封包的切割(Fragmentation)和再组合本协议约定MTU(Maximum Transfer Unit)为1500字节。

数据包长度超过MTU的时候,需要进行数据包切割发送。

封包的切割:当同一数据内容长度超过MTU而需分割为多个小包发送时,各个小包的数据头中除Fragment Offset、Flags、Checksum和Data Length改变外,其余内容均保持一致。

接受方通过Identification来确认接受到的数据是否属于同一数据。

如果分包发送过程中Identification不一致,接收方则发送控制位中FRG置1的ACK响应包,并等待发送方重发。

封包的组合:接收方通过Fragment Offset来重组数据,并通过Flags来确认数据是否分割发送及是否收到最后一个封包:Flags如果为0,表示该封包是最后一个封包片段;如果为1,表示该封包不是最后一个封包片段。

当数据没有分割,则Flags也设置为0。

接受方收到第一个Flags为1的封包则知道开始接收分割的封包,直到收到Flags为0的封包为止。

然后重组数据,进行处理。

当前核心模块所能接受的最大数据长度为256K字节。

如果长度超过该值,接收方发送FRG置1的ACK响应包,并退出处理。

3.连接和断开3.1.连线方式使用本协议进行通信,首先必须建立通讯连接。

其连接建立的过程为:当数据请求方向被请求方发出通讯连接的请求后,被请求方将返回一个确认的信息。

在双方都确定其信号合法后,两方将建立通讯连接。

流程图如下:连接请求方HOST1 被请求方HOST 2A1发出连接的请求接收到SYN为1的A1数据包知道HOST1的连接请求接收到B1包检查SYN为1,ACK为1,Acknowledge正确,知道HOST2接受连接请求确认A2数据包连接建立Host2收到包A2,检测Acknowledge是否正确,如果正确,双方建立连接具体步骤:a)连接请求方(Host1)发送包A1往被请求方(Host2),包中Code Bits中SYN置1。

b)Host2检测到封包A1中SYN为1,知道Host1请求连接。

c)Host2发送包B1给Host1,其中SYN置1,ACK,置1,Acknowledge为包A1中的Identification加1。

d)Host1收到包B1,检测Acknowledge是否正确,检测SYN与ACK是否为1,以上正确,表示Host2接受连接请求。

e)Host1发送包A2给Host2,其中ACK置1,Acknowledge为包B1中的Identification加1。

f)Host2收到包A2,检测Acknowledge是否正确,如果正确,双方建立连接。

如果Host2发现通信错误,发送RST置1的响应包给Host1,双方连接失败。

3.2.断线处理正常断线处理和连接的处理方式类似,但有少许不同。

流程图如下:断线请求方HOST1 被请求方HOST2A1数据包断线请求收到FIN位为1的A1包,收到B1并等待收到B2A2数据包具体步骤如下:a)正在连接的双方中,Host1请求断线,发送包A1给Host2,包中FIN位置1。

b)Host2收到包A1,发现FIN位为1,知道需作断线处理。

c)Host2发送包B1给Host1,其中ACK置1,Acknowledge为包A1中的Identification加1。

d)Host1检测包B1中Acknowledge是否正确,并等待Host2的FIN封包。

e)Host2完成断线前须作的准备工作,发送断线封包B2给Host1,其中FIN置1,ACK置1,Acknowledge和B1中相同。

f)Host1收到包B2,验证Acknowledge和FIN位。

g)Host1发送包A2给Host2,ACK置1,Acknowledge为包B2的Identification加1。

h)Host2收到封包A2,验证Acknowledge正确,双方断线。

如果此时发现通信错误,也作以上相同断线处理。

3.3.连接重置(Connection Reset)除了上述断线处理方法外,当通讯中的任意一方接收到Code Bits中RST置1的数据包,将立即结束连接。

4.封包重发当发送数据方在3ms内无法收到接收数据方的确认封包时,就必须重发封包(可以再重发2次)。

接收数据方在接收过程发现有错,数据将不作任何处理。

5.数字传送顺序采用本协议通信时,类型在双字节以上的数字采用低有效位在内存地址高端的方式存放。

如:0x1234在内存中的位置顺序为:12 34。

与Inter x86类型机器的方式相反。

6.数据包格式数据包由数据包类型,操作命令和内容组成。

Data type: 数据包类型。

Command:命令Arguments/data:命令参数或返回数据6.1命令表6.1.1读系统信息发送数据包内容返回数据包内容:6.1.2设置系统参数返回数据包内容:6.1.3读指定用户数据返回数据包内容6.1.4 增加用户返回数据包内容6.1.5读第一个用户数据返回数据包内容6.1.6读下一个用户数据返回数据包内容6.1.7检测用户ID是否存在返回数据包内容6.1.8 读指定用户的组信息返回数据包内容6.1.9 设置指定用户的组返回数据包内容6.1.10 删除指定用户返回数据包内容6.1.11 查询系统用户总数和可增加用户数返回数据包内容6.1.12 清除用户返回数据包内容6.1.13 设置系统时间返回数据包内容6.1.14读取管理日志或出入日志返回数据包内容6.1.15 读取下一条管理日志或出入日志返回数据包内容6.1.16 读第一个用户ID返回数据包内容6.1.17读下一个用户ID返回数据包内容6.1.18 开门返回数据包内容6.1.19 显示命令返回数据包内容。

相关主题