UHF电子标签读写器UHFReader18用户手册v20.docx
《UHF电子标签读写器UHFReader18用户手册v20.docx》由会员分享,可在线阅读,更多相关《UHF电子标签读写器UHFReader18用户手册v20.docx(58页珍藏版)》请在冰豆网上搜索。
UHF电子标签读写器UHFReader18用户手册v20
UHF一体机电子标签读写器
用户手册v2.0
RFID改变识别的距离
杭州恒竣科技有限公司
一、通讯接口规格4
二、协议描述4
三、数据的格式5
1.上位机命令数据块5
2.读写器响应数据块5
四、操作命令总汇6
1.EPCC1G2(ISO18000-6C)命令6
2.18000-6B命令7
3.读写器自定义命令7
五、命令执行结果状态值8
六、电子标签返回错误代码12
七、标签存储区及需要注意的问题12
八、操作命令详细描述13
8.1命令概述13
8.2EPCC1G2命令13
8.2.1询查标签13
8.2.2读数据14
8.2.3写数据15
8.2.4写EPC号16
8.2.5销毁标签17
8.2.6设定存储区读写保护状态18
8.2.7块擦除20
8.2.8读保护设置(根据EPC号设定)21
8.2.9读保护设定(不需要EPC号)21
8.2.10解锁读保护22
8.2.11测试标签是否被设置读保护22
8.2.12EAS报警设置23
8.2.13EAS报警检测24
8.2.14user区块锁24
8.2.15询查单张标签25
8.2.16块写命令26
8.318000-6B命令27
8.3.1寻查命令(单张)27
8.3.2按条件寻查标签27
8.3.3读数据28
8.3.4写数据29
8.3.5锁定检测29
8.3.6锁定30
8.4读写器自定义命令30
8.4.1读取读写器信息30
8.4.2设置读写器工作频率31
8.4.3设置读写器地址32
8.4.4设置读写器询查时间32
8.4.5设置串口波特率32
8.4.6调整功率33
8.4.7声光控制命令33
8.4.8韦根参数设置命令34
8.4.9工作模式设置命令34
8.4.10读取工作模式参数36
8.4.11EAS检测精度设置37
8.4.12Syris响应偏置时间设置37
8.4.13触发延时设置38
一、通讯接口规格
读写器通过RS232或者RS485接口与上位机串行通讯,按上位机的命令要求完成相应操作。
串行通讯接口的数据帧为一个起始位,8个数据位,一个停止位,无奇偶校验位,缺省波特率57600。
在串行通讯过程中,每个字节的最低有效位最先传输。
二、协议描述
通讯过程由上位机发送命令及参数给读写器,然后读写器将命令执行结果状态和数据返回给上位机。
读写器接收一条命令执行一条命令,只有在读写器执行完一条命令后,才能接收下一条命令。
在读写器执行命令期间,如果向读写器发送命令,命令将丢失。
上位机发送过程如下:
上位机
数据传递方向
读写器
命令数据块
→
说明:
上位机发送的数据流中,每两个相邻字节之间的发送时间间隔必须小于15ms。
在上位机的命令数据流发送过程中,如果相邻字符间隔大于15ms,则之前接收到的数据均被当作无效数据丢弃,然后从下一个字节开始,重新接收。
读写器接收到正确命令后,在不超过询查时间的范围内(不包括数据发送过程,仅仅是读写器执行命令的时间),会返回给读写器一个响应。
读写器发送过程如下:
响应数据块
读写器发送响应数据期间,相邻字节之间的发送时间间隔小于15ms
完整的一次通讯过程是:
上位机发送命令给读写器,并等待读写器返回响应;读写器接收命令后,开始执行命令,然后返回响应;之后上位机接收读写器的响应。
一次通讯结束。
三、数据的格式
1.上位机命令数据块
Len
Adr
Cmd
Data[]
LSB-CRC16
MSB-CRC16
数据各部分说明如下:
长度(字节)
说明
1
命令数据块的长度,但不包括Len本身。
即数据块的长度等于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{uiCrcValue=uiCrcValue^*(pucY+ucI);for(ucJ=0;ucJ<8;ucJ++){if(uiCrcValue&0x0001){uiCrcValue=(uiCrcValue>>1)^POLYNOMIAL;}else{uiCrcValue=(uiCrcValue>>1);}}}returnuiCrcValue;}pucY是要计算CRC16的字符数组的入口,ucX是字符数组中字符个数。上位机收到数据的时候,只要把收到的数据按以上算法进行计算CRC16,结果为0x0000表明数据正确。四、操作命令总汇1.EPCC1G2(ISO18000-6C)命令序号命令功能10x01询查标签20x02读数据30x03写数据40x04写EPC号50x05销毁标签60x06设定存储区读写保护状态70x07块擦除80x08根据EPC号设定读保护设置90x09不需要EPC号读保护设定100x0a解锁读保护110x0b测试标签是否被设置读保护120x0cEAS报警设置130x0dEAS报警探测140x0euser区块锁150x0f询查单标签160x10块写2.18000-6B命令序号命令功能10x50询查命令(单张)。这个命令每次只能询查一张电子标签。不带条件询查。20x51条件询查命令(多张)。这个命令根据给定的条件进行询查标签,返回符合条件的电子标签的UID。可以同时询查多张电子标签。30x52读数据命令。这个命令读取电子标签的数据,一次最多可以读32个字节。40x53写数据命令。写入数据到电子标签中,一次最多可以写32个字节。50x54检测锁定命令。检测某个存储单元是否已经被锁定。60x55锁定命令。锁定某个尚未被锁定的电子标签。3.读写器自定义命令序号命令功能10x21读取读写器信息20x22设置读写器工作频率30x24设置读写器地址40x25设置读写器询查时间50x28设置读写器的波特率60x2F调整读写器输出功率70x33声光控制命令80x34韦根参数设置命令90x35工作模式设置命令100x36读取工作模式参数命令110x37EAS测试精度设置命令120x38设置Syris485响应偏执时间130x3b设置触发有效时间 五、命令执行结果状态值响应数据块Status含义说明LenAdrreCmdStatusData[]CRC165+Data[]部分的长度0xXX0xXX0x00……..LSB+MSB操作成功当成功执行命令后返回给上位机的状态值。Data[]包含了所要信息5+Data[]部分的长度0xXX0x010x01……..LSB+MSB询查时间结束前返回上位机发出询查G2标签命令时,读写器询查电子标签时,如果在设定的询查时间内返回信息给上位机,则返回此状态值5+Data[]部分的长度0xXX0x010x02……..LSB+MSB指定的询查时间溢出上位机发出询查G2标签命令时,当询查时间溢出时,读写器还没有完成询查操作时返回给上位机的状态值5+Data[]部分的长度0xXX0x010x03……..LSB+MSB本条消息之后,还有消息上位机发出询查G2标签命令时,如果询查命令读到的标签数量无法在一条消息内传送完,将分多次发送。5+Data[]部分的长度0xXX0x010x04……..LSB+MSB读写器存储空间已满上位机发出询查G2标签命令时,如果询查到的电子标签太多,超过了读写器的存储容量,则读写器返回读到的电子标签EPC号,同时,也将返回此状态值50xXX0xXX0x05无此项LSB+MSB访问密码错误当读写器执行需要密码才能执行的操作,而命令中给出的密码是错误的密码时返回给上位机的状态值50xXX0x050x09无此项LSB+MSB销毁标签失败当向G2标签进行销毁操作时,如果销毁密码错误,或是读写器与标签通讯不畅,则将返回此状态值50xXX0x050x0a无此项LSB+MSB销毁密码不能为全0销毁标签时,销毁密码为0的标签是无法销毁的50xXX0xXX0x0b无此项LSB+MSB电子标签不支持该命令G2协议中的某些可选命令,及一些厂商的特定命令,可能某些标签不支持这些命令,此时返回此状态值50xXX0xXX0x0c无此项LSB+MSB对该命令访问密码不能为全0对NXPUCODEEPCG2X标签设置读保护及设置EAS报警时,访问密码不能为全0,若为全0,将返回此状态值50xXX0x0a0x0d无此项LSB+MSB电子标签已经被设置了读保护,不能再次设置对已经被设置了读保护的NXPUCODEEPCG2X标签,在解除读保护之前,不能再次设置。此情况下返回这个状态值50xXX0x0a0x0e无此项LSB+MSB电子标签没有被设置读保护,不需要解锁对NXPUCODEEPCG2X标签解锁,如果标签没有被锁定,将返回此状态值,对不支持读保护设定命令的标签发送此命令,也将返回此状态值50xXX0x530x10无此项LSB+MSB有字节空间被锁定,写入失败在向6B标签写入数据时,因为有字节空间被锁定,使得写入数据失败时,返回此状态值50xXX0x550x11无此项LSB+MSB不能锁定当6B标签出现不能被锁定的情况,返回此状态值50xXX0x550x12无此项LSB+MSB已经锁定,不能再次锁定对已经锁定的6B标签进行再次锁定时,返回此状态值50xXX0xXX0x13无此项LSB+MSB参数保存失败,但设置的值在读写器断电前有效对于某些需要保存的参数,如果保存失败,则返回此状态值50xXX0xXX0x14无此项LSB+MSB无法调整调整功率的时候,在某些情况下,如果出现功率无法调整的错误,则返回此状态值5+Data[]的长度0xXX0x510X15……..LSB+MSB询查时间结束前返回上位机发出询查6B标签命令时,读写器询查电子标签时,如果在设定的询查时间内返回信息给上位机,则返回此状态值5+Data[]的长度0xXX0x510x16……..LSB+MSB指定的询查时间溢出上位机发出询查6B标签命令时,当询查时间溢出时,读写器还没有完成询查操作时返回给上位机的状态值5+Data[]的长度0xXX0x510x17……..LSB+MSB本条消息之后,还有消息上位机发出询查6B标签命令时,如果询查命令读到的标签数量无法在一条消息内传送完,将分多次发送。5+Data[]的长度0xXX0x510x18……..LSB+MSB读写器存储空间已满上位机发出询查6B标签命令时,如果询查到的电子标签太多,超过了读写器的存储容量,则读写器返回读到的电子标签UID号,同时,也将返回此状态值50xXX0xXX0x19无此项LSB+MSB电子标签不支持该命令或者访问密码不能为0当设置电子标签的EAS报警时,在通信正常的情况下,如果标签无法设置,则可能是电子标签不支持该命令,也可能是电子标签的访问密码不能为050xXX0xXX0xF9无此项LSB+MSB命令执行出错命令执行出错50xXX0xXX0xFA无此项LSB+MSB有电子标签,但通信不畅,操作失败当检测到有效范围内存在可操作的电子标签,但读写器与电子标签之间的通讯质量不好,而无法完成整个通讯过程时返回给上位机的信息50xXX0xXX0xFB无此项LSB+MSB无电子标签可操作当读写器对电子标签进行操作时,有效范围内没有可操作的电子标签时返回给上位机的状态值60xXX0xXX0xFCErr_codeLSB+MSB电子标签返回错误代码电子标签返回错误代码时,错误代码由Err_code返回给上位机50xXX0xXX0xFD无此项LSB+MSB命令长度错误当上位机输入的命令的实际长度和它应当具有的长度不同时,返回该状态50xXX0x000xFE无此项LSB+MSB不合法的命令当上位机输入的命令是不可识别的命令,如不存在的命令、或是CRC错误的命令50xXX0xXX0xFF无此项LSB+MSB参数错误上位机发送的命令中的参数不符合要求时,返回此状态六、电子标签返回错误代码EPCC1G2(ISO18000-6C)电子标签错误代码:错误代码支持错误代码错误代码名称错误描述特定错误代码0x00其它错误全部捕捉未被其它代码覆盖的错误0x03存储器超限或不被支持的PC值存储位置不存在或标签不支持的PC值0x04存储器锁定存储位置锁定或永久锁定,且不可写入0x0b电源不足标签电源不足,无法执行存储写入操作非特定错误代码0x0f非特定错误标签不支持特定错误代码七、标签存储区及需要注意的问题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错误的命令,则返回值如下:LenAdrreCmdStatusCRC-160x050xXX0x000xFELSBMSB如果命令的长度不对,则返回信息如下:LenAdrreCmdStatusCRC-160x050xXX0xXX0xFDLSBMSB有两种命令读写器不会响应:1.如果输入的命令的地址出错(地址不是0xFF,也不是读写器地址),读写器不会有任何响应。2.如果输入的命令是不完整的,即命令的Len域指示的命令长度大于实际的命令长度,则读写器将不会做出任何响应。8.2EPCC1G2命令8.2.1询查标签询查命令的作用是检查有效范围内是否有符合协议的电子标签存在。想要对未知EPC的新标签进行别的操作,应先通过询查命令来得到标签的EPC号。在运行询查命令之前,用户可以根据需要先设定好该命令的最大运行时间(询查时间)。读写器在询查时间规定的范围内必须给上位机一个结果,如果读写器尚未读完有效范围内的所有标签,而询查时间已到,则读写器不再询查其它标签,而是直接把已经询查到得标签返回给上位机,并提示上位机还有标签未读完。然后等待下一个命令。询查时间的缺省值是1s,用户可以通过运行读写器自定义命令设定询查时间命令来修改。允许的范围是:3*100ms~255*100ms(实际的响应时间可能会比设定的值大0~75ms)。询查时间如果设定的过短,可能会出现在规定时间内询查不到电子标签的情况。命令:LenAdrCmdData[]CRC-16AdrTIDLenTID0xXX0xXX0x010xXX0xXXLSBMSB参数解析:AdrTID:询查TID区的起始字地址。LenTID:询查TID区的数据字数。LenTID取值为0~15,若为其它参数将返回参数错误信息。注:当AdrTID、LenTID为空时表示询查标签EPC,否则询查TID。TID询查功能仅当读写器固件V2.36及以上版本有效。应答:LenAdrreCmdStatusData[]CRC-16NumEPCID0xXX0xXX0x010xXX0xXXEPC-1,EPC-2,EPC-3…LSBMSB参数解析:Status是应答的状态,其代表的意义如下表所述:Status说明0x01命令执行结束,同时返回询查到的电子标签数据0x02询查时间结束,命令执行强制退出,同时返回已询查到的标签数据0x03如果读到的标签数量无法在一条消息内传送完,将分多次发送。如果Status为0x03,则表示这条数据结束后,还有数据。0x04还有电子标签未读取,电子标签数量太多,读写器的存储区已满,返回此状态值,同时返回已询查到得电子标签数据。Num:本条命令中包含的电子标签的EPC/TID的个数。EPCID:读到的电子标签的EPC/TID数据,EPC-1是第一张标签的EPC/TID长度+第一张标签的EPC号或TID数据,依此类推。每个电子标签EPC号或TID数据高字(EPCC1G2中数据以字为单位)在前,每一个字的高字节在前。EPC/TID长度以一个字节表示。8.2.2读数据这个命令读取标签的保留区、EPC存储区、TID存储区或用户存储区中的数据。从指定的地址开始读,以字为单位。命令:LenAdrCmdData[]CRC-160xXX0xXX0x02——LSBMSBData参数如下:Data[]ENumEPCMemWordPtrNumPwdMaskAdrMaskLen0xXX变长0xXX0xXX0xXX4Byte0xXX0xXX参数解析:ENum:EPC号长度,以字为单位。EPC的长度在15个字以内,不能为0。超出范围,将返回参数错误信息。EPC:要读取数据的标签的EPC号。长度根据所给的EPC号决定,EPC号以字为单位,且必须是整数个长度。高字在前,每个字的高字节在前。这里要求给出的是完整的EPC号。Mem:一个字节。选择要读取的存储区。0x00:保留区;0x01:EPC存储区;0x02:TID存储区;0x03:用户存储区。其他值保留。若命令中出现了其它值,将返回参数出错的消息。WordPtr:一个字节。指定要读取的字起始地址。0x00表示从第一个字(第一个16位存储区)开始读,0x01表示从第2个字开始读,依次类推。Num:一个字节。要读取的字的个数。不能设置为0x00,否则将返回参数错误信息。Num不能超过120,即最多读取120个字。若Num设置为0或者超过了120,将返回参数出错的消息。Pwd:四个字节,这四个字节是访问密码。32位的访问密码的最高位在Pwd的第一字节(从左往右)的最高位,访问密码最低位在Pwd第四字节的最低位,Pwd的前两个字节放置访问密码的高字。只有当读保留区,并且相应存储区设置为密码锁、且标签的访问密码为非0的时候,才需要使用正确的访问密码。在其他情况下,Pwd为零或正确的访问密码。MaskAdr:一个字节,掩模EPC号的起始字节地址。0x00表
uiCrcValue=uiCrcValue^*(pucY+ucI);
for(ucJ=0;ucJ<8;ucJ++)
if(uiCrcValue&0x0001)
uiCrcValue=(uiCrcValue>>1)^POLYNOMIAL;
}
else
uiCrcValue=(uiCrcValue>>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表
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1