EAN13位条码生成

合集下载

ean规则计算

ean规则计算

ean规则计算EAN(European Article Number)是一种商品条形码标准,用于在全球范围内唯一标识商品。

EAN主要有两个版本,即13位的EAN-13和8位的EAN-8。

下面是EAN-13的规则计算,EAN-8的计算规则类似。

EAN-13 条形码的 13 个数字由以下几个部分组成:前三位:国家代码,代表生产商品的国家或地区。

中间六位:制造商代码,由国家代码分配给制造商。

最后一位:校验码,通过前面的数字计算得出。

计算 EAN-13 校验码的步骤如下:将 EAN-13 的前 12 位数字分为两组,奇数位和偶数位。

对奇数位的数字求和,记为 sum1。

对偶数位的数字乘以 3,并求和,记为 sum2。

将 sum1 和 sum2 相加,得到总和 total。

找到使 total 向上取整到最近的 10 的倍数的数字,记为nearestTen。

计算检验码:nearestTen - total = 校验码。

例如,假设前 12 位数字为 012345678912:奇数位数字和为 0 + 2 + 4 + 6 + 8 + 1 = 21。

偶数位数字和为 1 + 3 + 5 + 7 + 9 + 2 = 27。

总和 total = 21 + 27 = 48。

nearestTen = 50。

校验码 = 50 - 48 = 2。

因此,完整的 EAN-13 条形码是 0123456789122。

请注意,以上是一个简单的计算示例,实际应用中可能还有其他考虑因素。

如果你使用的是特定的软件或工具,可以查阅其文档或使用内置的校验码计算功能。

ean规则计算

ean规则计算

ean规则计算【最新版】目录1.EAN 规则概述2.EAN 规则的计算方法3.EAN-13 条码的构成4.计算 EAN-13 条码的步骤5.应用 EAN 规则的优势正文一、EAN 规则概述EAN(European Article Number)即欧洲商品编号,是一种全球通用的商品编码体系。

EAN 规则是由国际物品编码协会(GS1)制定的一种编码标准,主要用于商品的唯一标识和自动识别。

EAN 编码包括 EAN-6、EAN-13 等类型,其中 EAN-13 是目前应用最广泛的一种编码方式。

二、EAN 规则的计算方法EAN 编码的计算方法是基于商品的特定信息,如商品名称、品牌、规格等,通过一定的算法生成唯一的编码。

EAN-13 编码由 13 位数字组成,其中最后一位为校验位。

计算 EAN-13 编码的过程主要包括以下几个步骤:1.准备商品信息:首先需要收集商品的相关信息,如商品名称、品牌、规格等。

2.编码前缀:根据商品的属性信息,确定相应的编码前缀,以便在编码中体现商品的类别和品牌等信息。

3.计算校验码:在 EAN-13 编码中,最后一位为校验位,用于检验编码的准确性。

计算校验码的方法是根据前 12 位数字的权重系数和相应的数值计算得出的。

4.编码数字:将商品信息和校验码组合成 13 位数字,形成 EAN-13 编码。

三、EAN-13 条码的构成EAN-13 条码是由 13 位数字和相应的条、空组成的。

其中,条表示编码中的数字,空表示编码中的间隔。

EAN-13 条码的构成如下:1.左侧空白区:用于保护条码免受外界污染和损伤。

2.左侧数据区:包含前 6 位数字,用于表示商品的类别、品牌等信息。

3.中间数据区:包含第 7 位到第 12 位数字,用于表示商品的特定信息,如商品名称、规格等。

4.右侧数据区:包含第 13 位数字,即校验码,用于检验编码的准确性。

5.右侧空白区:与左侧空白区相同,用于保护条码免受外界污染和损伤。

条形码生成软件如何生成带附加码的EAN13条码

条形码生成软件如何生成带附加码的EAN13条码

我们常见的EAN-13条码是由13位数字组成是不含附加码的,但是在一些报刊杂志上面会见到有2位(EAN-13+2,使用2位扩展码的情况用的比较多,所有的杂志上的条码都是这种结构,前13位表示杂志的名称,后面的扩展码也叫附加码表示一年内不同的期号);或者5位(EAN-13+5,5位扩展码在我国是没有具体定义,用于区分同类产品的不同批次)的附加码,这种附加码也是商品条码的一种特征。

