Halcon 第一章『Halcon语言』◆第1节:控制类型和常量

        一、Halcon语句按照以下规则进行操作

        operator(图标输入 : 图标输出 : 控制输入 : 控制输出)

        首先是图形的输入,紧接着是图形的输出,其次是控制数据参数的输入,控制数据的输出,这四个参数有可能都是空的。比如:

read_image (Image, 'printer_chip/printer_chip_01')

        File / Images

        读取不同文件格式的图像

read_image( : Image : FileName : )

        Image:输出参数,以此变量名输出读取的图像。

        FileName:输入参数,要读取的图像的名称。前面也可以加绝对位置或者相对位置。

        二、Control Types and Constants控制类型和常量

        所有非图像数据在HDevelop中都作为控制数据,如数字或字符,它们主要用于对图像的控制、处理,它们包含算术或者逻辑的运算操作等,其中包含整型数、实数、字符串、布尔变量。

        1、整数类型和实数类型

        整数类型(integer)=C语言中的长整形(long),可以用十进制、八进制、十六进制形式输入,十六进制需要在前缀加0x,八进制输入时加前缀加0。4个或8个字节。

        实数类型(real)=C语言中的双精度型(double),8个字节。

a:=2022
b:=-1234
c:=0xfeb15
d:=06677
e:=3.1415
f:=0.15
g:=.15
h:=-1.56e-12
i:=3E5

         2、字符串类型(string)

        在Halcon中没有单个字符型数据,它有字符串类型,字符串可以是单个字符,也可以是多个字符,它是由两个单引号的字符序列组成的。字符串的长度限制在1024个字符以为。一些不能显示的特殊字符,如换行、回车符、制表符等,用转义字符表示,表示的方法与C语言中的方式相同。

dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
string1:=['第一行:123\nnc第二行:123']

disp_message (WindowHandle, string1, 'window', 50, 50, 'red', 'true')
A:='apple'
B:='D:\\'

        3、布尔变量,Boolean类型

        质保函真(true)和假(false)这两个常量,其中true对应值为1,false对应值为0。

        比如Val:=true 这个表达式中Val的有效值被设定为1,每个非0以外的整形值都表达为true。

        4、常量

        在函数使用过程中,系统提供一些返回值,表示该函数使用过程中的一些状态,它们能够通过dev_error_vardev_set_check一起使用,以检查或设定返回的状态,错误信息能够反馈异常的具体信息,系统包含了近400个错误信息。

        Tuple在系统中表示为元组(数组),一个长度为1的数组被认为声明数组,数组可以支持各种数据类型。

        在表1.2中可以找到所有返回消息。此外,控制数据的类型也有常量(见表8.3)。可以将这些结果与类型操作的结果进行比较,以对不同类型的控制数据做出反应(参见第814页的“类型操作”一节)。 

        HALCON Operator Reference / Develop

        定义一个错误变量,并设置是否打开该错误状态

dev_error_var( : : ErrorVar, Mode : )

        ErrorVar:输入参数,包含错误变量的状态名,也可以自定义一个名字。

        Mode:输入参数,设置错误变量的开=1,或者关=0,如果Mode关闭,该变量始终为0,但变量能显示错误号。

        HALCON Operator Reference / Develop

        指定错误检查,检测错误状态是否为2(即H_MSG_TRUE)

dev_set_check( : : Mode : )

        Mode:输入参数,如果该值为'~give_error',这次检测会被忽略,程序进入后面的操作,如果该值为'give_error'(默认值),若是出现错误将提示错误信息,程序不再执行,该函数一般与dev_error_var()函数一起执行,在程序中插入它便于程序检查错误。

        注意:在本书中,元组和数组是一样的,数组的类型统一为具有相同类型的一系列数据的集合。与在VS中不同,VS中的元组和数组是有所区别的。

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_error_var (Error, 1)
dev_set_check ('~give_error')
FileName := 'wrong_name'
read_image (Image, FileName)
ReadError := Error
if (ReadError != H_MSG_TRUE)
  write_string (WindowHandle, 'wrong file name: '+FileName)
endif
* 现在程序将以一个异常结束
dev_set_check ('give_error')
read_image (Image, FileName)

        三、Variables变量

        变量的命名和其他语言的命名是一样的,通常用数字和下划线组合(必须是字符和下划线在最前面),他们的最大长度不能超过256个字符。

        一个变量的类型(图形或者控制变量)在第一次使用中根据函数的参数对应的位置来决定,变量的类型在输入参数期间确定,每当一个标识符出现,对应的变量也随之产生。

        图形和控制变量必须不能有相同的名字,图像和控制变量的初始值是不确定的,直到实例化操作才能确定下来。读取一个没有被实例化的变量会导致运行错误。

        动态变量第一次粗略的赋予变量值(图形或者控制参数),然而实例类型的数据中分配到内存中是不明确的,直到变量数值最终被分配,因此有可能的是新的数据和老的数据并不一定是同一类型。

        →变量范围(局部和全局)

        HDevelop支持局部和全局变量,所有变量都是默认为局部变量,也就是说它们只能在对应的程序块中有效,因此,局部变量在不同程序中可以有相同的名字,区别在于,全局变量在整个程序中都能被调用,但是它们必须被明确为全局变量。

        HALCON Operator Reference / Control

        声明一个全局变量

global( : : Declaration : )

        Declaration:输入参数,全局变量声明:可选关键字“def”、类型和变量名。建议值【 'object', 'tuple', 'def object', 'def tuple', 'object vector(1)', 'tuple vector(1)', 'def object vector(1)', 'def tuple vector(1)'】。

read_image(Image1, 'printer_chip/printer_chip_01')
global tuple File

global object Image
Image:= Image1
File:=[1,2,3]
a:=[1,2,3]

        程序必须明确宣布调用该全局变量,现有的程序无法破坏声明的全局变量;当然,全局变量在HDevelop系统中很独特,完全应用于外部程序、主程序以及所有本地程序。

全局变量在变量窗口中,前面都会有一个类似地球的标记

猜你喜欢

转载自blog.csdn.net/qq_45336030/article/details/125709574