哈喽,大家好,前段时间给大家介绍了常见条码的基本类型及构成方式,现在给大家介绍下,如果只是靠在输入框内输入一串数字,软件怎么识别这些条码是什么类型的条码,条码内的数字代表什么?为了想到办法,小编耗费了几十根头发,才想到一个“馊主意”,下面直接看具体内容吧:

条码编码的三个原则(常用条码编码规则说明及示例解析)(1)

1、条码解析流程

1.1. 主流程

条码编码的三个原则(常用条码编码规则说明及示例解析)(2)

流程描述:

Ø 通过条码扫描器获取到条码内容;

Ø 系统内设定完成各种条码的解析规则;

Ø 进入条码解析流程;

Ø 无法解析则报错提示重新扫描条码;

Ø 条码解析完成;

Ø 条码解析结果展示;

Ø 根据扫描到的条码到对应的业务数据库内查询;

1.2. 解析流程

条码编码的三个原则(常用条码编码规则说明及示例解析)(3)

流程描述:

Ø 先计算条码内容的位数:默认8位为EAN-8/UPC-E码、12位为UPC-A码、13位EAN-13码、14位ITF-14码,其余为任意位;

Ø 默认情况下判定的条码类型后进入预设的解析规则进行解析,解析不出的话进入任意位的解析程序;

Ø 任意位的条码判定,先判定条码的开头:括号为GS1-128码、 号为HIBC码、其余进入校验位解析程序;

Ø 先根据code-128码的校验位规则校验,若成功,则为code-128;

Ø Code-128校验失败后根据code39码的校验位规则,校验成功为code39码;

Ø 校验失败默认为codabar码,进行codabar码解析;

Ø 解析失败提示无法解析;

1.3 EAN-8条码信息提取流程

条码编码的三个原则(常用条码编码规则说明及示例解析)(4)

如上图所示为EAN-8条码,读取数据为69326745,条码宽度为定长8;

EAN-8条码的组成为,其中:

“前缀码 商品项目代码 校验码”

前缀码:国际EAN组织分配给各国或地区的组织代码,定长,共3位;

商品项目代码:商品代码,由中国编码中心分配,或厂商自行编码,定长,共4位;

备注:一个商品项目只能有一个商品项目代码,唯一性;

校验位:检验编码是否正确,定长,共1位;

信息提取流程:

由于EAN-8码的各部分均为定长,因此,可直接按照指定宽度进行信息的提取。

首先,设备读取数据后,截取数据的前3位,第1-3位,该数据段为即为国家代码;

其次,截取数据段的中间4位,第4-7位,该数据段即为商品的项目代码;

最后,校验位,主要用于检验数据编码是否正确,可不考虑。

1.4 EAN-13条码信息提取流程

条码编码的三个原则(常用条码编码规则说明及示例解析)(5)

如上图所示为EAN-13条码,读取数据为6952456726512,条码宽度为定长13;

EAN-13条码的组成为,其中:

“厂商识别代码 商品项目代码 校验码”

厂商识别代码:不定长,7-10位,由国家代码与厂商代码组成,其中,

国家代码由国际EAN组织统一分配给各国或地区的组织代码,定长,共3位;

厂商代码由中国物品编码中心统一分配给生产厂商,不定长,4-7位;

商品项目代码:商品代码,由中国编码中心分配,或厂商自行编码,不定长,共2-5位;

备注:一个商品项目只能有一个商品项目代码,唯一性;

校验位:检验编码是否正确,定长,共1位;

信息提取流程:

由于EAN-13码中的厂商代码与项目代码不定长,因此,需要多次循环处理,判断哪种截取方式是正确的。

当设备读取数据结束之后,并确定了数据宽度为13时:

第一步,截取数据的前7位,并将这7位数据与厂商识别代码数据库进行比对,

若比对成功,则表明这7位数据为正确的厂商识别代码,

其中,前3位为国家代码,后4位为厂商代码;

那么余下的6位数据即为商品项目代码及校验码,截取该数据段的前5位,即为商品项目代码;

若比对不成功,则进入下一步;

第二步,截取数据段的前8位,并将这8位数据与厂商识别代码数据库进行比对,

若比对成功,则表明这8位数据为正确的厂商识别代码,

其中,前3位为国家代码,后4位为厂商代码;