今天就给大家分享一下使用条形码生成软件是如何生成带附加码的EAN-13条码的具体操作步骤。

在条形码生成软件中点击新建标签,并设置标签纸张尺寸,之后点击软件左侧工具栏中“绘制一维条码”图标,在标签空白处进行绘制,鼠标双击绘制的条形码,弹出“图形属性”,在条码类型中进行修改条码类型为“EAN-13+2”(软件默认的条形码类型是code128);
接着在条形码的图形属性“数据源”下点击修改,使用“手动输入”的方式添加EAN13+2条码的14位数据,前面12位是商品条码数据,后面2位数就是附加码。

条形码生成软件中条码文字数据还可以设置为无、上、下在进行扫码的时候
也不会影响识读数据。

到这里关于条形码生成软件制作带附加码的EAN-13条码步骤就分享结束了,EAN-13+5条形码的制作步骤和EAN-13+2的制作步骤是一样的,注意选择对应的条码类型即可,如批量生成条码的话建议使用数据库导入的方式去进行批量生成。

EAN13条码实验报告

EAN13条码实验报告

实验:EAN—13条形码一、实验目的复习并巩固C‎语言,熟练的运用C‎语言进行编程‎。

通过使用Vi‎s u al C++6.0程序编译软‎件编写源程序‎,能够实现EN‎A13条形码‎的生成。

二、实验要求1、利用C语言编‎程实现ENA‎13条形码2、代码实现的主‎要功能有:基本的输入输‎出功能、条形码的读取‎、条形码的生成‎三、实验原理1、EAN-13条形码的‎字符格式国际物品条形‎码有两个版本‎,一个是标准版‎,另一个是缩短‎版。

标准版即我们‎通常所说的E‎RIN- 13。

标准版规定十‎三位数字的条‎形码符号形式‎,如图1.所示。

开始三位数字‎(用FI-F3表示)代表商品制造‎商所属的国家‎或地区,也称为前缀号‎。

例如日本为4‎9#,澳大利亚为9‎3#,我国为690‎。

这里的“#”表示0-9的任意数字‎。

接下来的四位‎数字(M1-M4表示)为商品制造商‎的代码,是由该国编码‎管理局审查批‎准并登记注册‎的。

在接下来的五‎位数字(I1-I5表示)是由所在国编‎码管理局注册‎的生产企业所‎给的商品编码‎,由企业自己编‎制。

最后一位是校‎验位(C),用来检查条形‎码阅读器的结‎果是否正确。

图1 .EAN条码的‎格式2、EAN-13条形码的‎构成通用商品条码‎从左侧空白区‎开始,依次向右为左‎侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符、终止符,到右侧空白区‎为止。

左、右侧空白:没有任何印刷‎符号的空白区‎域,它通常是白的‎,位于条码符号‎的两侧。

用以提示阅读‎器准备扫描条‎形码符号,共有十八个模‎块组成(其中左侧空白‎不得少于9个‎模块宽度),一般左侧11‎个模块,右侧7个模块‎。

起始符:条形码符号的‎第一位字符是‎起始符,它特殊的条空‎结构用于识别‎条形码符号的‎开始,由3个模块组‎成。

左侧数据符:位于中间分隔‎符的左侧,表示一定信息‎的条码字符,由42个模块‎组成。

中间分隔符: 位于条码中间‎位置的若干条‎与空,用于区分左右‎侧数据,有5个模块构‎成。

一维条形码生成与识别技术[EAN-13]

一维条形码生成与识别技术[EAN-13]

⼀维条形码⽣成与识别技术[EAN-13]⼀维条形码⽣成与识别技术 [EAN-13]1、引⾔条形码(简称条码)技术是集条码理论、光电技术、计算机技术、通信技术、条码印制技术于⼀体的⼀种⾃动识别技术。

条形码是由宽度不同、反射率不同的条(⿊⾊)和空(⽩⾊),按照⼀定的编码规则编制⽽成,⽤以表达⼀组数字或字母符号信息的图形标识符。

