1. halcon基础语言语法

目录

1. 注释

2. 数据类型

1. 图像变量

2. 控制变量

3. 变量的使用

  1. 在halcon

2. 在c#

4. 运算符

 1. 算数运算符

2. 关系运算符

3. 逻辑运算符

5. 选择结构

6. 快捷键

7. 循环结构

8. 数组(集合)

9. 数组集合运算

10. 字符串算子

11. 文件

12.冒泡排序


1. 注释

  1. 符号*

  2. F4 批量注释 F3取消注释

  3. if(false)

2. 数据类型

1. 图像变量

  1. 图像 image

  2. 区域 region

  3. 轮廓 xld

2. 控制变量

 1. 基础数据类型

 2. 字符串 ''

3. 变量的使用

  1. 在halcon

 1. 不需要定义

  2. 没有数据类型, 自动判断该数据的类型

 3. 不需要分号结束

  4. 赋值 :=

    data1 := 10
    data2 := 3.14
    data3 := 'hello world'
    data4 := false
    

2. 在c#

 1. 区别

4. 运算符

 1. 算数运算符

     + - * / %

    data1 := 10
    data2 := 20

    data3 := data1 + data2
    data4 := data1 - data2
    data5 := data1 * data2
    data6 := data1 / data2
    data7 := data1 % data2

2. 关系运算符

  1.> >= < <= = !=(#)

 2. 逻辑真(true/1)假(false/0)

    data1 := 10
    data2 := 10
    
    data3 := data1 > data2//data1大于data2是假,所以data3等于0
    data4 := data1 >= data2
    data5 := data1 < data2
    data6 := data1 <= data2
    data7 := data1 = data2//data1等于data2是真,所以data7等于1
    data8 := data1 != data2
    data9 := data1 # data2

3. 逻辑运算符

 1. and 

 2. or

3. not

    data1 := 1
    data2 := 0
    
    data3 := data1 and data2//逻辑与(两个为真才为真)
    data4 := data1 or data2 //逻辑或(有一个真就是真)
    data5 := not data1//逻辑非(真转假)

5. 选择结构

1. if

 2. if else

3. if elseif elseif

 4. switch case 

   data1 := 1
    data2 := 0
    
    if (data1)
        
    endif
    
    
    if (data1)
    
    else
        
    endif
    
    if (data1)
        
    elseif(data2)
        
    endif
    
    
    switch (data1)
        
        case 1:
            break
        case 2:
            break
        case 3:
            break
        default:
            break
        
    endswitch

6. 快捷键

tab tab enter

7. 循环结构

1. while

2. for

  data1 := 0

    while (data1 < 100)
       data1 := data1 + 10 
    endwhile
    
    
    data2 := 1
    rst := 0
    for Index := 1 to 5 by 1//to是小于等于,前面是i=1,从1 开始,后面是1++
        rst := data2 * Index
    endfor
    
    
    for Index1 := 1 to 5 by 1
        
        if (Index1 = 2)
            continue//结束本次循环
             break//结束本次循环
        endif
        
    endfor
    
    
    for Index2 := 1 to 5 by 1
        
        for Index3 := 1 to 5 by 1
        
            for Index4 := 1 to 5 by 1
                
            endfor
        
        endfor
        
    endfor

8. 数组(集合)

 *数组
    arry := []//定义一个数组
    arry1 := [1,2,3]//数组有三个数据
    arry2 := ['hello','hi','ok']
    
    data1 := arry1[0]//下标法,取第0个数据,data1=1
    *集合
    arry1 := [arry1,10]//在arry1的后面加10
    arry1 := [20,arry1]//在arry1的前面面加20
    
    rows := []
    cols := []
    
    for Index := 1 to 5 by 1
    
     a :=  arry1[Index-1]  //五个数据,下标应该是四
    
        rows := [rows, Index]//往rows里面循环添加数据
        cols := [cols, Index*2]//往cols里面循环添加数据
        
    endfor

9. 数组集合运算

1. tuple_

    Arry := [1,3,5,7,9,2,4,6,8,10,8,4,2,1]//数组里面存的

    tuple_min (Arry, Min)//从Arry里面查找并且输出最小值 
    tuple_max (Arry, Max)//从Arry里面查找并且输出最大值
    
    
    tuple_mean (Arry, Mean)//从Arry里面计算并且输出平均值
    
    tuple_median (Arry, Median)//从Arry里面查找并且输出中间值
    
    tuple_sort (Arry, Sorted)//从Arry里面查找并且输出排序(从小到大)
    
    tuple_uniq (Sorted, Uniq)//从Arry里面查找并且删除掉重复的
    
  
    
    *查询
    tuple_find (Arry, 5, Indices)//从Arry里面查找5,如果找到,Indices会显示5的下标,如果没有会显示-1
    
    tuple_find (Arry, 1, Indices1)//如果查出两个同样的数字,会显示两个下标
    
    tuple_find_first (Arry, 1, Index)//查找第一个1的下标(从前往后找)
    
    
    tuple_find_last (Arry, 1, Index1)//查找第一个1的下标(从后往前找)
    
    tuple_length (Arry, Length)//查找数组有多少个下标 (第一种方法)  
    
    for Index2 := 1 to Length by 1
        
    endfor
    
    
    Len := |Arry|//查找数组有多少个下标,|Arry|是数组的长度 (第二种方法)  
    for Index3 := 1 to |Arry| by 1
        
    endfor
    
    *插入(增加)
    tuple_insert (Arry, 0, 100, Extended)//在Arry的第【0】个位置插入100
    
    tuple_insert (Arry, 1, [100,200], Extended1)//在Arry的第【1】个位置插入100,200
    
    
    *删除
    tuple_remove (Arry, 0, Reduced)//删除Arry的第【0】个数组
    
    *修改
    
    tuple_replace (Arry, 0, 30, Replaced)//在Arry把下标【0】删除,并且替换成30

10. 字符串算子

1. tuple_str_

 data1 := 1.2365678

    tuple_string (data1, '.2f', String)//把data1保留“.2f”计算保留小数点的后两位
    
    data2 := 'hello world'
    tuple_strlen (data2, Length)
    tuple_substr (data2, 6, 10, Substring)
    tuple_split (data2, ' ', Substrings)

11. 文件操作

打开文件,写入文本 
open_file ('lw.txt', 'append', FileHandle)

    fwrite_string (FileHandle, 'hallo1' + '\n')
    fwrite_string (FileHandle, '你好1' + '\n')
    
    close_file (FileHandle)
 读取文件中内容
 open_file ('lw.txt', 'input', FileHandle1)
    Lines := []
    IsEOF := 0
    while (IsEOF != 1)
        fread_string (FileHandle1, OutString, IsEOF)
        if (IsEOF)
            break
        endif
        Lines := [Lines, OutString]
    endwhile
    
    close_file (FileHandle1)

12.冒泡排序

Arry := [1,3,5,7,9,2,4,6,8,10]

MaxData := Arry[0]

for Index := 1 to |Arry| by 1
    
    if (Arry[Index-1] > MaxData)
        MaxData := Arry[Index-1]
    endif
    
endfor



for Index1 := 1 to |Arry|-1 by 1
    
    for Index2 := 1 to |Arry|-1- Index1 by 1
        
        if (Arry[Index2-1] > Arry[Index2 + 1-1])
            Temp := Arry[Index2-1]
            Arry[Index2-1] := Arry[Index2 + 1 - 1]
            Arry[Index2 + 1 - 1] := Temp
        endif
        
    endfor
    
endfor

你可能感兴趣的:(HALCON系统化学习,前端,javascript,开发语言)