背景: 前段时间时间公司开发的项目其中有个模块是要将原有产品(比如某个厂商的衣服吊牌)的条形码信息(也就是UPC-a编码)转化成无线射频识别的EPC编码,供RFID应答器读取。但是这部分之前也没有接触过,所以从GS1世界编码规范开始了解,总算是有所收获。所以记录下相关知识点。
| UPC和epc
upc是之前用的全球唯一标识码,比如,条形码—>UPC码为12位数字构成,其中UPC码第一位和最后一位为固定字符,2-6位为制造商信息,7-11为产品信息。
epc是目前推广的射频识别的码,可以存储的信息更多,慢慢要替换上面的upc。这个EPC目前编码的二进制格式有96 位、170位等多种,其中版本号(Header)是固定的8位,其余三段数据的长度是不固定的,以SGTIN-96编码方式为例,我们有SGTIN-96编码30.7800190.000060.000000010,其中30是版本号,7800190是域名管理码,均由EPC组织决定的,而对象种类000060和序列号000000010是由公司管理者决定的。96位的EPC码:307800190000060000000010(每个数字4位)。
| 概念
GIS全世界通用的一种编码规范。GTIN编码就是GIS规范下对贸易货品的编码。根据组成结构的不同分为-8,-12,-13,-14等,相应的GTIN编码之间通过补0可以进行转化。使用0开头的GS1前缀用于GTIN-12编码(UPC前缀用于变-12),非0的开始的GS1前缀用于编-13.(这种情况下就直接给的GS1前缀,就直接给的GS1编码,然后再去转换,不用像给的upc然后upc转GS1了)。当数据载体(比如二维码)要求我们的GTIN长度必须是多少位,不足的就补(也就限定了只能升级不能降级).
| upc-a 12(GTIN-12) ,ean13(GTIN-13)
都是条形码,一个12位组成,一个13位组成。
| upc转化成epc
upc-a12为例:
-
分离upc,去掉最后一位数字。
-
在头部补0。
-
在公司前缀和商品信息间加一个indicator digit用于表示目前商品所处的级别。
-
在末尾加序列号(唯一的数字字符串)
以上4步操作后得到的就是epc的Data部分。
EPC共有6块信息,还有header(固定值48),+filter(过滤器,用于给阅读器区分读取或者忽略哪些标签)+partition
5. filter和partition要去GS1/EPCglobal标签数据标准表查找相应的数值补上。partion决定了前缀和item的位数。先将uri格式的编码转化成二进制,然后再对二进制的进行分割。
6. upc就是GNIT-12?然后补0变-13?然后这样转?
总结:前缀固定,filter根据情况选择,partition由前缀位数确定,后面就是主要信息。
业务中,就是从excel表中去获取数据,校验数据是否符合要求,然后根据以上学习的转换规则编写一个utils工具类去给转码用,然后由业务层调用就可。
| 继续学习总结
EPC编码体系中的SGTIN是一种基于EAN.UCC来的。所以GTIN转码的时候都是往SGTIN转,SGTIN也就是EPC。
GTIN是对一个特定的产品是类的单位,EPC是直接标识到一个产品是个体。
所有的SGTIN表示法都支持14位GTIN格式(注意是所有的SGTIN格式表示法,也就是说-12,-13都得转成-14,然后再往epc去转)。
目前理解到的就是指示位为0的所有-12,-13的GTIN都能转成EPC格式。
所以就是SGTIN就是GTIN加一个序列码组成的。
所以就是目前只能upc去转,因为ean-13这个补码体系最终还没有确定。然后ean-14就不能转。
其他编码体系比如十进制的SSCC也可以转epc。
…
接下来可以研究的就是SGTIN198的情况了。