目录:
1. halcon 基本语法
2. Tuple 数组
3. 字符数组格式化
1. halcon 基本语法
(1). 等号::=
(2). 不等号: #
(3). 代码注释符: *
(4). 字符串(单引号)赋值: str := ‘halcon’
(5). 等于比较符: if( X = 10 );c/c++ : if( X == 10 )
(6). 与: if( A > 1 and A < 30 )
(7). 或: if( A > 1 or A < 30 )
(8). 求反:if( not(A = 10) )
(9) For 循环:
for x := 0 to numbers by 1
endfor
(10) While 循环:
while( x == 1)
endwhile
(11) 异常获取:
try
catch(Exception)
endtry
(12) Switch 多分支:
switch(Index) case 1: break case 2: break case 3: break default: break endswitch
2. Tuple 数组
* 将一个Tuple数组赋值给变量
Tuple1 := [1, 0, 3, 4, 5, 6, 7, 8, 9]
* 给 Tuple数组元素赋值;上述中 Tuple1[1] := 0; 进行如下操作 Tuple1 := [1, 2, 3, 4, 5, 6, 7, 8, 9]
Tuple1[1] := 2
* 批量改变数组元素的值;将数组中的第1,3,5个元素替换为'abc'; [1, 'abc', 3, 'abc', 5, 'abc', 7, 8, 9]
Tuple1[1,3,5] := 'abc'
* 向 Tuple 数组插入数值
originalTuple_Insert :=[0,1,2,3,4,5]
tuple_insert(originalTuple_Insert, 3, 'x', InsertSignalValue)
* 批量给 Tuple 数组赋值,其值为 2 到 4 的连续数值; [2, 3, 4]
Tuple3 := [2 : 4]
* 批量给 Tuple 数组赋值,其值为 5 到 10 的连续数值,步长为 1; [5, 6, 7, 8, 9, 10]
Tuple4 := [5 : 1 : 10]
* 批量给 Tuple 数组赋值,其值为 -30 到 30 的连续数值,步长为 10 ;[-30, -20, -10, 0, 10, 20, 30]
Tuple4 := [-30 : 10 : 30]
* 对两个 Tuple 数组进行合并操作,新数组消除掉了需要合并数组中重复的部分
TupleInt1 := [3,1,2,9,1]
TupleInt2 := [10,2,4,3,2]
tuple_union(TupleInt1, TupleInt2, Union)
* 对两个 Tuple 数组进行交集操作;即两个数组中相同的元素被保留下来,不同的元素被丢弃
TupleInt3 := [3,1,2,9,1]
TupleInt4 := [10,2,4,3,2]
tuple_intersection(TupleInt3, TupleInt4, Intersection)
*对 Tuple 数组元素进行替换;
*将数组中第0个元素和第1个元素分别用字符串x,y替换
originalTuple := [0,1,2,3,4,5]
tuple_replace(originalTuple, [0, 1], ['x', 'y'], Replaced)
我们可以从 变量窗口 的 控制变量 中查看计算结果,如图 1.1 所示
图1.1 上述代码的运行结果
3. 字符数组格式化
* 8 进制, 0 为前缀
i1 := 123$'#o'
* 16 进制, 0x 为前缀,7b 为赋值
i2 := 123$'#x'
* 16 进制, 0x 为前缀, 7b 为赋值,其中,7b 与 7B 是一样的
i3 := 123$'#X'
* double 型,默认保留小数点后六位
i4 := 123$'#f'
* 使数字始终保持六位,不足补零
i5 := 123$'#g'
* 使数字始终保持六位,不足补零
i6 := 123$'#G'
* 转换成科学计数,即指数形式
i7 := 123$'#e'
* 转换成科学计数,即指数形式
i8 := 123$'#E'
**************** 整数 ***************
* 小于六位时,文本右对齐,大于不影响
* 6 代表有 6 个占位符,不足用空格代替
d1 := 123$'6'
* 小于六位时,文本左对齐,大于不影响
d2 := 123$'-6'
* 小于六位时,在左边补零,大于不影响
d3 := 123$'.6'
* 小于十位时,文本右对齐,小于五位则在左边补零,大于不影响
d4 := 1345$'10.5'
**************** 文本 ***************
* 文本右对齐; 10 代表有 10 个占位符,除了Hugo四个外,还有六个占位符用空格代替
s1 := 'Hugo'$'10'
* 文本左对齐
s2 := 'Hugo'$'-10'
字符数组格式化结果如图 1.2 所示
图1.2 字符数组格式化结果