标签存储器分区 分为Reserved(保留),EPC(电子产品代码),TID(标签识别号)和User(用户)四个独立的存储区块(Bank)。
RESERVER区:8byte(4字)大小,前4byte(2字)为摧毁密码(用于摧毁标签,一般用不到),后4byte(2字)为访问密码(用于进行写数据和锁定操作),默认值为:0000 0000 (摧毁密码) 0000 0000 (访问密码)。
TID区:12byte(6字)大小,“只可读,不可写”, 出厂已经写入,为标签的唯一标识符,电子标签的产品类识别号,每个生产厂商的TID号都会不同。
EPC区为识别标签对象的电子产品码,EPC与TID相比,区别在于EPC可以用户手动写入修改。EPC区的数据结构是,第一个word是校验位,第二个word是长度控制,之后的才是数据存储位置,盘存的时候,是根据长度控制位所表示的长度来显示EPC的。
实际写入EPC数据的时候,起始地址填1,即从长度控制位开始写入数据,校验位会自动计算不用手动写入。
长度控制位计算: EPC数据长度 * 2 = i; 将i转换为十六进制表示,然后在转换后的结果后面加00,最终得到的就是长度控制位的数据。如:0001, i = 4 * 2 = 8 —> 08 —>0800,长度控制位为0800,程序中计算:
byte[] newEPCByte = Tools.HexString2Bytes(newEPC); byte[] pcByte = new byte[] { 0x00, 0x00 }; pcByte[0] = (byte) (newEPCByte.length * 4); String pc = Tools.Bytes2HexString(pcByte, 2));
长度根据实际需要写入的数据长度填,比如:0001,长度为1word,4位(需要注意的是,数据位长度必须为4的倍数),加上长度控制位0800,软件中长度填写2; 例: 0001 起始地址:1,长度:2,数据:08000001
USER区:该存贮器的长度由各个电子标签的生产厂商确定,USER区可以写入用户自定义的数据(以16进制形式)