那么余下的5位数据即为商品项目代码及校验码,截取该数据段的前4位,即为商品项目代码;

若比对不成功,则进入下一步;

第三步,继续截取数据段的前9位或10位,直到截取数据与厂商识别代码比对成功,然后按照对应的位置,提取相应的信息,具体操作同以上两个步骤。

1.5 HIBC条码信息提取流程

1. HIBC码与其它编码的区分

HIBC码与其它码有一个非常明显的区别,就是所有HIBC码的设备读取数据(包括条形码、二维码等)的第一位都固定为“ ”,因此,在进行条码读取时,可以根据读取数据的第一位字符对HIBC码进行识别。

区分流程如下:

第一步,设备扫码获取条码数据;

第二步,提取条码数据的第1位,若该字符为“ ”,则判定该条码为HIBC码;

第三步,否则,判定该条码为其它规则条码;

判定结束!

2. HIBC主、从条码区分

与Code-128编码规则类似,HIBC码也有主、从之分,其中,主条码主要描述与产品基础属性相关的标签信息,而从条码则主要描述与产品生产、配送等相关的附加信息。

根据表1-3主、从条码数据结构及指示符可以发现,主、从条码间有比较明显的相同点与不同点:

相同点:都是以“ ”作为条码数据的起始字符;

不同点:主条码中,“ ”之后的数据为标签识别码(或称厂商代码),其固定格式为“ 1位字母3位数字......”;

从条码中,“ ”之后的数据为效期或系列号,其中,其格式固定为两种,“ 数字......”和“ $......”;

由此可知,主、从条码“ ”之后数据的第一位字符有所差异,因此,在读取数据时,可以根据“ ”之后的第一位字符对主、从条码进行区分。

区分流程:

第一步,设备扫码获取条码数据;

第二步,提取条码数据的第2位(即“ ”标识符后的第1位);

第三步,若该字符为字母,则判定该条码为主条码,然后根据主条码的编码规则进行信

息提取,否则,进入下一步;

第四步,若该字符为数字或$,则判定该条码为从条码,进一步地可根据从条码的编码

规则进行信息提取,否则,进入下一步;

第五步,若以上步骤均未成功,则报错,另行处理;

判定结束!

3. 主条码信息提取

前提:已判定该条码为HIBC的主条码!

条码编码的三个原则(常用条码编码规则说明及示例解析)(6)

如图所示是一个HIBC的主条码,其数据结构如下:

· “ ”,HIBC识别符,定长1位;

· “标签识别码”,定长4位,1位字母 3位数字;

· “产品代码”,不定长1-18位,字母数字组合;

· “包装代码”,定长1位,取值0-9;

· “校验符”,定长1位,大写字母、数字或特殊字符;

如上所述,HIBC主条码的数据结构比较固定,当设备读取到条码数据时,可直接对相应信息进行提取,流程如下(以上图为例):

第一步,当设备读取条码时,得到一个字符串“ E239DD5048721-”,并传入数据库中;

第二步,校验位验证,根据表9.4,计算出校验位的ID值,判断该ID值是否为38,

若ID值=38,则进入第三步,否则,进入第四步;

备注:由于ID值为38时,校验位为空格,扫码时空格有可能不显示。

第三步,调出字符串,并提取该字符串除第一位与空格的所有数据,假设新字符串位为M,则M为“E239DD5048721”,然后进入第五步;

第四步,调出字符串,并提取该字符串除第一位、最后一位的所有数据,假设新字符串为M,则M为“E239DD5048721”,然后进入第五步;

备注:第一位为HIBC码标识符,最后一位为条码校验符,均不考虑。

本示例属于ID值≠38的情况。

第五步,提取新字符串M的前4位,“E239”,则该字符串即为标签识别码(或厂商代码),假设此时最新的字符串为N,则N为“DD5048721”,然后进入下一步;

第六步,提取最新字符串N的最后一位,“1”,则该字符即为包装代码,然后进入下一步;

第七步,按照以上步骤,提取完标签识别代码、包装代码,余下的字符串“DD504872”,即为产品项目代码;

至此,条码信息提取结束,可按照提取数据的对应属性将字符串传入数据库中,或填充到相关单据中。

4. 从条码信息提取

前提:已判定该条码为HIBC的从条码!

