GS1-128条形码符号;GS1-128条形码的符号结构与代码128符号相同;
这种条形码类型仅强制执行数据格式化的附加规则:数据组织在所谓的GS1应用程序元素中*符合GS1通用规范(www.GS1.org)的字符串;在该程序中,GS1-128条形码被解码为128码和GS1-128码,并对解码结果进行比较。虽然符号仍然可以解码为代码128,但生成的字符串缺少数据的语义结构。相比之下,将符号解码为GS1-128将产生有效的GS1数据,并有效地分离应用元素strin
总代码:
* Constants used in the program
Scale := 1.0
ScaleInv := 1. / Scale
NumImages := 3
StatusHeight := 300
Colors := ['black','magenta','black','black','forest green',gen_tuple_const(10,'black')]
*
* Initialization
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 360, 256, 'white', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
*
* Create bar code reader
create_bar_code_model ([], [], BarCodeHandle)
*
* Read bar codes
for I := 1 to NumImages by 1
read_image (Image, 'barcode/gs1_128/gs1_128_generated_' + I$'.2d')
*
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'GS1-128', GS1128DecodedString)
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 128', Code128DecodedString)
*
* Visualize results
Message := 'Code 128 Data:'
Message := [Message,' ' + Code128DecodedString]
Message := [Message,' ']
Message := [Message,'GS1-128 Data*:']
Message := [Message,' ' + GS1128DecodedString]
Message := [Message,' ']
Message := [Message,' ']
Message := [Message,'*) The data is split in several GS1 element strings, ']
Message := [Message,' each containing an application identifier (AI, a']
Message := [Message,' number enclosed in brackets) and the element data']
set_system ('flush_graphic', 'false')
get_image_size (Image, Width, Height)
dev_clear_window ()
dev_set_window_extents (-1, -1, Scale * Width, Scale * Height + StatusHeight)
dev_set_part (-12, 0, Height + ScaleInv * StatusHeight - 13, Width - 1)
dev_display (Image)
dev_display (SymbolRegions)
disp_message (WindowHandle, 'Code 128 vs. GS1-128 data interpretation:', 'window', 12, 12, 'black', 'false')
*设置HALCON系统参数,刷新参数
set_system ('flush_graphic', 'true')
disp_message (WindowHandle, Message, 'window', 12 + Scale * Height, 12, Colors, 'false')
if (I < NumImages)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor
*
* Release memory allocated by the bar code reader
clear_bar_code_model (BarCodeHandle)
逐段分析:
*程序中使用的常量
Scale := 1.0
ScaleInv := 1. / Scale
NumImages := 3
StatusHeight := 300
Colors := ['black','magenta','black','black','forest green',gen_tuple_const(10,'black')]
*初始化
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 360, 256, 'white', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
*创建条形码阅读器
create_bar_code_model ([], [], BarCodeHandle)
*读条形码
for I := 1 to NumImages by 1
read_image (Image, 'barcode/gs1_128/gs1_128_generated_' + I$'.2d')
*寻找条形码,设置参数'GS1-128''Code 128'
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'GS1-128', GS1128DecodedString)
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 128', Code128DecodedString)
*可视化结果
Message := 'Code 128 Data:'
Message := [Message,' ' + Code128DecodedString]
Message := [Message,' ']
Message := [Message,'GS1-128 Data*:']
Message := [Message,' ' + GS1128DecodedString]
Message := [Message,' ']
Message := [Message,' ']
Message := [Message,'*) The data is split in several GS1 element strings, ']
Message := [Message,' each containing an application identifier (AI, a']
Message := [Message,' number enclosed in brackets) and the element data']
*设置HALCON系统参数
set_system ('flush_graphic', 'false')
get_image_size (Image, Width, Height)
*清除窗口
dev_clear_window ()
dev_set_window_extents (-1, -1, Scale * Width, Scale * Height + StatusHeight)
dev_set_part (-12, 0, Height + ScaleInv * StatusHeight - 13, Width - 1)
dev_display (Image)
dev_display (SymbolRegions)
*显示信息
disp_message (WindowHandle, 'Code 128 vs. GS1-128 data interpretation:', 'window', 12, 12, 'black', 'false')
*设置HALCON系统参数,刷新参数
set_system ('flush_graphic', 'true')
*显示信息
disp_message (WindowHandle, Message, 'window', 12 + Scale * Height, 12, Colors, 'false')
if (I < NumImages)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor
*
* Release memory allocated by the bar code reader
*释放条形码阅读器分配的内存
clear_bar_code_model (BarCodeHandle)