条形码符号也可印成其它颜⾊,但两种颜⾊对光必须有不同的反射率,保证有⾜够的对⽐度。

条码技术具有速度快、准确率⾼、可靠性强、寿命长、成本低廉等特点,因⽽⼴泛应⽤于商品流通、⼯业⽣产、图书管理、仓储标证管理、信息服务等领域。

 本⽂针对EAN-13条码,介绍了其格式、编码规则等技术特点,并在Visual C++ 6.0环境下实现了⼀维条码的图像⽣成与识别,具有较好的应⽤价值。

2、EAN-13条形码简介⼀维条码主要有EAN 和 UPC 两种,其中EAN码是我国主要采取的编码标准。

EAN是欧洲物品条码(European Article Number Bar Code)的英⽂缩写,是以消费资料为使⽤对象的国际统⼀商品代码。

只要⽤条形码阅读器扫描该条码,便可以了解该商品的名称、型号、规格、⽣产⼚商、所属国家或地区等丰富信息。

EAN通⽤商品条码是模块组合型条码,模块是组成条码的最基本宽度单位,每个模块的宽度为0.33毫⽶。

在条码符号中,表⽰数字的每个条码字符均由两个条和两个空组成,它是多值符号码的⼀种,即在⼀个字符中有多种宽度的条和空参与编码。

条和空分别由1~4个同⼀宽度的深、浅颜⾊的模块组成,⼀个模块的条表⽰⼆进制的“1”,⼀个模块的空表⽰⼆进制的“0”,每个条码字符共有7个模块。

即⼀个条码字符条空宽度之和为单位元素的7倍,每个字符含条或空个数各为2,相邻元素如果相同,则从外观上合并为⼀个条或空,并规定每个字符在外观上包含的条和空的个数必须各为2个,所以EAN码是⼀种(7,2)码。

EAN条码字符包括0~9共10个数字字符,但对应的每个数字字符有三种编码形式,左侧数据符奇排列、左侧数据符偶排列以及右侧数据符偶排列。

EAN-13编码

EAN-13编码

EAN-13编码实现一、实验目标利用c语言或者java实现EAN-13条码的打印二、实验原理1.校验码:EAN-13编码,共13位数据,,其中最后一位为校验码,从左至右,奇数位上的数乘1加偶数为乘3后得数M,取M的个数位m,若m位0,则校验码为0。

若不为0,则校验码为10-m。

2.EAN-13的编码规则a)导入值(前置码):为EAN-13的最左边第一个数字,即国家代码的第一码,是不用条码符号表示的,其功能仅作为左资料码(左侧数据)的编码设定之用。

b)左护线:为辅助码,不代表任何资料,列印长度一般比数据长,逻辑形态为101,其中1代表细黑,0代表细白。

c)左资料码(左侧数据):即左护线和中线间的条码部分,共六个数字资料,其编码方式取决于导入值(前置码)的大小,规则如下表:d)中线:为辅助码,用于区分左侧数据和右侧数据。

中线长度一般比资料码长,逻辑形态为01010.e)右资料码(右侧数据):中线与右护线之间的部分。

包括五位数产品代码与一位检查码。

其编码方式为c雷编码规则,如表:f)右护线:为辅助码,,逻辑形态为101。

三、实现步骤1.输入EAN-13的前12位数据,先求出校验码。

2.根据前置码的数字确定左侧资料码(左侧数据)的编码方式,先将左侧数据的值用AB代替然后根据左侧资料码的逻辑值替换,得到长度为42的二进制左侧数据。

右侧数据可以用同样的方式取得长度为42的二进制右侧数据。

3.整合EAN-13编码需要打印的所有二进制数据,即左护线101+42位左侧二进制数据+中线01010+42位右侧二进制数据+右护线101.4.在java中利用Graphics类作图。

