Halcon读取外部参数(读取CSV文件内保存的数据)

Halcon读取外部参数(读取CSV文件内保存的数据)

  • 利用Halcon开发检测项目,避免不了需要读取一些保存在硬盘中的设置参数,例如系统配置、检测阈值等参数。在Halcon中以tuple格式保存数值或数组等,虽然可以将tuple写入硬盘进行数据保存,但是在修改的时候有诸多不便。最近研究了一下,总结了一个简单的实现方法,能够读取CSV文件保存的数据。
    CSV是逗号分隔值(Comma-Separated Value)的英文缩写,文件以纯文本形式存储表格数据,包括数字和文本。记录之间有换行符进行分隔。每条记录的字段间通常是由逗号或制表符进行分隔,csv文件可以用office办公软件打开,因此修改和查看都非常方便,更重要的是halcon支持读取csv文件内容,所以我们利用csv文件来保存参数,并对它保存的参数进行读取。
    首先创建一个csv文件,内容如下:
    注:创建csv文件可以通过excel文档另存为csv文件实现,保存时如果提示“是否使用此格式”的提示,选择是。

Halcon读取外部参数(读取CSV文件内保存的数据)_第1张图片
先贴halcon代码

*打开csv文件,因为是读取保存内容,所以算子第二个参数选择“input”,如果选择其他项可能无法读出。FileHandle是打开文件的句柄
open_file ('D:/parameters.csv', 'input', FileHandle)
*初始化变量IsEOF为0,该变量用来判断是否读取到内容。
IsEOF:=0
while (IsEOF==0)
    *读取打开文件中的一行内容,如果返回值IsEOF是0,则代表已经读取到。如果没有读取到则返回1
    fread_line (FileHandle, outLine, IsEOF)
    if (IsEOF==0)
        *对读取到的内容进行分割,因为 fread_line算子读取出的是一个string形式的变量,需要对其进行分割
        *从csv中读取出的内容是以逗号“,”或者换行符“\n”结尾的,tuple_split 算子中第二个参数是选择分隔符号的,所以输入“,\n”。
        tuple_split (outLine, ', \n ', outLineSplit)
        if(outLineSplit[0]='参数1')
        *如果第一个字段是“参数1”,则将其对应的参数读取到变量value中
            value:=outLineSplit[1]
            break
        endif
    endif
endwhile
*关闭已经打开的csv文件
close_file(FileHandle)

下面的截图是上述代码是在HDevelop中执行的结果:
Halcon读取外部参数(读取CSV文件内保存的数据)_第2张图片
水平有限,难免有错误和不足之处,恳请批评指正。

你可能感兴趣的:(Halcon)