UHF电子标签读写器UHFReader18用户手册v20Word下载.docx
《UHF电子标签读写器UHFReader18用户手册v20Word下载.docx》由会员分享,可在线阅读,更多相关《UHF电子标签读写器UHFReader18用户手册v20Word下载.docx(56页珍藏版)》请在冰豆网上搜索。
![UHF电子标签读写器UHFReader18用户手册v20Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/24/e81b11b1-cd17-49d6-8cac-724fdab688b1/e81b11b1-cd17-49d6-8cac-724fdab688b11.gif)
即数据块的长度等于4加Data[]的长度。
Len允许的最大值为96,最小值为4。
读写器地址。
地址范围:
0x00~0xFE,0xFF为广播地址,读写器只响应和自身地址相同及地址为0xFF的命令。
读写器出厂时地址为0x00。
命令代码。
不定
参数域。
在实际命令中,可以不存在。
CRC16低字节。
CRC16是从Len到Data[]的CRC16值
CRC16高字节。
2.读写器响应数据块
reCmd
Status
响应数据块的长度,但不包括Len本身。
即数据块的长度等于5加Data[]的长度。
指示该响应数据块是哪个命令的应答。
如果是对不可识别的命令的应答,则reCmd为0x00。
命令执行结果状态值。
数据域,可以不存在。
CRC16是从Len到Data[]的CRC16值。
CRC16的C语言算法:
#definePRESET_VALUE0xFFFF
#definePOLYNOMIAL0x8408
unsignedintuiCrc16Cal(unsignedcharconst*pucY,unsignedcharucX)
{
unsignedcharucI,ucJ;
unsignedshortintuiCrcValue=PRESET_VALUE;
for(ucI=0;
ucI<
ucX;
ucI++)
{
uiCrcValue=uiCrcValue^*(pucY+ucI);
for(ucJ=0;
ucJ<
8;
ucJ++)
{
if(uiCrcValue&
0x0001)
uiCrcValue=(uiCrcValue>
>
1)^POLYNOMIAL;
}
else
1);
}
returnuiCrcValue;
}
pucY是要计算CRC16的字符数组的入口,ucX是字符数组中字符个数。
上位机收到数据的时候,只要把收到的数据按以上算法进行计算CRC16,结果为0x0000表明数据正确。
四、操作命令总汇
1.EPCC1G2(ISO18000-6C)命令
序号
命令
功能
0x01
询查标签
2
0x02
读数据
3
0x03
写数据
4
0x04
写EPC号
5
0x05
销毁标签
6
0x06
设定存储区读写保护状态
7
0x07
块擦除
8
0x08
根据EPC号设定读保护设置
9
0x09
不需要EPC号读保护设定
10
0x0a
解锁读保护
11
0x0b
测试标签是否被设置读保护
12
0x0c
EAS报警设置
13
0x0d
EAS报警探测
14
0x0e
user区块锁
15
0x0f
询查单标签
16
0x10
块写
2.18000-6B命令
0x50
询查命令(单张)。
这个命令每次只能询查一张电子标签。
不带条件询查。
0x51
条件询查命令(多张)。
这个命令根据给定的条件进行询查标签,返回符合条件的电子标签的UID。
可以同时询查多张电子标签。
0x52
读数据命令。
这个命令读取电子标签的数据,一次最多可以读32个字节。
0x53
写数据命令。
写入数据到电子标签中,一次最多可以写32个字节。
0x54
检测锁定命令。
检测某个存储单元是否已经被锁定。
0x55
锁定命令。
锁定某个尚未被锁定的电子标签。
3.读写器自定义命令
0x21
读取读写器信息
0x22
设置读写器工作频率
0x24
设置读写器地址
0x25
设置读写器询查时间
0x28
设置读写器的波特率
0x2F
调整读写器输出功率
0x33
声光控制命令
0x34
韦根参数设置命令
0x35
工作模式设置命令
0x36
读取工作模式参数命令
0x37
EAS测试精度设置命令
0x38
设置Syris485响应偏执时间
0x3b
设置触发有效时间
五、命令执行结果状态值
Status含义
CRC16
5+Data[]部分的长度
0xXX
0x00
……..
LSB+MSB
操作成功
当成功执行命令后返回给上位机的状态值。
Data[]包含了所要信息
询查时间结束前返回
上位机发出询查G2标签命令时,读写器询查电子标签时,如果在设定的询查时间内返回信息给上位机,则返回此状态值
指定的询查时间溢出
上位机发出询查G2标签命令时,当询查时间溢出时,读写器还没有完成询查操作时返回给上位机的状态值
本条消息之后,还有消息
上位机发出询查G2标签命令时,如果询查命令读到的标签数量无法在一条消息内传送完,将分多次发送。
读写器存储空间已满
上位机发出询查G2标签命令时,如果询查到的电子标签太多,超过了读写器的存储容量,则读写器返回读到的电子标签EPC号,同时,也将返回此状态值
无此项
访问密码错误
当读写器执行需要密码才能执行的操作,而命令中给出的密码是错误的密码时返回给上位机的状态值
销毁标签失败
当向G2标签进行销毁操作时,如果销毁密码错误,或是读写器与标签通讯不畅,则将返回此状态值
销毁密码不能为全0
销毁标签时,销毁密码为0的标签是无法销毁的
电子标签不支持该命令
G2协议中的某些可选命令,及一些厂商的特定命令,可能某些标签不支持这些命令,此时返回此状态值
对该命令访问密码不能为全0
对NXPUCODEEPCG2X标签设置读保护及设置EAS报警时,访问密码不能为全0,若为全0,将返回此状态值
电子标签已经被设置了读保护,不能再次设置
对已经被设置了读保护的NXPUCODEEPCG2X标签,在解除读保护之前,不能再次设置。
此情况下返回这个状态值
电子标签没有被设置读保护,不需要解锁
对NXPUCODEEPCG2X标签解锁,如果标签没有被锁定,将返回此状态值,对不支持读保护设定命令的标签发送此命令,也将返回此状态值
有字节空间被锁定,写入失败
在向6B标签写入数据时,因为有字节空间被锁定,使得写入数据失败时,返回此状态值
0x11
不能锁定
当6B标签出现不能被锁定的情况,返回此状态值
0x12
已经锁定,不能再次锁定
对已经锁定的6B标签进行再次锁定时,返回此状态值
0x13
参数保存失败,但设置的值在读写器断电前有效
对于某些需要保存的参数,如果保存失败,则返回此状态值
0x14
无法调整
调整功率的时候,在某些情况下,如果出现功率无法调整的错误,则返回此状态值
5+Data[]的长度
0X15
上位机发出询查6B标签命令时,读写器询查电子标签时,如果在设定的询查时间内返回信息给上位机,则返回此状态值
0x16
上位机发出询查6B标签命令时,当询查时间溢出时,读写器还没有完成询查操作时返回给上位机的状态值
0x17
上位机发出询查6B标签命令时,如果询查命令读到的标签数量无法在一条消息内传送完,将分多次发送。
0x18
读写器存储空间已满
上位机发出询查6B标签命令时,如果询查到的电子标签太多,超过了读写器的存储容量,则读写器返回读到的电子标签UID号,同时,也将返回此状态值
0x19
电子标签不支持该命令或者访问密码不能为0
当设置电子标签的EAS报警时,在通信正常的情况下,如果标签无法设置,则可能是电子标签不支持该命令,也可能是电子标签的访问密码不能为0
0xF9
命令执行出错
0xFA
有电子标签,但通信不畅,操作失败
当检测到有效范围内存在可操作的电子标签,但读写器与电子标签之间的通讯质量不好,而无法完成整个通讯过程时返回给上位机的信息
0xFB
无电子标签可操作
当读写器对电子标签进行操作时,有效范围内没有可操作的电子标签时返回给上位机的状态值
0xFC
Err_code
电子标签返回错误代码
电子标签返回错误代码时,错误代码由Err_code返回给上位机
0xFD
命令长度错误
当上位机输入的命令的实际长度和它应当具有的长度不同时,返回该状态
0xFE
不合法的命令
当上位机输入的命令是不可识别的命令,如不存在的命令、或是CRC错误的命令
0xFF
参数错误
上位机发送的命令中的参数不符合要求时,返回此状态
六、电子标签返回错误代码
EPCC1G2(ISO18000-6C)电子标签错误代码:
错误代码支持
错误代码
错误代码名称
错误描述
特定错误代码
其它错误
全部捕捉未被其它代码覆盖的错误
存储器超限或不被支持的PC值
存储位置不存在或标签不支持的PC值
存储器锁定
存储位置锁定或永久锁定,且不可写入
电源不足
标签电源不足,无法执行存储写入操作
非特定错误代码
非特定错误
标签不支持特定错误代码
七、标签存储区及需要注意的问题
A.EPCC1G2标签(简称G2标签)
G2标签分4个区:
保留区(又称密码区),EPC区,TID区和User区。
保留区:
保留区4个字。
前两个字是销毁密码,后两个字是访问密码。
可读可写,保留区的两个密码区的读写保护特性可以分别设置。
EPC区:
标签EPC号存储在该区,其中第0个字是PC值和标签EPC号的CRC16。
第1个字是PC值,该值指示标签EPC号长度,从第2个字开始才是标签的EPC号数据。
可读可写。
TIC区:
该区存储的数据是由标签生产商设定的ID号。
可读不可写。
User区:
是用户数据区。
G2命令中很多地方要求给出数据长度,这里要注意字与字节的区别。
1个字等于2个字节。
有些命令需要访问密码,如果没有密码设置,则用0填充密码区,而不能为空。
B.18000-6B标签
6B标签只有一个存储空间,最低8个字节是标签的UID,并且不能被改写。
后面的字节都是可改写的,也可以被锁定,但是一旦锁定后,则不能再次改写,也不能解锁。
八、操作命令详细描述
8.1命令概述
操作命令有三大类,一类是协议相关的;
另一类是读写器相关的;
还有一类是标签自定义命令。
如果上位机输入的命令是不可识别的命令,如不存在的命令、或是CRC错误的命令,则返回值如下:
CRC-16
LSB
MSB
如果命令的长度不对,则返回信息如下:
有两种命令读写器不会响应:
1.如果输入的命令的地址出错(地址不是0xFF,也不是读写器地址),读写器不会有任何响应。
2.如果输入的命令是不完整的,即命令的Len域指示的命令长度大于实际的命令长度,则读写器将不会做出任何响应。
8.2EPCC1G2命令
8.2.1询查标签
询查命令的作用是检查有效范围内是否有符合协议的电子标签存在。
想要对未知EPC的新标签进行别的操作,应先通过询查命令来得到标签的EPC号。
在运行询查命令之前,用户可以根据需要先设定好该命令的最大运行时间(询查时间)。
读写器在询查时间规定的范围内必须给上位机一个结果,如果读写器尚未读完有效范围内的所有标签,而询查时间已到,则读写器不再询查其它标签,而是直接把已经询查到得标签返回给上位机,并提示上位机还有标签未读完。
然后等待下一个命令。
询查时间的缺省值是1s,用户可以通过运行读写器自定义命令设定询查时间命令来修改。
允许的范围是:
3*100ms~255*100ms(实际的响应时间可能会比设定的值大0~75ms)。
询查时间如果设定的过短,可能会出现在规定时间内询查不到电子标签的情况。
命令:
AdrTID
LenTID
参数解析:
AdrTID:
询查TID区的起始字地址。
LenTID:
询查TID区的数据字数。
LenTID取值为0~15,若为其它参数将返回参数错误信息。
注:
当AdrTID、LenTID为空时表示询查标签EPC,否则询查TID。
TID询查功能仅当读写器固件V2.36及以上版本有效。
应答:
Num
EPCID
EPC-1,EPC-2,EPC-3…
Status是应答的状态,其代表的意义如下表所述:
命令执行结束,同时返回询查到的电子标签数据
询查时间结束,命令执行强制退出,同时返回已询查到的标签数据
如果读到的标签数量无法在一条消息内传送完,将分多次发送。
如果Status为0x03,则表示这条数据结束后,还有数据。
还有电子标签未读取,电子标签数量太多,读写器的存储区已满,返回此状态值,同时返回已询查到得电子标签数据。
Num:
本条命令中包含的电子标签的EPC/TID的个数。
EPCID:
读到的电子标签的EPC/TID数据,EPC-1是第一张标签的EPC/TID长度+第一张标签的EPC号或TID数据,依此类推。
每个电子标签EPC号或TID数据高字(EPCC1G2中数据以字为单位)在前,每一个字的高字节在前。
EPC/TID长度以一个字节表示。
8.2.2读数据
这个命令读取标签的保留区、EPC存储区、TID存储区或用户存储区中的数据。
从指定的地址开始读,以字为单位。
——
Data参数如下:
ENum
EPC
Mem
WordPtr
Pwd
MaskAdr
MaskLen
变长
4Byte
ENum:
EPC号长度,以字为单位。
EPC的长度在15个字以内,不能为0。
超出范围,将返回参数错误信息。
EPC:
要读取数据的标签的EPC号。
长度根据所给的EPC号决定,EPC号以字为单位,且必须是整数个长度。
高字在前,每个字的高字节在前。
这里要求给出的是完整的EPC号。
Mem:
一个字节。
选择要读取的存储区。
0x00:
保留区;
0x01:
EPC存储区;
0x02:
TID存储区;
0x03:
用户存储区。
其他值保留。
若命令中出现了其它值,将返回参数出错的消息。
WordPtr:
指定要读取的字起始地址。
0x00表示从第一个字(第一个16位存储区)开始读,0x01表示从第2个字开始读,依次类推。
要读取的字的个数。
不能设置为0x00,否则将返回参数错误信息。
Num不能超过120,即最多读取120个字。
若Num设置为0或者超过了120,将返回参数出错的消息。
Pwd:
四个字节,这四个字节是访问密码。
32位的访问密码的最高位在Pwd的第一字节(从左往右)的最高位,访问密码最低位在Pwd第四字节的最低位,Pwd的前两个字节放置访问密码的高字。
只有当读保留区,并且相应存储区设置为密码锁、且标签的访问密码为非0的时候,才需要使用正确的访问密码。
在其他情况下,Pwd为零或正确的访问密码。
MaskAdr:
一个字节,掩模EPC号的起始字节地址。
0x00表示从EPC号的最高字节开始掩模,0x01表示从EPC号的第二字节开始掩模,以此类推。
MaskLen:
一个字节,掩模的字节数。
掩模起始字节地址+掩模字节数不能大于EPC号字节长度,否则返回参数错误信息。
当MaskAdr、MaskLen为空时表示以完整的EPC号掩模。
Word1,Word2,…
Word1,Word2….:
以字为单位。
每个字都是2个字节,高字节在前。
Word1是从起始地址读到的字,Word2是起始地址后一个字地址上读到的字,以此类推。
8.2.3写数据
这个命令可以一次性往保留区、TID存储区或用户存储区中写入若干个字。
WNum
Wdt
WNum:
待写入的字个数,一个字为2个字节。
这里字的个数必须和实际待写入的数据个数相等。
WNum必须大于0,若上位机给出的WNum为0或者WNum和实际字个数不相等,将返回参数错误的消息。
EPC号长度。
以字为单位。
EPC的长度在15个字以内,可以为0。
否则返回参数错误信息。
要写入数据的标签的EPC号。
长度由所给的EPC号决定,EPC号以字为单位,且必须是整数个长度。
一个字节,选择要写入的存储区。
TID存储区