四、成果预览五、实现代码及注释package ean13;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage; import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;import javax.swing.JFrame;publicclass ean13 {static String BonaryDate=new String();static String all=new String();staticint width=300;staticint height=240;static BufferedImage bi=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);static Graphics2D g2=(Graphics2D) bi.getGraphics();publicstaticvoid main(String[] args) throws IOException { // TODO Auto-generated method stubString []LeftCode={"AAAAAA","AABABB","AABBAB","AABBBA","ABAABB","ABBAAB ","ABBBAA","ABABBA","ABBABA"};String []LeftCodeA={"0001101","0011001","0010011","0111101","0100011"," 0110001","0101111","0111011","0110111","0001011"};String []LeftCodeB={"0100111","0110011","0011011","0100001","0011101"," 0111001","0001010","0010001","0001001","0010111"};String []LeftCodeC={"1110010","1100110","1101100","1000010","1011100"," 1001110","1010000","1000100","1001000","1110100"};System.out.println("请输入12位数据:");InputStreamReader input= new InputStreamReader(System.in);String in = new BufferedReader(input).readLine();if(in.length()!=12){System.out.println("输入错误!");}else{String connectionleft;String connectionright;int checkcode;checkcode=CheckCode(in);in=in+checkcode;System.out.print("对应的13的EAN-13为:");System.out.print(in);all=in;connectionleft=eanLeft(in,LeftCode,LeftCodeA,LeftCodeB);//得到ean左侧42位二进制数据connectionright=eanRight(in,LeftCodeC);//得到ean右侧42位二进制数据BonaryDate="101"+connectionleft+"01010"+connectionright+"10 1";//要画出3+42+5+42+3共95位二进制数据}pp a=new pp();a.setBounds(300, 300, 300, 300);a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);a.setVisible(true);}/** 根据表2-3、表2-4取出左侧数据所对应的6^7个二进制数据,左侧数据本就有六位* 这里的算法是先根据前置码确定左侧数据的编码方式并将所对应的ABABAB编码存入s1这个字符串中* 然后将S1转化为字符数组a2,而左侧数据用left这个字符串保存,进入循环,此时按位取出左侧数据中的数字,记为d* 如果在a2[b]中取出的字符为A,则根据这个d值去LeftCodeA[]这个数组里取值,反之,则在LeftCodeB[]数组中取值* 然后保存到left这个字符串中,并且会根据下面的connectionnection+=left1积累下来最后就会得到左侧数据长达42位的二进制数**/privatestatic String eanLeft(String str,String[]LeftCode,String []LeftCodeA,String [] LeftCodeB){String begin=str.substring(0,1);String left=str.substring(1, 7);String s1=new String();int a=Integer.parseInt(begin);s1=LeftCode[a];//左侧数据符编码char [] a2=s1.toCharArray();//将数据编码字符串左侧转换为字符数组char [] right1=left.toCharArray();//将数据字符串右侧转化为字符数组String left1=new String();String connectionleft=new String();int d;String left2=new String();//A、B中取出的字符for(int b=0,c=0;b<6&&c<6;b++,c++){d=Integer.parseInt(left.substring(c, c+1));//读取左边数据if(a2[b]=='A') left1=LeftCodeA[d];else left1=LeftCodeB[d];connectionleft=connectionleft+left1;}return connectionleft;}/** 根据表2-3、表2-4取出右侧数据所对应的6^7个二进制数据* 这里的6是五位右侧数据和一位校验码*/privatestatic String eanRight(String str,String[] LeftCodeC){ String right =str.substring(7,13);int cr;String coderight;String connectionright=new String();for(int e=0;e<6;e++){cr=Integer.parseInt(right.substring(e,e+1));coderight=LeftCodeC[cr];connectionright=connectionright+coderight;}return connectionright;}/** 计算出校验码并返回,返回值还需要用到但是只需简单的字符串相加即可得到 * 所以*/privatestaticint CheckCode(String str){int odd=0;int even=0;for(int i=0;i<str.length();i++){if(i%2==0){odd+=Integer.parseInt(str.substring(i,i+1));//实际上编号为零是第奇数个}else{even+=Integer.parseInt(str.substring(i,i+1));}}int checkcode=(10 - (even * 3 + odd) % 10) % 10;return checkcode;}}class pp extends JFrame{publicvoid paint(Graphics g ){String a=ean13.BonaryDate;String b=ean13.all;int bin,l;int X=100,Y=100,HEIGH=50;for(int i=0;i<95;i++){bin=Integer.parseInt(a.substring(i,i+1),10);if(i>=0&&i<=2||i>=45&&i<=49||i>=92&&i<=94){l=10;}else{l=0;}if(bin==1){g.drawLine(X,Y,X,Y+HEIGH+l);// g.drawLine(X+1,Y, X+1,Y+HEIGHT+l);X=X+1;}elseX=X+1;}g.drawString(b, 93, 170);}}。

流水的EAN-13条码的生成

流水的EAN-13条码的生成

流水的EAN-13条码的生成
近日接到一个客户的技术求助,要批量生成如下图一样的条形码。

刚看到图片可能不好辨别是什么类型,但是仔细看一下就会发现这是一张变了形的EAN-13条码,将EAN-13条码截短了字符条,下面的数据也有原本的分散分部变为居中显示了。

在Label mx中批量制作上图格式的条码很简单。

1、打开Label mx,新在新建的标签内使用条码工具画出条码,选择EAN-13条码
类型,输入前12位数据,软件会自动生成最后一位校验码。

2、在条码的属性里勾选“截短字符条”选项,生成如下图片。

(黄色图形是客户提
供的原图)
3、条码下面的数据需要重新制作一下,原条码的“显示字符”选项的勾选取消,
使用文字工具重新输入即可。

这样就和客户提供的原图效果一样了。

4、因为客户提供的条码数据是流水的,但不是完整的,只有12位,需要使用Label
mx生成完整的数据,如果是不变形的条码那很简单,只需要设置好流水属性即可。

但是下面的数据格式要变化,这样就不能单纯地流水生成了。

这里需要使用到我们的批量编制工具,先把完整的数据编制出来存储在excel表格里,然后
通过连接数据库的方式生成。

如图生成一批流水条码数据:
然后点击导出,导出为excel格式保存下来。

5、通过连接数据库方式连接条码及条码下方的数据:
最终打印预览:。

13位条码编码规则

13位条码编码规则

13位条码编码规则EAN-13条码是由13个数字构成的,每个数字都代表一种含义。

这些数字按照特定的组合和顺序排列,以便能够正确识别和解码条码。

下面是EAN-13编码规则的组成和含义:1.国家代码(前3位):这三位数字代表制造商所在国家或地区的代码。

不同的地区有不同的代码,例如美国是以"000"开头,中国是以"690-695"开头。

国家代码是区分不同地区的重要依据。

2.制造商代码(4至7位):这四位数字代表具体的制造商或供应商。

每个制造商都分配有唯一的代码,以确保条码的唯一性。

制造商代码通常由国际编码协会(GS1)负责分配和管理。

3.产品代码(8至12位):这五位数字表示具体的产品或商品。

制造商可以根据自己的需要自由选择产品代码,以便对不同种类或型号的商品进行区分。

4.校验码(第13位):这一位数字用于校验整个条码的准确性。

它是通过对其他12位数字进行计算得出的,以确保条码没有错误。

校验码的计算方法是通过对奇数位和偶数位的数字分别求和后进行加权计算,并对结果取模10得到。

EAN-13编码规则的应用非常广泛,主要用于商品销售和供应链管理。

通过扫描或读取商品上的EAN-13条码,商家和供应链管理者可以追踪和管理库存,了解商品的批次和生产信息,准确处理订单和销售数据。

EAN-13条码的优势在于它具备了唯一性和可读性。

每个EAN-13条码对应一个唯一的产品,这样可以避免混淆和错误。

另外,EAN-13条码的设计结构使得它能够被常见的条码扫描设备和软件识别和解码,提高了工作效率。

总结来说,EAN-13编码规则是一种重要的条码规格,它由13个数字组成,每个数字代表不同的含义。

EAN-13条码广泛应用于商品销售和供应链管理,通过条码的识别和解码,可以实现库存追踪、订单处理和销售统计等功能。

EAN-13条码的唯一性和可读性保证了信息的准确性和可靠性,给商家和供应链管理者带来了很大的便利。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档