Online Store

适用于μFR系列器件的μFR串行通信协议

适用于μFR系列器件的μFR串行通信协议

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

通信参数 #

带 FTDI 串行接口的读卡器 #

带 USB 连接的 μFR 经典版和 μFR 高级读卡器:

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

RTS 引脚用于重置器件。 设置 RTS 后,设备处于重置状态。 当RTS清除时,设备处于正常状态。

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

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

不带 FTDI 串行接口的读卡器 #

RS485(不带 USB/RS-485 转换器的连接):

可变波特率可以通过软件工具设置。 更改波特率时必须知道当前的波特率。 默认波特率为 250 kbps。

μFR 经典纳米 RS232 和存储卡尺寸 RS232:

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

115200 bps 是默认波特率。 可变波特率可以通过软件工具设置。

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

如果设备连接到我们的 RS232 到 TTL 转换器,则引脚 4 上的电压电平通过 RTS 控制。 当 RTS 清除时,设备处于重置状态。 设置 RTS 后,设备处于正常状态。

 

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

UART/TTL模型的引脚排列如下所示:

纳米-RS232-引脚排列

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

所有通信均由设备连接的主机(PC 或其他平台)启动。

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

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

  • CMD – 主机发送到设备的命令
  • ANS – 从设备发送到主机的应答

CMD可以是短集或长集。 CMD 短集始终为 7 字节长,而 CMD 长集 – 称为 CMD_EXT 可以具有可变长度。

答案是:

  • ACK – 确认,一切正常,设备正在等待下一个 CMD 或 CMD EXT
  • ERR – 发生错误,错误字节定义ERR_TYPE
  • RSP – 设备在 CMD 或CMD_EXT上的响应

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

每个数据包的第一个字节是标头字节。 第二个字节始终CMD_CODE。 第三个字节是 TRAILER 字节。

表 1. 通信常量

CMD_HEADER0x55CMD_TRAILER0xAA
ACK_HEADER0xACACK_TRAILER0xCA
RESPONSE_HEADER0xDERESPONSE_TRAILER0xED
ERR_HEADER0xECERR_TRAILER0xCE

 

校验和 #

本文档中的所有校验和都以相同的方式计算:一行字节用于校验和计算,每个字节与下一个字节进行异和运算,直到行尾。 最终值随0x07递增。

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

校验和 = (字节 1 异或字节2 异或字节3 异或字节4 异或字节5 异或字节6) + 0x07

CMD 代码 #

每个命令都有其相应的值 – 查看命令概述。

错误代码 #

如果发生错误,设备将使用 ERR 数据包进行应答。 每个错误都有其相应的值,可以在附录:错误代码中的表格中找到。

CMD 数据包 #

CMD 数据包可以短 – 7 字节长或以可变长度结束的 EXT。 对于EXT CMD数据包,CMD数据包的第四个字节大于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_HEADERCMD_CODECMD_TRAILERCMD_EXT_LengthCMD_Par0CMD_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:命令参数 0,根据命令采用不同的值
  • 字节 6:CMD_Par1:命令参数 1,根据命令采用不同的值
  • 字节 7:校验和 – 如上所述的字节 1 到 6 的校验和

CMD_EXT数据包具有以下结构:

CMD_EXT数据包具有以下结构:

CMD_EXT数据包结构
字节 1字节 N字节 N+1
参数字节 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_HEADERCMD_CODECMD_TRAILER不相关,未在 ACK 数据包中使用校验和

 

  • 字节 1:表 1 中定义的ACK_HEADER.通信常量,0x55
  • 字节 2:表 2 中定义的CMD_CODE。 CMD_CODE值。 设备确认上一个命令已正确发送
  • 字节 3:表 1 中定义的ACK_HEADER.通信常量,0x55
  • 字节 4:字节 5,字节 6:未在 ACK 数据包中使用,值0x00
  • 字节 7:校验和 – 如上所述的字节 1 到 6 的校验和

ERR – 错误数据包 #

ERR 数据包具有以下结构:

强制性 7 字节 ERR

字节 1字节 2字节 3字节 4字节 5字节 6字节 7
ERR_HEADERERROR_CODEERR_TRAILERERR_EXT_LengthErr_Val0Err_Val1校验和

 

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

ERR_EXT,并具有以下结构:

 

ERR_EXT数据包结构
字节 1..字节 N字节 N+1
错误字节 1 到 NERR_EXT_CHECKSUM

 

  • 字节 1:ERR_EXT的第一个字节
  • ……
  • 字节 N:ERR_EXT的第 n 个字节
  • 字节 N+1:ERR_EXT_CHECKSUM,字节 1 到 N 的校验和,如前所述计算。

 

RSP – 响应数据包 #

RSP 数据包具有以下结构:

强制 7 字节 RSP

字节 1字节 2字节 3字节 4字节 5字节 6字节 7
RSP_HEADERCMD_CODERSP_TRAILERRSP_EX_lengthRSP_Val0RSP_Val1校验和

 

  • 字节 1:表 1 中定义的RSP_HEADER.通信常量,0xED
  • 字节 2:表 2 中定义的CMD_CODE。 CMD_CODE值
  • 字节 3:表 1 中定义的ERR_TRAILER.通信常量,0xDE
  • 字节 4:如果存在RSP_EXT,则此字节包含RSP_EXT数据包的长度(包括RSP_EXT校验和)
  • 字节 5:可以在 RESPONSE 中定义有关 RESPONSE 的可能附加信息RSP_Val0
  • 字节 6:可以在 RSP_Val1 中定义有关 RESPONSE 的可能附加信息
  • 字节 7:校验和 – 如上所述,字节 1 到 6 的校验和。

t

RSP_EXT数据包结构
字节 1..字节 N字节 N+1
RSP 字节 1 到 NRSP_EXT_CHECKSUM

 

  • 字节 1:RSP_EXT的第一个字节
  • ……
  • 字节 N:RSP_EXT的第 N 个字节
  • 字节 N+1:RSP_EXT_CHECKSUM,字节 1 到 N 的校验和,如前所述计算。