在线商店

µFR系列设备的串行通信协议

打印友好,PDF和电子邮件
[printfriendly电流= '是的']
打印友好,PDF和电子邮件

µFR系列设备的串行通信协议

µFR系列设备可以通过FTDI的虚拟COM端口建立通信,因此设备是被视为标准COM端口硬件。

通信参数

读卡器采用FTDI串行接口

µFR经典和µFR高级读卡器与USB连接:

串行通信:1mbps, 8-N-1,流量控制:无;

RTS引脚用于重置设备。设置RTS后,设备处于复位状态。当RTS为clear时,表示设备处于正常状态。

安装了“µFR支持”固件的µFR BaseHD读取器(例如XR和µFR XRc读取器):

串行通信(使用VCOM FTDI驱动):250kbps, 8-N-1,流量控制:无;

读写器无FTDI串行接口

RS485(无USB/RS-485转换器连接)

可变波特率可通过软件工具进行设置。修改波特率时,需要了解当前波特率。默认波特率为250kbps。

µFR经典Nano RS232和卡尺寸RS232:

UART / TTL: 115200bps, 8-N-1,流量控制:无。

默认波特率为115200bps。可变波特率可通过软件工具进行设置。

连接器上的pin4用于复位设备。如果该引脚上的电压高(3.3 V),则设备处于复位状态。如果电压低(0 V),则设备处于正常工作状态。

如果设备连接到我们的RS232到TTL转换器,那么引脚4上的电压水平控制RTS。当RTS为clear时,设备处于reset状态。设置RTS后,设备处于正常状态。

在固件更新期间,RTS引脚必须连接到设备上的引脚4。

UART / TTL模型的Pinout如下所示:

nano-rs232-pinout

为了在阅读器设备和主机PC之间进行通信,D-Logic创建了称为“µFR串行”的专有协议。

所有通信都是由设备所连接的主机(PC或其他平台)发起的。

从固件版本3.9.44开始,单个命令传输或一次设备响应接收的最大数据为256字节,在此之前为192字节。

通常有两种类型的数据包:

  • CMD-主机发送给设备的命令
  • -设备发送给主机的应答

CMD可以是短集,也可以是长集。CMD短集总是7字节长,而CMD长集称为CMD_EXT可以有可变长度。

答案是:

  • -确认,一切正常,设备正在等待下一个CMD或CMD EXT
  • 犯错-发生错误,错误字节定义ERR_TYPE
  • 负责-设备对CMD或CMD_EXT的响应

通信常数bytes定义了数据包的类型,可以在每个数据包的前三个字节中看到。

每个包的第一个字节是HEADER字节。第二个字节总是CMD_CODE。第三个字节是TRAILER字节。

表1。传播常数

CMD_HEADER 0 x55 CMD_TRAILER 0 xaa
ACK_HEADER 0 xac ACK_TRAILER 0 xca
RESPONSE_HEADER 0 xde RESPONSE_TRAILER 0中
ERR_HEADER 0 xec ERR_TRAILER 0 xce

校验和

本文档中所有校验和的计算方式相同:一行字节用于校验和计算,每个字节与下一个字节进行异或运算,直到该行结束。最终值增加了0x07。

例如,一个CMD包有7个字节,其中第7个字节是前6个字节的校验和:

CHECKSUM = (Byte1 XOR Byte2 XOR Byte3 XOR Byte4 XOR Byte5 XOR Byte6) + 0x07

CMD代码

每个命令都有其相应的值——查看COMMANDS OVERVIEW。

错误代码

如果发生错误,设备将返回ERR报文。每个错误都有相应的值,可以在附录:错误代码表中找到。

CMD包

CMD包可以短至7字节长,也可以以可变长度的ext结束。对于EXT CMD报文,CMD报文的第4个字节大于0,包含整型值- CMD_EXT报文的长度。当发出CMD_EXT时,总是主CMD 7字节长包先走。如果一切正常,设备将应答ACK报文,等待CMD_EXT报文。如果出错,设备将返回ERR报文。CMD_EXT由各种不同的参数组成,这取决于命令类型,因此CMD_EXT没有固定的长度和参数顺序。

CMD报文的结构如下:

CMD报文的结构如下:

必选7字节CMD报文结构

1字节 2字节 3字节 4字节 5字节 6字节 7字节
CMD_HEADER CMD_CODE CMD_TRAILER CMD_EXT_Length CMD_Par0 CMD_Par1 校验和

  • 1字节:表1中定义的CMD_HEADER。通信常数,0x55
  • 2字节:表2中定义的CMD_CODE。CMD_CODE值
  • 3字节:表1中定义的CMD_TRAILER。通信常数,0xAA
  • 4字节: CMD_EXT_Length:如果0则“CMD EXT”不使用);ELSE值为整个CMD_EXT报文的长度
  • 5字节: CMD_Par0:命令parameter0,不同命令取值不同
  • 6字节: CMD_Par1:命令parameter1,根据命令不同取值不同
  • 7字节: CHECKSUM -字节1到6的校验和,如上所述

