Com 通讯接口协议(草稿)
概述
此通讯协议标准主要是规定了Reader与主机之间的通讯方式,此通讯协议是建立在RS232串行通讯基础上的,实现的是单点对单点的通讯,类似于3964通讯协议,通讯中有很多往返确认的控制信息,不大适合在网络环境中使用。
(一)报文格式
报文帧包含报文的不同字段和控制信息。实际数据字段的前面有首部信息,而后面有包含关于传输正确性检查信息的数据安全部分(故障识别)
一、编码方式:
协议规定以ASCII(美国标准信息交换代码)模式通信,在传输过程中,除了标志字符和结束字符以外,其余字节按照16进制的数值拆分成两个ASCII字符表示。这样报文中的字节都是可见的ASCII字符,而且在一个比较小的范围内。如果有规定范围以外的字符出现,则为非法字符。
代码:(共计20个字符)
•十六进制,ASCII字符0...9,A...F (不使用小写字母)
•标志字符:开始符:’:’(0x3A)和地址标志符:’@’ (0x40)
•结束字符:CR(0x0D)和LF(0x0A)
二、报文帧格式:
协议规定有两种帧格式,不带地址码的短帧格式和有地址码的长帧格式。
1)如下表:
在这个地方程序实际发送数据长度已经按照编码结构,是这个展开的数据长度了,
就是2倍了。
报文帧的各部分说明如下:
(1)开始:
协议规定以字符‘:’(Hex 0x3A)作为报文帧的起始标志。
(2)帧编号:
帧编号是由发送方设定的帧序列号。接收方收到帧以后,回发“应答帧”,“应答帧”必须带有相同的帧编号。帧编号从0开始,长度是1Byte,循环使用。
(3)功能码
定义长度为1Byte,编码范围0x00—0xFF。分为四种,定义范围和作用,如下
(4)数据长度:
标记数据包部分的数据长度。规定长度为2Byte。
(5)数据包:
是报文帧携带的状态和数据部分。数据长度不固定。
如果报文帧是指令帧,数据包部分就是指令参数。
如果报文帧是应答帧/数据帧,数据包部分就是传送的状态和数据,数据格式由主机指令规定。
状态部分就是接收报文的错误代码。如果接收正确,状态值为“00”。
(6)校验码:
校验范围是帧编号、功能码、源地址、数据包长度和数据包。不包括起始字符和结束字符。
计算结果是2字节,加入报文帧时,低字节在前,高字节在后。
(7)结束符:
协议规定报文帧的结束标志是‘CR-LF’(Hex 0x0D和0x0A)
三、通讯方式:
协议支持规的通讯方式:主—从应答方式。
主—从应答方式:
当主机发送一帧到接收端时,接收端必须回复一个应答帧/数据帧,并且在应答帧/数据帧里加上错误信息代码。
指令帧只能是上位机发给机具的。
应答帧/数据帧只能是机具发送给上位机的。
四、应答帧/数据帧定义:
应答帧/数据帧一般指的是机具对上位机,发送的报文帧。
五、应答帧/数据帧定义:
应答帧/数据帧:是报文接收方,响应发送方的帧。帧中记录的是,报文帧接收的情况,数据包中有至少1Byte的数据来表示。
一个应答帧/数据帧数据由7部分组成,应答帧/数据帧各部分的数据长度(Hex)如下表:
按照协议的编码规定,应答帧/数据帧的编码结构应该如下表所示:
(二)通讯协议
通信协议定义在各种通讯环境下,两个或多个站怎样使用报文帧来交换数据。
用户的需求是多样的,所以Reader面临的通讯环境也是复杂的。目前已经遇到的通讯方式有:PS2、Wiegand、USB、RS232、422/485、Ethernet、Wi-Fi等等。
从应用的角度来说,这些通讯接口分为三类:
1、单向传输的接口:
如PS2、Wiegand等,这类应用往往是执行固定的操作,返回用户固定的数据结果。
不需要上位机与机具交互信息。所以数据传输也是单向的,机具处于自动工作状态。
属于特殊应用,应该根据具体情况,做特殊规定。
不适用本协议。
2、已经拥有标准的底层通讯协议的接口。
如Ethernet、Wi-Fi等。
对于这类接口,无需另外规定传输协议,借助原有的协议就可以发送报文帧。
例如在Ethernet网络中,报文帧的传输过程如下图:
在此类网络中,底层传输的部分,遵循该网络本身的传输协议。作为上层协议,只需要管理好自己的报文帧就可以了。
3、RS232以及RS485、RS422网络:
为了提高产品的易用性,在RS232接口上不再采用有握手信息的协议。而是用直接
传输的方式,发送报文帧。
在RS232和RS485为基础,组建的网络中,需要解析报文帧中的地址码,判断接
收端。
(三)操作指令集
操作指令集的目的是为用户提供操作读写机具的方法,尽可能满足用户的使用需求,为读写机具的应用提供强大、灵活的支持。
一、字节长度
协议规定命令字长度是1个字节,所以定义范围是0x00—0xBF。
0x00暂时空缺,不予定义。
二、指令列表及简要说明
1、ISO15693标准操作指令:
按照ISO15693标准,必备指令和常用可选指令一共有15个,占用范围0x01—0x0D,指令定义如下表:
2、机具管理指令:
3、自动工作模式指令:
4、用户自定义指令:
三、指令说明及格式:
1、ISO15693标准操作指令:
2、机具管理指令:
3、自动工作模式指令:
4、用户自定义指令: