一 EAN码介绍
1 EAN码定义:
EAN码是国际物品编码协会制定的一种商品用条码,通用于全世界。EAN码符号有标准版(EAN-13)和缩短版(EAN-8)两种。标准版表示13位数字,又称为EAN13码,缩短版表示8位数字,又称EAN8。两种条码的最后一位为校验位,由前面的12位或7位数字计算得出
2 EAN码结构:
EAN13商品条码由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符、终止符、右侧空白区及供识别字符组成。 其各个组成部分如下:
·左侧空白区
位于条码符号最左侧的与空的反射率相同的区域,其最小宽度为11个模块宽。
·起始符
位于条码符号左侧空白区的右侧,表示信息开始的特殊符号,由3个模块组成。
·左侧数据符
位于起始符号右侧,中间分隔符左侧的一组条码字符。表示6位数字信息,由42个模块组成。
·中间分隔符
位于左侧数据符的右侧,是平分条码字符的特殊符号,由5个模块组成。
右侧数据符
位于中间分隔符右侧,校验符左侧的一组条码字符。表示5位数字信息的一组条码字符,由35个模块组成。
·校验符
位于右侧数据符的右侧,表示校验码的条码字符,由7个模块组成。
·终止符
位于条码符号校验符的右侧,表示信息结束的特殊符号,由3个模块组成。
·右侧空白区
位于条码符号最右侧的与空的反射率相同的区域,其最小宽度为7个模块宽。为保护右侧空白区的宽度,可在条码符号右下角加“>”符号。
·供人识别字符
位于条码符号的下方,与条码相对应的13位数字。供人识别字符优先选用GB/T 12508中规定的OCR-B字符集;字符顶部和条码字符底部的最小距离为0.5个模块宽。EAN-13商品条码供人识别字符中的前置码印制在条码符号起始符的左侧。
EAN码的编码规则是什么?
起始符和终止符3个模块的编码均为101,中间分隔符5个模块的编码是01010。左侧数据符和右侧数据符的编码方式不同。在左侧数据符中,有A和B两种编码方式,右侧数据符中有C编码方式。其中A和C之间是反码关系,B和C之间是倒序关系。在左侧数据符中的编码方式选A还是B,由前置码字符决定
3 EAN码特性:
EAN码具有以下特性:
1、只能储存数字。
2、可双向扫描处理,即条码可由左至右或由右至左扫描。
3、必须有一检查码,以防读取资料的错误情形发生,位於EAN码中的最右边处。
4、具有左护线、中线及右护线,以分隔条码上的不同部分与撷取适当的安全空间来处理。
5、条码长度一定,较欠缺弹性,但经由适当的管道,可使其通用於世界各国。
6、依结构的不同,可区分为:
EAN-13码:由13个数字组成,为EAN的标准编码型式。
EAN- 8码:由8个数字组成,属EAN的简易编码型式。
*创建一个条码读取模版
create_bar_code_model ([], [], BarCodeHandle)
*关闭已经打开的窗口
dev_close_window ()
*打开一个新窗口
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
*设置字体的信息:字体大小:16,字体类型:mono,粗体,非斜体
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*设置输出对象的显示颜色
dev_set_color ('green')
*设置区域填充方式
dev_set_draw ('margin')
*设置输出对象的线宽度
dev_set_line_width (3)
*成功解码到一个条形码后将解码停止
set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 1)
for I := 1 to 15 by 1
*读取一张图像
read_image (Image, 'barcode/ean13/ean13' + (I$'.2'))
*重绘窗口大小,让图像自适应到窗口
dev_resize_window_fit_image (Image, 0, 0, -1, -1)
if (I == 14)
*第14张图像包含可能导致错误解码的缺陷对象,因此,“mean_thresh”参数被调整。
*用这个阈值找到边缘位置的扫描线来确定条形码的条形空间序列.
set_bar_code_param (BarCodeHandle, 'meas_thresh', 0.2)
endif
*在图像上读取出条码数据和条码区域
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'EAN-13', DecodedDataStrings)
if (I == 14)
*执行完第14张图像,恢复meas_thresh值为0.05
set_bar_code_param (BarCodeHandle, 'meas_thresh', 0.05)
endif
*获取条码区域的面积和中心坐标
area_center (SymbolRegions, Area, Row, Column)
*显示图像
dev_display (Image)
*显示条码区域
dev_display (SymbolRegions)
*在窗口上显示条码数据信息
disp_message (WindowHandle, DecodedDataStrings, 'image', Row - 30, Column - 90, 'black', 'true')
*stop ()
endfor
*删除条码模版并清除分配的内存
clear_bar_code_model (BarCodeHandle)