* Read bar codes of type Codabar
*
create_bar_code_model ([], [], BarCodeHandle)
dev_close_window ()
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (3)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
for I := 1 to 6 by 1
read_image (Image, 'barcode/codabar/codabar'+(I$'.2'))
get_image_size (Image, Width, Height)
dev_set_window_extents (0, 0, Width-1, Height-1)
dev_display (Image)
set_bar_code_param (BarCodeHandle, 'check_char', 'present')
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Codabar', DecodedDataStrings)
disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'false')
LastChar := strlen(DecodedDataStrings)-1
disp_message (WindowHandle, DecodedDataStrings{0}+sum(gen_tuple_const(LastChar-1,' '))+DecodedDataStrings{LastChar}, 'window', 12, 12, 'forest green', 'false')
if (I < 6)
stop ()
endif
endfor
clear_bar_code_model (BarCodeHandle)
阅读程序
1、2 *号用来注释语句
3、create_bar_code_model ([], [], BarCodeHandle)
原型create_bar_code_model( : : GenParamNames, GenParamValues : BarCodeHandle)
这个算子是为了读取所有支持的条形码而创建一个通用的模型,它的运行结果就是获取条形码模型的句柄
(
BarCodeHandle
),这个句柄的获取是为了用来对此条形码进一步操作的。
通常,条形码不需要其它任何额外的参数进行调整就可以被解码读出,因此,
GenParamNames
和
GenParamValues
默认情况下是为default值,在条形码图像质量很差或者是异常几何特征的情况下,就需要特殊的参数设置来解码并读出值,这些参数可以在创建条形码模型时进行调整,不这样的话,也可以用
set_bar_code_param
或者
set_bar_code_param_specific
进行调整。
4.dev_close_window()
原型
dev_close_window
( : : : )
这个算子就是关闭所有由
dev_open_window
打开的图形窗口,
5、dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
原型
dev_open_window
( : :
Row
,
Column
,
Width
,
Height
,
Background
:
WindowHandle
)
打开一个新的图新显示窗口,
Row
,
Column
,
这两个参数为窗口的坐标
Width
,
Height
,
这两个为窗口的大小
Background为窗口的背景default值为黑色
WindowHandle
窗口句柄。
6、dev_set_color ('green')
原型:
dev_set_color
( : :
ColorName
: )
定义用于显示区域XLD或者其他一些几何对象,这个设置一直到下一个
dev_set_color才会别改变。
7、dev_set_draw ('margin')
原型:
dev_set_draw
( : :
DrawMode
: )
定义区域的填充模式,
DrawMode 有
'fill', 'margin'前者是填充全部区域,后者是显示边缘,在显示边缘时可以用
dev_set_line_width
,
set_line_approx
and
set_line_style
.来设置边缘线的属性。
8、dev_set_line_width (3)
设置margin下区域边缘线的宽度,单位为像素
9、set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
原型:
set_display_font
( : :
WindowHandle
,
Size
,
Font
,
Bold
,
Slant
: )
用来设置当前窗口的字体属性,
WindowHandle
,为窗口句柄
Size
,是字体的大小
Font
,字体
Bold
,是否加粗
Slant
:是否斜体
一般后面会跟上
disp_message
,
disp_continue_message
,
set_tposition
,
write_string
等来使用设置的属性。
11、read_image (Image, 'barcode/codabar/codabar'+(I$'.2'))
原型:
read_image
( :
Image
:
FileName
: )
读取图像这个算子的关键之处在于如何读取单个,多个图片。图片搜索的目录为环境变量中
HALCONIMAGES 指定的路径,也可以自己设定。
12、get_image_size (Image, Width, Height)
原型:
get_image_size
(
Image
: : :
Width
,
Height
)
这个算子就是取得已读取图片的高宽大小。
13、dev_set_window_extents (0, 0, Width-1, Height-1)
原型:
dev_set_window_extents
( : :
Row
,
Column
,
Width
,
Height
: )
在读取了图片的大小后,根据大小通过这个算子可以实现调整用于显示图片的窗口大小,
Row
,
Column
,
是图片在窗口中起起点的位置
Width
,
Height
:为窗口的大小。
14、dev_display (Image)
原型:
dev_display
(
Object
: : : )
此时调整好后,通过此算子显示图片。
15、 set_bar_code_param (BarCodeHandle, 'check_char', 'present')
原型:
set_bar_code_param
( : :
BarCodeHandle
,
GenParamNames
,
GenParamValues
: )
在第一句时创建了条形码的模型,此时对他进行配置,
BarCodeHandle
,为已创建模型的句柄
GenParamNames
,
要配置的参数名称主要有:
'check_char', 'composite_code', 'element_height_min', 'element_size_max', 'element_size_min', 'max_diff_orient', 'meas_thresh', 'meas_thresh_abs', 'min_identical_scanlines', 'num_scanlines', 'orientation', 'orientation_tol', 'persistence', 'start_stop_tolerance', 'stop_after_result_num', 'timeout', 'train'
GenParamValues
:参数的值。如:
0, 0.1, 1, 1.5, 2, 8, 32, 45, 'present', 'absent', 'none', 'CC-A/B', 'no', 'auto', 'high', 'low',此时对
'check_char', 设为'present'那么就会检测字符。
16、find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Codabar', DecodedDataStrings)
原型:
find_bar_code
(
Image
:
SymbolRegions
:
BarCodeHandle
,
CodeType
:
DecodedDataStrings
)
这个算子就是用来查找图片中的条形码并且解码读出其中的值,
Image
:打开的图片
SymbolRegions
:
为已经找到的条形码的区域
BarCodeHandle
,
已创建的条形码模型的句柄
CodeType
:
要查找的条形码的类别支持的有:
'2/5 Industrial', '2/5 Interleaved', 'Codabar', 'Code 39', 'Code 93', 'Code 128', 'EAN-13', 'EAN-13 Add-On 2', 'EAN-13 Add-On 5', 'EAN-8', 'EAN-8 Add-On 2', 'EAN-8 Add-On 5', 'UPC-A', 'UPC-A Add-On 2', 'UPC-A Add-On 5', 'UPC-E', 'UPC-E Add-On 2', 'UPC-E Add-On 5', 'MSI', 'PharmaCode', 'RSS-14', 'RSS-14 Truncated', 'RSS-14 Stacked', 'RSS-14 Stacked Omnidir', 'RSS Limited', 'RSS Expanded', 'RSS Expanded Stacked', 'auto'
DecodedDataStrings 读到的条形码值。
17、disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'false')
原型:
disp_message
( : :
WindowHandle
,
String
,
CoordSystem
,
Row
,
Column
,
Color
,
Box
: )
在指定的窗口中显示字符串,
WindowHandle
,
窗口句柄
String
,要显示的字符
CoordSystem
,
当前的操作系统
Row
,
Column
,
窗口中显示的起始坐标
Color
,字体颜色
Box
:是否显示白色的底纹。
18、
LastChar := strlen(DecodedDataStrings)-1
得出DecodedDataStrings最后一个字符的位置
DecodedDataStrings{LastChar}可以访问此字符;
21、stop ()停止程序的执行
24、clear_bar_code_model (BarCodeHandle)
原型:
clear_bar_code_model
( : :
BarCodeHandle
: )
清除所建的条形码模型并清楚其占用的内存空间。