条码编码的三个原则(常用条码编码规则说明及示例解析)(7)

如图所示是一个HIBC的从条码,其主要数据结构如下:

· “ ”,HIBC识别符,定长1位;

· “$$3”,不定长0-3位,用于指示数据结构的标识符;

· “产品效期”,位于效期标识符之后,不定长4-8位,其是否会出现、及出现的格

式均由其标识符决定;

· “LOT”,产品代码,不定长0-18位,字母数字组合;

· “系列号”,不定长,1-18位,字母数字组成;

· “校验符”,定长1位,大写字母、数字或特殊字符;

如上所述,HIBC从条码的数据结构并不固定,其数据结构完全由表9.3数据指示符决定,当设备读取到条码数据时,可根据指示符所对应的编码结构对相应信息进行提取,

流程如下(同样以上图为例):

第一步,当设备读取条码时,得到一个字符串“ $$3170930509104X509110”,并传入数据库;

第二步,校验位验证,根据表9.4,计算出校验位的ID值,判断该ID值是否为38,

若ID值=38,则进入第三步,否则,进入第四步;

备注:由于ID值为38时,校验位为空格,扫码时空格有可能不显示。

第三步,调出字符串,并提取该字符串除第一位与空格的所有数据,假设新字符串位为M,则M为“$$3170930509104X509110”,然后进入第五步;

第四步,调出字符串,并提取该字符串除第一位、最后一位的所有数据,假设新字符串为M,则M为“$$3170930509104X509110”,然后进入第五步;

备注:第一位为HIBC码标识符,最后一位为条码校验符,均不考虑。

本示例属于ID值=38的情况。

第五步,确定字符串数据结构,提取该字符串M的前3位,“$$3”,参照表9.3确定该字符串的数据结构如下,然后进入下一步;

“$$ 效期(YYMMDD) 系列号LOT”

备注:若前3位对照不成功,则可继续提取1-2、4-5、8-9位,与表9.3进行对照,直到找到对应的数据结构;

第六步,在数据结构确定的基础之上,剔除判别标识符“$$3”,假设新字符串为N,则N为“170930509104X509110”,然后进入下一步;

备注:HIBC标识符、校验符、判别标识符已剔除,数据结构已确定,则下一步就可以直接进行信息提取。

第七步,根据上一步确定的数据结构格式,提取字符串N的前6位(备注:根据数据结构格式,提取的位数不固定,一般为4-8位,参见表3效期格式),“170930”,则该字符串即为产品有效期,根据格式YYMMDD,将其翻译为:“产品有效期为2017年9月30日”,然后进入下一步;

第八步,根据数据结构格式,提取完效期后,余下的字符串“509104X509110”,即为产品的系列号;

至此,条码信息提取结束,可按照提取数据的对应属性将字符串传入数据库中,或填充到相关单据中。

注意:本节中仅描述了其中一种数据结构格式($$ 效期(YYMMDD) 系列号)的信息提取流程,其它数据结构格式的条码提取流程同上。

5.主、从合并条码信息提取

条码编码的三个原则(常用条码编码规则说明及示例解析)(8)

如上图所示,为主、从条码合并的情况,主、从条码以“/”分隔开,则该情况的条码信息提取流程如下:

第一步,当设备读取条码时,得到一个字符串如下,并传入数据库中;

“ E239DD5048721/$$3170930509104X509110U”

第二步,识别条码数据中的“/”符号,并以此将条码数据分割为两部分,其中,

前半段假设为字符串M,则M为“ E239DD5048721”;

后半段假设为字符串N,则N为“$$3170930509104X509110U”,

然后进入下一步;

第三步,根据主条码信息提取流程对字符串M“ E239DD5048721”中的信息进行提取,然后进入下一步;

第四步,根据从条码信息提取流程对字符串N“$$3170930509104X509110U”中的信息进行提取;

备注:注意此时从条码字符串中没有“ ”HIBC标识符。

最后,按照以上流程即可完成主、从合并条码的信息提取。

结语

今天先介绍这几种条码的解析方法,下面还会继续介绍一种物流行业常用的条码类型,GS1-128码,我们平时都见过的SSCC码,具体内容可关注少年负壮气(snfzq0315),或者扫描下方二维码识别。

条码编码的三个原则(常用条码编码规则说明及示例解析)(9)

,