CMD_EXT报文的结构如下:

CMD_EXT报文的结构如下:

CMD_EXT报文结构
1字节 ... 字节N 字节N + 1
参数bytes 1 ~ N

CMD_EXT_CHECKSUM

参数字节1 ~ N -不同的参数,值取决于命令的类型

  • CMD_EXT_CHECKSUM -字节1到N的校验和
  • CMD_EXT_Length是所有字节的个数,包括CMD_EXT_CHECKSUM;例如,长度为N+1

应答报文类型

设备可以应答以下报文类型:

ACK—确认报文

如果命令和CMD报文配置正确(结构和校验和),并且需要发送一个额外的CMD_EXT报文,设备将以ACK报文回答。

ERR -错误报文

如果发生错误,设备将返回ERR报文。有些命令可以返回ERR_EXT集。在这种情况下,ERR_EXT包紧跟在ERR包之后。

RSP -响应报文

如果发送了正确配置的CMD或CMD_EXT报文,则设备将应答RSP或RSP_EXT报文,这取决于所发出的命令。例如,如果CMD需要一个对RSP包足够短的应答,则不会有RSP_EXT包。否则,如果CMD或CMD_EXT需要一个更多字节的应答,RSP_EXT将立即在RSP包之后出现。一种常见的情况是当使用LinearRead命令读取数据时,设备将回答一行卡片数据字节。

ACK—确认报文

ACK报文的结构如下:

ACK报文的结构如下:

ACP包结构

1字节 2字节 3字节 4字节 5字节 6字节 7字节
ACK_HEADER CMD_CODE CMD_TRAILER 无关,不用于ACK报文 校验和

  • 1字节:表1中定义的ACK_HEADER。通信常数,0x55
  • 2字节:表2中定义的CMD_CODE。CMD_CODE值。设备确认上一条命令发送正确
  • 3字节:表1中定义的ACK_HEADER。通信常数,0x55
  • 4字节:字节5,字节6:不用于ACK报文,取值为0x00
  • 7字节: CHECKSUM -字节1到6的校验和,如上所述

ERR -错误报文

ERR报文的结构如下:

必选7字节ERR

1字节 2字节 3字节 4字节 5字节 6字节 7字节
ERR_HEADER ERROR_CODE ERR_TRAILER ERR_EXT_Length Err_Val0 Err_Val1 校验和

  • 1字节:表1中定义的ERR_HEADER。通信常数,0xEC
  • 2字节:表3中定义的ERR_CODE。错误代码。
  • 3字节:表1中定义的ERR_TRAILER。通信常数,0xCE
  • 4字节:如果ERR_EXT存在,这个字节包含ERR_EXT包的长度(包括ERR_EXT校验和)
  • 5字节:关于错误的可能的附加信息可以在ERR_Val0中定义
  • 6字节:关于错误的可能附加信息可以在ERR_Val1中定义
  • 7字节: CHECKSUM -字节1到6的校验和,如上所述

ERR_EXT,具有如下结构:

ERR_EXT报文结构
1字节 .. 字节N 字节N + 1
错误字节1到N ERR_EXT_CHECKSUM

  • 字节1:ERR_EXT的第一个字节
  • ...
  • Byte N: ERR_EXT的N- N个字节
  • 字节N+1: ERR_EXT_CHECKSUM,字节1到N的校验和,如前面解释的那样计算。

RSP响应报文

RSP报文的结构如下:

强制7字节RSP

1字节 2字节 3字节 4字节 5字节 6字节 7字节
RSP_HEADER CMD_CODE RSP_TRAILER RSP_EX_length RSP_Val0 RSP_Val1 校验和

  • 1字节:表1中定义的RSP_HEADER。通信常数,0x
  • 2字节:表2中定义的CMD_CODE。CMD_CODE值
  • 3字节:表1中定义的ERR_TRAILER。通信常数,0xDE
  • 4字节:如果RSP_EXT存在,这个字节包含RSP_EXT报文的长度(包括RSP_EXT校验和)
  • 5字节: RESPONSE的可能附加信息可以在RSP_Val0中定义
  • 6字节: RESPONSE的可能附加信息可以在RSP_Val1中定义
  • 7字节: CHECKSUM -字节1到6的校验和,如上所述。

t

RSP_EXT报文结构
1字节 .. 字节N 字节N + 1
RSP字节1 ~ N RSP_EXT_CHECKSUM

  • 字节1:RSP_EXT的第一个字节
  • ...
  • Byte N: RSP_EXT的N- N个字节
  • 字节N+1: RSP_EXT_CHECKSUM,字节1到N的校验和,如前面解释的那样计算。

Baidu
map