halcon语法

来源:互联网 发布:stc编程器大全 编辑:程序博客网 时间:2024/04/28 21:56
输入控制参数可以是表达式,但图形参数、输出参数均应为变量;
String类型变量由单引号 ’ 括起来;此外还有一些特殊字符;
Boolean型变量包括 true ( = 1 )、 false ( = 0 ) ;不为零的整数将被认为true;但绝大多数的Halcon函数接受字符串型的表达:’true’ ‘false’,而非逻辑型表达;
函数返回常量用于标识错误:
? H_MSG_TRUE no error 2
? H_MSG_FALSE logical false   3
? H_MSG_FAIL operator did not succeed 5
可以放在try…catch…endtry块中,也可以用dev_error_var() 与 dev_set_check() 来捕获;
控制语句结构:(与一般语言略有不同,它们也有输入输出变量)
? if  ...  endif / if ... else  ... endif / if ... elseif ... else ... endif 
? for  ...  endfor
? while  ...  endwhile
? repeat ... until
此外,也有关键字 break、continue、return、exit、stop 用来控制语句的执行;
赋值语句在Halcon中也被当作函数来使用:
标准赋值
? assign(Expression, ResultVariable) //编辑形式,永远都是输入在前,输出在后
? ResultVariable := Expression //代码形式
元组插入赋值
? insert(Tuple, NewValue, Index, Tuple) //编辑形式
? Tuple[Index] := NewValue //代码形式
控制变量元组操作
? [t,t] concatenation of tuples
? |t| number of elements
? t selection of an element
? t[i:j] selection of a part of a tuple
? subset(t1,t2) selection from t1 by indices in t2 
图形元组操作对应函数
? [] gen_empty_obj ()
? |t| count_obj (p, num)
? [t1,t2] concat_obj (p1, p2, q)
? t select_obj (p, q, i+1)
? t[i:j] copy_obj (p, q, i+1, j-i+1)
? subset(t1,t2) select_obj (p, q, t2+1)
元组的数学运算,如:A * B,令 m = |A|, n = |B|;
若m、n不相等,且都大于1,则错误;否则返回三种情况:
? m=n=1,返回一个值;
? m=n>1,返回一个包含m个数的元组,值为两元组各对于值的操作结果;
? m>1,n=1,返回一个包含m个数的元组,值为第二个数与第一元组各值的操作结果;
Halcon 的数学运算
算术运算
? a / a division
? a % a rest of the integer division
? a * a multiplication
? v + v addition and concatenation of strings
? a - a subtraction
? -a negation
位运算
? lsh(i,i) left shift
? rsh(i,i) right shift
? i band i bit-wise and
? i bor i bit-wise or
? i bxor i bit-wise xor
? bnot i bit-wise complement
字符串操作
? v$s conversion to string //字符串的格式化,有很丰富的参数
? v + v concatenation of strings and addition
? strchr(s,s) search character in string
? strstr(s,s) search substring
? strrchr(s,s) search character in string (reverse)
? strrstr(s,s) search substring (reverse)
? strlen(s) length of string
? s{i} selection of one character
? s{i:i} selection of substring
? split(s,s) splitting to substrings
比较操作符
? t < t less than
? t > t greater than
? t <= t   less or equal
? t >= t greater or equal
? t = t equal
? t # t not equal
逻辑操作符
? not l negation
? l and l logical ’and’
? l or l logical ’or’
? l xor l logical ’xor’
数学函数
? sin(a) sine of a
? cos(a) cosine of a
? tan(a) tangent of a
? asin(a) arc sine of a in the interval [-p/2, p/ 2], a ? [-1, 1]
? acos(a) arc cosine a in the interval [-p/2, p/2], a ? [-1, 1]
? atan(a) arc tangent a in the interval [-p/2, p/2], a ? [-1, 1]
? atan2(a,b) arc tangent a/b in the interval [-p, p]
? sinh(a) hyperbolic sine of a
? cosh(a) hyperbolic cosine of a
? tanh(a) hyperbolic tangent of a
? exp(a) exponential function
? log(a) natural logarithm, a> 0
? log10(a) decade logarithm, a> 0
? pow(a1,a2) power
? ldexp(a1,a2) a1 pow(2,a2)
其他操作(统计、随机数、符号函数等)
? min(t) minimum value of the tuple
? max(t) maximum value of the tuple
? min2(t1,t2) element-wise minimum of two tuples 
? max2(t1,t2) element-wise maximum of two tuples 
? find(t1,t2) indices of all occurrences of t1 within t2 
? rand(i) create random values from 0..1 (number specified by i) 
? sgn(a) element-wise sign of a tuple 
? sum(t) sum of all elements or string concatenation
? cumul(t) cumulative histogram of a tuple
? mean(a) mean value
? deviation(a) standard deviation
? sqrt(a) square root of a
? deg(a) convert radians to degrees
? rad(a) convert degrees to radians
? real(a) convert integer to real
? int(a) convert a real to integer
? round(a) convert real to integer  四舍五入
? number(v) convert string to a number
? is_number(v) test if value is a number
? abs(a) absolute value of a (integer or real)
? fabs(a) absolute value of a (always real)
? ceil(a) smallest integer value not smaller than a
? floor(a) largest integer value not greater than a
? fmod(a1,a2) fractional part of a1/a2, with the same sign as a1
? sort(t) sorting in increasing order
? uniq(t) eliminate duplicates of neighboring values (typically used in combination    with sort)
? sort_index(t) return index instead of values
? median(t) Median value of a tuple (numbers)
? select_rank(t,v) Select the element (number) with the given rank
? inverse(t) reverse the order of the values
? subset(t1,t2) selection from t1 by indices in t2
? remove(t1,t2) Remove of values with the given indices
? environment(s) value of an environment variable
? ord(a) ASCII number of a character
? chr(a) convert an ASCII number to a character
? ords(s) ASCII number of a tuple of strings
? chrt(i) convert a tuple of integers into a string
0 0
原创粉丝点击