读写器通信协议开发者指南
异步盘存
 
此盘存模式使用异步模式,启动异步盘存的命令将在盘存启动后立即返回,读写器处于连续异步状态,一旦标签被读取,就会主动上传到主机。通过这种方式,读写器的盘存性能是最佳的,对于有较高盘存性能要求的应用应使用此异步盘存
  
异步盘存包括一组命令,所有这些命令的命令代码是0xAA。 不同的命令功能被封装在数据字段中。 因此异步盘存的不同命令使用不同的子命令代码。

命令属性

Command Code Bootloader 命令 App Firmware 命令
0xAA

Host to Reader

Data字段格式
字段 字节长度 描述
Subcommand Marker 10 始终是”Moduletech”,此字段是由asc2码表示的字符串。
Subcommand Code 2 异步盘存的不同命令使用不同的子命令码。
Subcommand Data N 异步盘存的不同命令具有不同的子命令数据。
SubCRC 1 首先将从子命令码开始到子命令数据末尾的所有字节累加,然后取结果的低8位
Terminator 1 始终是 0xBB

Reader to Host

Data字段格式
字段 字节长度 描述
Subcommand Marker 10 始终是”Moduletech”,此字段是由asc2码表示的字符串。
Subcommand Code 2 异步盘存的不同命令使用不同的子命令码。
Subcommand Data N 异步盘存的不同命令具有不同的子命令数据。

开始异步盘存

Subcommand Code
0xAA48
 
Host to Reader

Data字段格式
字段 字节长度 描述
Metadata Flags 2 含义与0x22命令相同。
Option 1 含义与0x22命令相同。
Search Flags 2 含义与0x22命令相同。该字段的一些bit位用于某些其他特殊目的,如下所述。
Access Password 4 含义与0x22命令相同。
Select Content N 含义与0x22命令相同。
Embedded Command Content N 含义与0x22命令相同。
  
Search Flags的其他特殊用途
Search Flags高字节的低4位表示在盘存过程中不工作的时间(载波和功率放大器关闭以降低温度并避免设备过载)的比例。值范围为0到15,如果值为0-9,则比例为低4位值* 5%。 如果值为10-15,则比例为50%。
Search Flags的最高位表示读写器是否在异步库存模式下每隔一段时间向主机发送心跳包,1表示是,0表示否。 当此功能被开启时,读写器每隔15秒向主机端发送一帧心跳包。如果异步库存停止,读写器将不会再发送心跳包。
Search Flags的第二高位表示当启用的天线在一段时间后无法读取到新的标签时是否停止盘存,并将“停止异步盘存命令”的回复发送给主机。(此功能仅当一次启用一个天线进行盘存时使用)使用异步盘存模式时,此功能通常用于将读写器的单个天线端口扩展为多个外部天线端口。
   
Reader to Host

当开始盘存成功或遇到异常时,读写器将立即回复主机。 reader-to-host命令中没有子命令数据字段。
  
举例

例子1
不使用Tag Singulation / Select和Embedded Command Content的情况下开始异步盘存Metadata Flags是0x00BF,这意味着要求读写器返回除Protocol ID之外的所有元数据。
  
Host to Reader
FF 13 AA 4D 6F 64 75 6C 65 74 65 63 68 AA 48
Header Data Length Command Code Subcommand Marker (Moduletech) Subcommand Code
00 BF 00 80 03 34 BB 29 0F
Metadata Flags Option Search Flags SubCRC Terminator CRC
 
Reader to Host
FF 0C AA 00 00 4D 6F 64 75 6C 65 74 65 63 68 AA 48 0F 23
Header Data Length Command Code Status Code Subcommand Marker (Moduletech) Subcommand Code CRC
  
例子2
开始异步盘存,并使用Tag Singulation/Select. Metadata Flags为0x00BF。
  
Host to Reader
FF 1D AA 4D 6F 64 75 6C 65 74 65 63 68 AA 48 00 BF 04
Header Data Length Command Code Subcommand Marker (Moduletech) Subcommand Code Metadata Flags Option
80 03 00 00 00 00 00 00 00 20 08 E2 42 BB AB 26
Search Flags Access Password Select Address Select Data Length Select Data SubCRC Terminator CRC
 
Example 2
 
Host to Reader
FF 2A AA 4D 6F 64 75 6C 65 74 65 63 68 AA 48 00 BF 02 80 07
Header Data Length Command Code Subcommand Marker (Moduletech) Subcommand Code Metadata Flags Option Search Flags
00 00 00 00 00 00 00 20 0C E2 00 01 09
Access Password Select Address Select Data Length Select Data Embedded Command Count Embedded Command Length
28 00 00 00 02 00 00 00 00 02 7E BB D0 91
Embedded Command Opcode Embedded Command Timeout Embedded Command Optionn Read Membank Read Address Read Word Count SubCRC Terminator CRC

停止异步盘存

  
Subcommand Code
0xAA49
 
在host-to-reader命令和reader-to-host命令中没有Subcommand Data字段。
  
Example
Host to Reader
FF 0E AA 4D 6F 64 75 6C 65 74 65 63 68 AA 49 F3 BB 03 91
Header Data Length Command Code Subcommand Marker (Moduletech) Subcommand Code SubCRC Terminator CRC
 
Reader to Host
FF 0C AA 00 00 4D 6F 64 75 6C 65 74 65 63 68 AA 49 0F 22
Header Data Length Command Code Status Code Subcommand Marker (Moduletech) Subcommand Code CRC

主动上传的Reader-to-Host命令

当读写器处于异步盘存的过程中,读写器可以主动向主机发送三个命令,在没有请求的情况下发送的这些命令称为数据包。
  
标签信息数据包

在标记库存中,标签EPC及其元数据信息立即打包到标签信息包中并发送到主机。 每个标签信息包仅包含一个标签信息。 标签信息包的格式完全符合Reader-to-Host通信框架
  
Command Code
0xAA
 
Status Code
总是为0x0000
 
Data字段格式
字段 字节长度 描述
Metadata Flags 2 含义与0x22命令相同。
Tag EPC and Meta Data N 含义与0x22命令相同。
 
心跳包

当读写器在开始异步盘存命令中启用心跳功能时,读写器将定期发送心跳包。心跳包的格式完全符合Reader-to-Host通信框架
  
Command Code
0xAA
 
Format of Data Field
字段 字节长度 描述
Heartbeat Marker 4 始终为”XTSJ”,此字段是由asc2码表示的字符串。
Search Flags N 含义与0x22命令相同。
State Data       

Remark

如果读取器在异步盘点过程中接收到除停止异步盘存命令之外的命令(包括开始异步盘存命令),它将退出异步盘存,并返回无效命令的状态码。错误状态代码是0xAA49。
   
如果读写器在异步盘点过程中遇到异常,它将退出异步盘点,并返回表示错误的状态码。
   
如果读写器在非异步盘存过程中收到停止异步盘存的命令,则返回成功。