一 Rabbit 功能介绍
Rabbit 是一款针对 Impinj Speedway 开发的嵌入式程序。此程序简化了 Speedway 读写
器的开发难度及对于上位机的依赖度。针对简单的读写操作,开发者可以不需要开发在仅支
持 windows 环境下的 SDK,而是采用 Rabbit 程序即可快速实现,通过串口和 TCP/IP socket
进行通讯,实现在安卓系统,IOS 系统,windows 系统的跨平台应用。
Rabbit 具有以下特点:
1 支持网页参数配置
2 支持网口和串口(RS232) 数据输出
3 支持网口/串口 RS232 简单命令交互
4 支持输出数据格式及内容自定义
5 支持输出数据时间窗去重
6 支持数据协议级过滤
7 支持命令触发/外部触发/定时触发等多种启动模式
8 支持无新增数据/外部触发/定时触发等多种停止模式
9 支持低功耗模式
10 支持链路误码率高的无线传输数据完成性通讯协议
二 Rabbit 程序导入
Rabbit 程序导入方式如同读写器固件升级
步骤 1:通过网页输入读写器 IP 地址(下面均以读写器默认 IP 169.254.1.1 为例)
步骤 2:在 reader update 处,通过“浏览”选取 rabbit upg 文件,然后点击 upgrade,
然后当指示 manual reboot 时,点击 reboot 按钮。
步骤 3: 在读写器重启后,刷新页面,通过 application SW version 确认是否成功。
三 Rabbit 登陆
此页面表示已经进入 rabbit 程序。
四 Rabbit 读取标签配置
4.1 模式设置
可以选择读写器模式和搜索模式和会话,此处建议使用 AutoSetTurbo 模式,在标签密集场
景效果比较好拥有较高读取率。
4.2 天线端参数设置
此处主要设置每个天线口的输入功率和天线端口选取,未使用 antenna hub 时,:
使用 antenna hub 时:
‘
4.3 读写器启动模式设置
读写器支持多种触发模式,
Command 模式:
启动: 通过网口或者串口向读写器发送 TXX/start 两种命令,启动读写器,X 为天线
端口,0 为全部天线。
例 1: 打开端口 1, 触发读写器读取,发送“T01”命令。
例 2:打开所有端口,触发读写器读取,发送”T00”命令。
例 3:当使用 antenna hub 时,打开端口 16,触发读写器读取,发送“T16”命令
例 4:当需要使用页面配置的参数时,如选择页面选择端口 1,端口 3,可以使用
“start”命令来启动读写器(如果之前使用过 Txx 命令,那么“start”会等同于”Txx”).
停止:Command 模式可以配合多种停止模式停止读写器,同时,可以接受“stop”
命令,使读写器停止工作。
配置:通过命令 cofig 命令,可以支持配置和配置查询命令
例 1: config 查询当前配置
例 2: config searchmode x (x = 1-3) 配置查询模式
例 3: config session x (x=0-3) 配置会话
例 4: config antenna 1,29.5,-60;2,28,-84
配置天线端口,打开 1 端口,功率
29.5dbm,RSSI -60dbm;打开 2 天线端口,功率 28dbm, RSSI 最大值(功率值和 RSSI
值不配置,默认选用网页配置值)
例 5: config antenna 2:0
配置天线,关闭 2 号天线端口
GPO 输出: 通过命令,来设置 GPO 输出的电平。命令:setgpo port state
例 1: setgpo 1 1 将 GPO 端口 1 设置为高电平
例 2: setgpo 1 0 将 GPO 端口 1 设置为低电平
GPI 模式:通过 GPI 进行触发读写器读取标签
AdvancedGPI 模式:通过 GPI 触发对应的天线端口读取标签,如 GPI 1 收到信号时,读
写器开启天线端口 1 进行盘点
Immediate 模式:无条件立即启动读写器读取标签
Periodic 模式:周期触发读写器启动,读取标签
RabbitProtocol 模式:基于 Rabbit 协议,通过网口或者串口,控制读写器开始,停止,
配置读写器,进行标签读取,具体详见 Rabbit 协议。
Port:选取 GPI 触发端口,在 GPI 模式下可配置
Event:GPI 触发电平,在 GPI 模式下可配置
Period : 触发周期间隔,在 Periodic 模式下可配置,当只触发一次时,此时值为 0.
Offset:触发前的时间偏移量
UTC Time:当 UTC 时间为 0 是,首次触发时间是(时间事件+偏移量),当 UTC 不为 0
是,首次触发时间为(UTC+偏移量)
4.4 读写器停止模式设置
读写器同样支持多种停止模式
Duration 模式:周期停止,可以配合 Duration 触发使用
GPI:
模式 : 外部触发停止
模式 : 不停止
None
TagObserveNTag 模式:到一定数量停止
TagObserveNoMoreTag 模式: 没有再多的新标签停止
Port:选取 GPI 触发端口,在 GPI 模式下可配置
Event:GPI 触发电平,在 GPI 模式下可配置
Duration: 触发停止的周期时间
T: 在 TagObserveNoMoreTag 模式下,判断有无新标签的时间窗
N: 在 TagObserveNTag 模式下,标签到达数量设定
Timeout:在 GPI/TagObserveNoMoreTag/TagObserveNTag 模式下,超时时间设定。
既在其他条件无法满足的情况下,设定最长的等待时间,随后停止读写器。
4.5 Low duty 模式设置
此功能可以让读写器定时休眠,按照一定频率唤醒,如果有标签,读写器持续工作,如
果没有标签,读写进入休眠状态。(在 antenna hub 和 GPI 状态下,不支持低功耗模式)
Empty Field Timeout : 设置未读到标签的时长而进入休眠状态的时间阈值
Field Ping Interval
: 每次休眠的时长
4.6 发射频点设置
对于可以选择频点的读写器版本如 GX2 版本,可以设置 1 个或者多个发射频点。首先勾选
使能框,使其功能使能。
其次,根据列表,选择需要设置的频点。频点是根据不同国家法律规定,自动生成相应的频
点列表。
4.7 数据输出格式及内容设置
对于数据输出及 GPI 触发事件等,可以以不同的格式和不同的内容进行定制化输出。
GPI Event: 勾选上后,支持输出 Gpi Event 事件,消息格式: #gpi:port,state 如:#gpi:1,0;
#gpi:2,1。
Report Mode:如果需要实时获取数据,通常选用 Individual,
如果需要数据内部整理后,吐数据,可以选用 BatchAfterStop,。(此功能常在工业领
域,如当产线使用四个天线读取标签时,如果出现天线端口间的串读,可以使用此功能,并
同时勾选 Antenna Port 和 Peak RSSI,这时上报的数据,是同一个 EPC 值,RSSI 最大所对
应的天线端口号。
Delimiter:分隔符设置
Line Ending:行结束操作
Antenna Port :勾选上后,输出数据含天线端口号
TimesTamp:勾选上后,输出数据含时间戳
Peak RSSI: 勾选上后,输出数据含 RSSI 值
TID : 勾选上,输出数据含 TID,TID 长度和起始点可以设置
User Memory:勾选上,输出数据含用户区,用户区长度和起始点可以设置
Truncate EPC: 截断 EPC 值,可以根据需求截短。
Reader Stop Report:勾选上,读停止后,输出指示标识
Heatbeat
:勾选上,输出心跳信号(***),心跳信号只在没有标签信息输出时,
才会输出。Period 中设置为心跳输出周期。
Data Prefix: 数据头设置。可以设定一个字符作为起始字符,此字符需要用 ascii 码 10
进制输入。
例: 如果需要以“#”开头,需要输入 “35”
Data Suffix: 数据尾设置。可以设定一个字符作为结束字符,此字符需要用 ascii 码 10
进制输入。
例: 如果需要以“#”结尾,需要输入 “35”
4.8 数据输出端口设置
端口输出有如下几种模式可以选择:
a 可以选择通过 RS232 端口输出,并设置速度,
b 可以选择 TCP/IP 模式输出,设置端口号
c 两种同时输出(在数据量很大时,建议只选择一种输出模式)
d: HTTP post: 数据可以直接吐到相应网址
4.9 数据软件去重
在一定标签数量下,此功能用来实现对同样的 EPC 值或者 TID 值的标签,在设定时间
内,只上报一次。
当选用 TID 作为去重依据时,需要在“Output: data”中勾选 TID 选项。
Read Window:设置去重时间窗
Filter Field
: 设置去重判断依据,可以选择 TID/EPC
4.10 数据协议级过滤
通过都 EPC 等相关条件的设置,可以实现特定标签的盘点,并支持两组过滤条件。
Action: 选择下面设置条件是包含 include 还是不包含 exclued
Memory Bank: 判断依据的数据来源,可以选择 EPC,TID,User
Bit Point : 数据判断起始点。 通常 EPC 判断,是 32.
Hex Mask:16 进制掩码设置
Mask Length: 以 2 进制计算的掩码长度
4.11 GPO 输出设置
可以通过 GPO 输出,可以获取目前读写器状态,标签读取状态等信息。当使用 antenna
hub 时,无法使用此功能。
CustomInventoryTagsStatus: 当 StopTrigger 为 TagObserveNTag 且 N 设置为 1 时,当读
到标签时,相应的 GPO 端口产生一个脉冲信号,持续时间由 Pulse Duration 来设置,缺省为
10ms.
Custom Reader Inventory Read Timeout: 当盘点结束时,如果没有读到标签,
给指定的 GPO 端口发送高电平脉冲
LLRP Connection Status: LLRP 连接状态显示,连接状态下,GPO 设置为高电平。在使用
Rabbit 情况下,LLRP 始终处于连接状态下
Network Connection Status:当网络处于连接状态下,GPO 设置为高电平
Reader Inventory status : 读写器处于盘点状态下,GPO 设置为高电平
Reader Inventory Tag Status:读写器读到标签的情况下,GPO 设置为高电平
Reader Operational Status:读写器上电后, GPO 设置为高电平。
Pulsed : 设置输出为脉冲电平,脉冲频率在 Pulse Duration 中设置(目前版本暂不支持)。
Pulse Duration :设置脉冲周期。
4.12 网口与串口数据透传
此功能便于上位机通过读写器进行网口和串口之间的数据透传,实现多设备通过读写器
进行通讯。
nts:xxxx\r\n
stn:xxxx\r\n
xxxx 表用户数据 网口收到此数据,将透传给串口
xxxx 表用户数据 串口收到此数据,将透传给网口
如果串口或网口没有开启,什么也不做。
五 Rabbit 写标签配置及使用
Rabbit 程序,可以通过发送写标签命令给读写器,实现标签信息的写入。程序最多可以
同时输入 1500 条写指令,其中可以是普通写入,也可以是选择性写入。
5.1 写标签配置
写标签的配置,跟读取标签的配置基本一直,但是在发送写标签指令时,读写器一定处
于读标签模式,即用 command 模式下的 start/T00 或者 immediately 模式等,让读写器处
于工作状态。
模式配置:针对单标签,慢速写,可以选择 single target 模式; 针对多标签,可以选
择 dual target 模式。
命令返回配置:由于写标签时,需要对写标签动作状态进行反馈,如写成功或者未写成
功等,所以,如果需要写标签动作状态返回,可以在输出数据时,勾选 Command response
命令。
如果配置了发送命令响应,客户端可以收到命令响应信息,所有响应命令以+开头
写命令的响应为:
命令响应:成功时返回:+write:Ok,AccessSpecId ,失败时返回 +write:Failed,"出错信息"
写入结果: +write:Ok/Failed,AccessSpecId,
"写结果":
0-Success
1-TagMemoryOverrunError
2-TagMemoryLockedError
3-InsufficientPower
4-NonspecificTagError
5-NoResponseFromTag
6-NonspecificReaderError
7-Timeout
写操作超时配置:
操作操时支持两种模式
--Timeout 超时时间,超过这个时间没响应的认为超时
--Operand 操作数,队列中超过设定后,还没响应的认为超时
5.2 写标签命令
写命令,命令格式:
write [d:Data,MemoryBank,WordPointer] t:[Data,MemoryBank,BitPointer] [e:EpcLen]
--d: 写入数据,必选
--t: 目标标签,可选
--p: 访问密码,可选
--e: 指定 Epc 字长,只有改写 Epc 数据时才有效,如果不指定这个参数,读写器会自动
更新 Epc 长度, 可选
数据说明:
-- Data 16 进制字符串,长度必须能被 4 整除
-- MemoryBank 内存区,取值 0-3,0-保留区,1-Epc,2-Tid,3-用户区
-- WordPointer 指针,第一个字要写入的地方,如写入 Epc 时,WordPointer 取值为 2
-- BitPointer 指向开始比较的位的指针
-- EpcLen:此长度是需要显示的 EPC 的字长,例如如果需要显示 EPC 长度为 96bits,
那么此值应该为 6。如果为空,则不更改原有 EPC 显示长度。
例 1:将 abcd0001,写入 EPC:
write d:abcd0001,1,2
例 2:将 abcd0001 写入 FFFF0101 开头的标签。
write d:abcd0001,1,2 t:FFFF0101,1,32
注意:红色字体 32 (由于 EPC 的前
两个字有特殊用途,所以我们通常的 EPC 都是从 32 开始的)
例 3: 将 TID 以 E2801160 开头的标签,其 access 密码是 11111111,写入用户区内容
abcd0001
write d:abcd0001,3,0 t:E2801160,2,0 p:11111111
例4: 将10张标签EPC值分别是 DDCC0001 到 DDCC0010的标签分别写入 DDAA0001
到 DDAA0010. 此操作可以使用在写码机上
注意,可以多指令输入,但是每个指令之间,要有分隔符。
write d:DDAA0002,1,2 t:DDCC0002,1,32
write d:DDAA0003,1,2 t:DDCC0003,1,32
write d:DDAA0004,1,2 t:DDCC0004,1,32
write d:DDAA0005,1,2 t:DDCC0005,1,32
write d:DDAA0006,1,2 t:DDCC0006,1,32
write d:DDAA0007,1,2 t:DDCC0007,1,32
write d:DDAA0008,1,2 t:DDCC0008,1,32
write d:DDAA0009,1,2 t:DDCC0009,1,32
write d:DDAA0010,1,2 t:DDCC0010,1,32
write d:DDAA0001,1,2 t:DDCC0001,1,32
例 5: 将 12345678 写入 Epc,自动更新 PcBits,将 Epc 长度设置为 2
write d:12345678:1:2
例 6: 将 12345678 写入 Epc,但不会更新 PcBits
write d:12345678:1:2 e:
例 7: 将 12345678 写入 Epc,并更新 PcBits,将 Epc 长度设置为 3、
write d:12345678:1:2 e:3
例 8:对特定 TID E28001100 标签,将 12345678 写入第一个 32bits,将 87654321 写
入第二个 32bits,将 12344321 写入第三个 32bits,最终显示 96bits
write d:12345678,1,2 t:E28001100,2,0 e:
write d:87654321,1,4 t:E28001100,2,0 e:
write d:12344321,1,6 t:E28001100,2,0 e:6
删除命令
命令格式:delete [AccessSpecId]
删除指定的 AccessSpec,不指定 AccessSpecId 或 AccessSpecId 为 0 时,删除所有操作
六 Rabbit 启动及应用配置
6.1 Rabbit 支持软件启动和关闭。
当应用启动时,无法通过 multireader 连接。
当 Status 显示为红色时,标示此软件处于关闭状态
当 Status 显示为绿色时,标示此软件处于开启状态
6.2 Rabbit 配置应用
当任何配置修改完成时,需要点击:
此时会出现确认提示,点击确认:
当看到应用确认后,标识配置应用完成,点击确定:
6.3 配置导出/导入
生成的配置信息可以直接导出,便于以后其他相同配置的导入
点击“Save”按钮,可以将当前的配置信息导入:
点击“Load”按钮,可以将已有的配置信息导入:
6.4 license
Rabbit 协议对于每一台读写器都有一个基于序列号的 license,输入地址如下:
七 硬件连接及配套测试软件
7.1 网口连接
网络连接口:读写器标识为”ENTERNET”连接口
7.2 串口连接口
在 Impinj 读写器上 GPIO 口内部,里面含有 4 个 GPI 和 4 个 GPO 以及一个 RS232
串口。DB15 接口图如下:
八 版本更新说明
V1.1: 更新的触发模式 command 停止模式说明,需要 1.0.1.6 以上版本。
V1.2: 更新 commad 模式中 start 模式,需要 1.0.1.8 以上版本。
V1.2.1: 注释 4.6 中 Data Prefix 和 Data Suffix:。
V1.3 : 增加 Command 模式中的 config 命令。需 1.0.2.0 以上版本
增加 AdvancedGPI 模式。需 1.0.3.0 以上版本
V1.3.1: 在 advance GPO 中,增加 CustomInventoryTagsStatus 功能,需要 1.3.1 版本以上
V1.4.1 增加 4.11 串口和网口数据透传功能 ,需要 1.0.3.7 以上版本。
V1.4.2 增加发射频点选择功能,具体见功能 4.6,需要 1.0.3.9 以上版本
V1.4.3 增加 4.1 盘点模式中的 AutoSetTurbo 模式,增强在高密度标签下的盘点准确率,需
要 1.0.4.0
V1.5 增加写标签指令,需要 1.0.5 版本以上。
V1.5.2 在写指令上,增加 EPC 显示长度指令,需要 1.0.5.2 以上版本
V1.5.3 Advanced GPO 增加 Custom Inventroy Read Timeout 模式,当盘点结束时,如果没有读
到标签,给指定的 GPO 端口发送高电平脉冲,需要 1.0.5.3 以上版本
V1.5.5 数据输出方式,增加 HTTP post 功能,需要在 1.0.5.5 以上版本使用,读写器固件版
本需要在 5.6.4.240 以上版本使用。
V1.5.6 增加支持输出 Gpi Event 事件,需要在 1.0.5.6 以上版本使用。
附 1 ASCII 表
ASCII 可显示字符
十进 十六进
十进 十六进
图
形
十进 十六进
图
形
二进制
制
制
图形
(空格)
(␠)
二进制
制
制
二进制
制
制
0010 00
00
0100 00
00
0110 00
00
32
20
64
40
@
A
B
C
D
E
F
G
H
I
96
60
`
a
b
c
d
e
f
0010 00
01
0100 00
01
0110 00
01
33
34
35
36
37
38
39
40
41
42
43
44
45
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
!
"
65
66
67
68
69
70
71
72
73
74
75
76
77
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
97
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
0010 00
10
0100 00
10
0110 00
10
98
0010 00
11
0100 00
11
0110 00
11
#
$
%
&
'
99
0010 01
00
0100 01
00
0110 01
00
100
101
102
103
104
105
106
107
108
109
110
0010 01
01
0100 01
01
0110 01
01
0010 01
10
0100 01
10
0110 01
10
0010 01
11
0100 01
11
0110 01
11
g
h
i
0010 10
00
0100 10
00
0110 10
00
(
0010 10
01
0100 10
01
0110 10
01
)
0010 10
10
0100 10
10
0110 10
10
*
J
j
0010 10
11
0100 10
11
0110 10
11
+
,
K
L
k
l
0010 11
00
0100 11
00
0110 11
00
0010 11
01
0100 11
01
0110 11
01
-
M
m
0010 11
10
0100 11
10
0110 11
10
46
47
2E
2F
.
/
78
79
4E
4F
N
O
6E
6F
n
o
0010 11
0100 11
0110 11 111
11
0011 00
00
11
0101 00
00
11
0111 00
00
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
0
1
2
3
4
5
6
7
8
9
:
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
P
Q
R
S
T
U
V
W
X
Y
Z
[
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
p
q
r
0011 00
01
0101 00
01
0111 00
01
0011 00
10
0101 00
10
0111 00
10
0011 00
11
0101 00
11
0111 00
11
s
t
0011 01
00
0101 01
00
0111 01
00
0011 01
01
0101 01
01
0111 01
01
u
v
w
x
y
z
{
0011 01
10
0101 01
10
0111 01
10
0011 01
11
0101 01
11
0111 01
11
0011 10
00
0101 10
00
0111 10
00
0011 10
01
0101 10
01
0111 10
01
0011 10
10
0101 10
10
0111 10
10
0011 10
11
0101 10
11
0111 10
11
;
0011 11
00
0101 11
00
0111 11
00
<
=
>
?
\
|
0011 11
01
0101 11
01
0111 11
01
]
}
0011 11
10
0101 11
10
0111 11
10
^
~
0011 11
11
0101 11
11
_