1、1 编写一个简单HDevelop 程序 .1 1.1 启动一个 新程序 1 1.2 输入一个 算子 2 1.3 设置参数 3 1.4 获取帮助 3 1.5 继续编写 程序 4 1.6 理解图像 显示 5 1.7 核对变量 5 1.8 使用灰度 直方图改善阈值 7 1.9 编辑程序 行 7 1.10 重新执 行程序 8 1.11 保存程 序 8 1.12 根据特 征值选择区域 8 1.13 在循环 体中访问检测结果 10 1.14 小结 11 2 HDevelop图形用户界面 12 2.1 主窗口 12 2.1.1 窗口标 题 .12 2.1.2 菜单栏 .13 2.1.3 工具栏 .13 2.
2、1.4 窗口区 域 .13 2.1.5 状态栏 .13 2.1.6 窗口模 式 .15 2.2 菜单栏 15 2.2.1 文件菜 单 .15 2.2.1.1 新程 序 16 2.2.1.2 打开 程序. .16 2.2.1.3 浏览 例程. .16 2.2.1.4 当前 程序 17 2.2.1.5 插入 程序 18 2.2.1.6 保存 19 2.2.1.7 程序 另存为. .19 2.2.1.8 将函 数另存为. .19 2.2.1.9 保存 所有 20 2.2.1.10 导出 20 2.2.1.11 读取 图像 .23 2.2.1.12 清除 24 2.2.1.13 属性 24 2.2.1
3、.14 打印 25 2.2.1.15 退出 26 2.2.2 编辑菜 单 .26 2.2.2.1 撤销 27 2.2.2.2 重做 27 halcon 工业应用实用教程 鸟叔编写QQ :149189113 鸟叔 QQ 群: 120323602 halcon 工业应用实用教程 鸟叔 QQ:149189113 鸟叔 QQ 群: 120323602 22.2.2.3 剪切 27 2.2.2.4 复制 28 2.2.2.5 粘贴 28 2.2.2.6 删除 28 2.2.2.7 激活 28 2.2.2.8 注销 28 2.2.2.9 查找 /替代 .28 2.2.2.10 重复 查找 30 2.2.2
4、.11 设置 /清除书签 .31 2.2.2.12 下一 个书签 31 2.2.2.13 前一 个书签 31 2.2.2.14 书签 31 2.2.2.15 无效 行. .32 2.2.2.16 参数 选择. .33 2.2.3 执行菜 单 .49 2.2.3.1 运行 49 2.2.3.2 执行 到指针插入位置 50 2.2.3.3 单步 跳过函数 50 2.2.3.4 向前 一步 50 2.2.3.5 单步 跳入函数 50 2.2.3.6 单步 跳出函数 50 2.2.3.7 停止 50 2.2.3.8 调用 堆栈 51 2.2.3.9 设置 /清除断点 .51 2.2.3.10 活动 断
5、点/ 使断点无效 .51 2.2.3.11 清除 所有断点 51 2.2.3.12 断点 52 2.2.3.13 重置 程序执行 52 2.2.3.14 复位 过程执行 53 2.2.3.15 忽略 该过程的执行 53 2.2.4 可视化 菜单 53 2.2.4.1 打开 图形窗口 53 2.2.4.2 清空 图形窗口 54 2.2.4.3 关闭 图形窗口 54 2.2.4.4 显示 54 2.2.4.5 窗口 尺寸 55 2.2.4.6 图像 尺寸 55 2.2.4.7 彩色 数量 55 2.2.4.8 颜色 55 2.2.4.9 画 55 2.2.4.10 线宽 55 2.2.4.11 形
6、状 55 2.2.4.12 查找 表 56 halcon 工业应用实用教程 鸟叔编写QQ :149189113 鸟叔 QQ 群: 120323602 halcon 工业应用实用教程 鸟叔 QQ:149189113 鸟叔 QQ 群: 120323602 32.2.4.13 打印 56 2.2.4.14 插入 代码 56 2.2.4.15 位置 精度 56 2.2.4.16 交互 记录 57 2.2.4.17 立即 应用 57 2.2.4.18 更新 窗口 57 2.2.4.19 重置 参数 57 2.2.4.20 设置 参数 57 2.2.4.20.4 缩 放设置 .61 2.2.4.21 缩放
7、 窗口 62 2.2.4.22 新缩 放窗口 63 2.2.4.23 灰度 直方图 63 2.2.4.24 特征 直方图 64 2.2.4.25 特征 检验 65 2.2.4.26 轮廓 线 65 2.2.4.27 保存 窗口. .66 2.2.5 函数菜 单 66 2.2.5.1 创建 新过程 67 2.2.2.2 复制 67 2.2.5.3 编辑 接口 68 2.2.5.4 删除 当前项 69 2.2.5.5 删除 所有本地未使用项 69 2.2.5.6 插入 使用过的作为本地函数 69 2.2.5.7 插入 所有作为本地项 69 2.2.5.8 将所 有项作为外部引用 69 2.2.5.
8、9 外部 过程函设置 70 2.2.5.10 编辑 过程 70 2.2.6 算子菜 单 .70 2.2.6.1 控制 71 2.2.6.2 开发 73 2.2.6.3 1D Measuring, 3D Measuring, 3D Reconstruction, . 75 2.2.6.4 过程 76 2.2.7 建议菜 单 .76 2.2.7.1 前趋 函数 76 2.2.7.2 后继 函数 76 2.2.7.3 替代 函数 76 2.2.7.4 参考 77 2.2.7.5 关键 字 77 2.2.8 助手菜 单 .77 2.2.9 窗口菜 单 .77 2.2.9.1 打开 图形窗口 78 2.
9、2.9.2 打开 程序列表 78 2.2.9.3 打开 变量窗口 78 halcon 工业应用实用教程 鸟叔编写QQ :149189113 鸟叔 QQ 群: 120323602 halcon 工业应用实用教程 鸟叔 QQ:149189113 鸟叔 QQ 群: 120323602 42.2.9.4 打开算子窗口 78 2.2.9.5 打开 输出控制台 78 2.2.9.6 打开 程序行视图 80 2.2.9.7 排列 窗口 81 2.2.9.8 层叠 窗口 82 2.2.9.9 单文 档/ 多文档 .82 2.2.10 帮助 菜单 .82 2.2.10.1 帮助 82 2.2.10.2 HALC
10、ON参考手册 83 2.2.10.3 HDevelop Uses Guide83 2.2.10.4 HDevelop语言 .83 2.2.10.5 搜索 文档 83 2.2.10.6 HALCON新闻 83 2.2.10.7 关于 83 2.3 工具栏 .83 2.4 程序窗口 85 2.4.1 编辑程 序 .86 2.4.1.1 对话 框编辑器 87 2.4.1.2 全文 编辑器 88 2.4.2 程序计 数器、插入光标、断点 .91 2.4.3 右键菜 单 .91 2.4.4 创建函 数 .93 2.4.4.1 设置 函数属性 .94 2.4.4.2 设置 函数参数 96 2.4.4.3
11、提交 函数接口 98 2.4.5 编辑函 数 .98 2.4.6 函数文 档 .99 2.4.6.1 一般 文档 100 2.4.6.2 参数 文档 101 2.4.7 受保护 的函数 .103 2.5 算子窗口 105 2.5.1 输入算 子或函数 .106 2.5.2 参数 .107 2.5.3 控制按 钮 .108 2.6 变量窗口 108 2.6.1 图形变 量 110 2.6.2 控制变 量 111 2.7 图形窗口 115 2.7.1 交互创 建和操作ROI 和XLD 120 2.8 帮助窗口 128 2.9 缩放窗口 131 2.10 灰度直方图窗口 .132 2.10.1 交互
12、式 可视化操作 135 halcon 工业应用实用教程 鸟叔编写QQ :149189113 鸟叔 QQ 群: 120323602 halcon 工业应用实用教程 鸟叔 QQ:149189113 鸟叔 QQ 群: 120323602 52.10.1.1 阈值操作 .137 2.10.1.2 缩放 操作 138 2.11 特征直 方图窗口 139 2.12 特征检 测窗口 140 2.13 轮廓线 窗口 141 2.13.1 轮廓 线窗口的ROI 菜单 .143 2.13.2 轮廓 线显示 .143 2.13.3 数据 源 .143 2.13.4 轮廓 线参数 .144 2.13.5 输出 .14
13、4 2.13.6 统计 .145 2.13.7 相机 聚焦:如何测试图像的清晰度 .145 1 编写一个简单HDevelop 程序 本章主要介绍怎么使用 HDevelop 来设计机器视觉应用程序。只要你跟着演示的运行例子练习,就能轻松学会。 如下例,假定 HDevelop 的参数选择为默认值。每个刚安装好的 HALCON 中都会有这样的实例。在不确定当前设置的情况下,你可以在命名行使用下面这条代码来启动 HDevelop: hdevelop reset_preferences 本章中介绍一个简单例子,目标是计算并确定回形针的位置和方向,回形针如下图: 1.1 启动一个新程序 启动 HDevel
14、op,或者 HDevelop 正在运行,可单击菜单栏中“文件=新程序”来启动一个新程序。如果在当前程序中有未保存的更新, HDevelop 会自动提示你是否保存。如果出现提示,单击“ 放弃” ,启动一个新程序 要是重要是窗口重叠,可以单击菜单栏中“ 窗口=排列窗口” 恢复到默认显示布局如下图: 首先要读取图像并把它存储在一个图形变量中。我们可以把一幅图像拖拽到HDevelop 窗口中。当然我们也可以通过在程序中插入“ read_image”算子来实现。在本例中,使用插入算子的方法。 1.2 输入一个算子 点击进入“ 算子窗口” 的文本框,输入“read_image” 然后按回车键。也可以输入任
15、何部分算子名,然后按回车。HDevelop 会根据你输入的部分算子名打开一个与之相应匹配的算子列表。这样可以很容易的选择算子,而且不用输入完整的算子。当鼠标或光标移动到所要选的算子时,该命令会变亮,单击然后按回车即可执行该操作。如果不小心选错了算子,可以重新点击列表旁边的下拉箭头,选择正确算子。如下图所示: 1.3 设置参数 选择一个算子后,它的参数会显示在“ 算子窗口” 。它们被分为图形参数和控制参数。参数名旁边的图形表示输入输出的参数类型(如下图所示)。参数的右边显示的是语义类型。 文本框中设置参数值。 在 Image 文本框中输入 Image,则图像将被保存到这个变量中。然后,在 Fil
16、eName文本框中输入Clip。点击“ 确定” 或按回车键,把算子输入到程序。点击帮助按钮,可以获取该算子的详细信息: 1.4 获取帮助 HDevelop 提供了一种便捷的访问算子帮助文档的方法。在程序编辑器中双击程序的首行。相应的算子将会显示在算子窗口,这个时候点击“帮助” 打开 HDevelop 的帮助窗口,它会自动跳转到算子对应的文档,如下图所示: 参考手册是相互链接的。窗口的左侧导航部分提供了快速访问其它文档的直接途径。标签页“ 目录”是一个层次结构的参考手册(加上了 HALCON 的其他参考手册)。标签页“ 算子 ”列出所有算子,可以直接访问。在过滤栏输入部分字符串,能快速找到所需的
17、算子。 在本章的其余部分,尽可能多的使用在线帮助来获取使用算子的信息。 1.5 继续编写程序 1. 通过阈值分割回形针 现在,我们想要把回形针和背景分离出来。回形针和背景区别明显,可以选择基于灰度值分割的方式,这个操作称为阈值分割。在算子窗口中输入 threshold,按 下 ,可以得到一列匹配的算子。再次按 确认所选算子或用鼠标选择算子: 在上图中可以看到,输入参数 Image被自动设置为Image ,分别设置MinGray 和MaxGray 为 0 和 30,这样就将选择图像中像素暗的部分。单击“ 应用” ,这个按钮执行时没有把算子添加到程序中,它使当前参数保持为打开可编辑状态。通过这种方
18、式,可以轻松地尝试不同的设置并立即看到结果。 被选中的像素(区域)存储在图形变量 Region,该 区 域 以 overlay 的方式在图形窗口显示。变量 Region显示为红色(默认设置 )。所设置的阈值稍后还需要精确调整。这时候点击“ 输入” 添加算子到程序窗口。如果是单击“ 确定” ,我们可以注意到图像变量区域和图形窗口保持不变,但算子窗口不显示了。 2. 后继函数 选中刚插入的程序行,打开菜单栏中的 建议=后继函数。这个菜单动态显示当前选择算子的典型后继函数。我们的目的是把选择的像素分割成区域,把鼠标光标移动到后继函数菜单项,选中的算子,这时在状态栏有一个简短描述。通过浏览后继函数菜单
19、项,发现 connection算子符合要求,选择该算子: 再按回车键,这相当于单击“确定”按钮。这时 threshold算子和 connection算子这两行程序被执行。在图形窗口中,通过 connection计算得到的区域用不同的颜色显示。 1.6 理解图像显示 在程序执行三行后,图形窗口显示了三层图像变量:图像 Image,区域 Region,和区域元组ConnectedRegions。让鼠标光标在“变量窗口”的图形上移动,来获取关于变量的基本信息。 可以从“图形窗口”的右键菜单中调整图像和区域的显示属性。对于图像, 在“图形窗口”中可以设置查找表(LUT ,指定灰度值映射) 和显示模式(
20、参考右键菜单的“打印”)。还可以尝试不同的设置:在图形窗口单击右键弹出菜单,更改“LUT ”,“打印”,“颜色数量”等选项的值。尝试过不同设置后,单击重置按钮恢复默认可视化设置。 1.7 核对变量 当鼠标光标移动到图形变量 ConnectedRegions 图标时,会看到提示有 98 个 region。在ConnectedRegions 图标上单击右键并选择“清除/ 显示”,把 ConnectedRegions 显示在图形窗口。再次单击右键并选择“显示目录=选择 ”,如下图所示: 这个菜单项打开了一个列出 ConnectedRegions 变量内容的检查窗口。在检查窗口所选择的区域,使用当前可
21、视化设置参数在图形窗口中显示。 设置填充模式“ 画 ”为 “margin”,设置“ 形状” 为 ellipse,然后从列表中选择区域,下图显示的椭圆所在的区域为选择的区域: 然后关闭变量检查窗口。 因为 threshold 算子参数设置的值太粗糙,导致分割出大量的区域。 接下来使用 HDevelop 的可视化工具找到更合适的阈值。 1.8 使用灰度直方图改善阈值 点击菜单栏中的“ 可视化=灰度直方图” 打开灰度直方图工具。灰度直方图的用途之一是确定阈值范围。 因为当前图形窗口只显示区域,所以灰度直方图最初是空的。在变量窗口中双击图像图标,在图形窗口显示原始图像,这时灰度直方图就出现。 在灰度直
22、方图窗口操作列表中选择“ 阈值” ,然后单击阈值旁边的图标 ,开启使能输出,来实现可视化操作。这时你可以通过改变最小和最大值或通过拖拽直方图中的行区域来尝试不同的阈值范围(如下图所示)。这些值的任何更改都会立即在活动的图形窗口中体现出来。通过不断调整, 0 和 56 适合作为上下边界。 1.9 编辑程序行 如前所述,在 HDevelop 中默认的编辑模式是基于对话框的。前面例程中,程序中所有参数的修改是在“ 算子窗口” 中进行。在“ 程序编辑器” 窗口中双击一行程序来对它进行编辑,然后编辑的参数会在“ 算子窗口” 中显示出来。你点击“ 确定” 或“Enter” 的话,原始程序行就会被刷新。在后
23、续章节有完整的关于程序编辑器的介绍。 双击第二行程序来调整阈值, 在“ 算子窗口” 中把 30 换成 56 后点击“ 确定” 或“ Enter”,这样 “程序编辑窗口” 中程序就会随之更新。 1.10 重新执行程序 编辑程序的最后步骤是对程序进行细微的修改。 通常情况下,在程序编写很多行后,变量会发生很多改变,这时需要重置程序,恢复到初始状态,然后再次运行,观察变量的变化。 点击菜单栏中的“ 执行= 重置程序执行” 来重置程序。 这个时候选择“ 执行=运行 ”就能完整的运行程序,或者点击“ 执行=单步跳过函数” 来可逐行运行程序。 1.11 保存程序 编写程序时,要及时保存并且备份程序。选择“
24、 文件=保存” ,设置好路径、文件名,然后保存程序。 1.12 根据特征值选择区域 改变阈值后得到新的区域 ConnectedRegions,检测区域 ConnectedRegions,发现结果已经有所改善。然而,在图像左上角,还存在一个干扰区域。为了得到只包含有回形针的区域,我们需要进一步改进。类似于灰度直方图工具, HDevelop 还提供了一个特征值直方图工具,它有助于选择拥有共同属性或特性的区域: 点击“ 可视化” 下的“ 特征直方图” 打开这个工具。点击所选特性(area) 旁边的图标 (选中时为绿勾)激活可视化处理。 指定特征“列表” 选择特征值。默认的特征选项是“area” ,本
25、例中使用“ area”。 实际中所有的回形针都是一样的大小(面积,area ),因此回形针区域的共同特征是面积。 在特征直方图中,横轴的数值对应于所选的特征的数值。纵轴的数值为某一特征值的频率,即该特征值出现的总个数。和灰度直方图窗口一样,可以可视化被选中的区域,这些区域位于由绿色竖线(最小值)和红色竖线(最大值)之间。特征直方图窗口中的参数如下图所示: 拖动绿线和红线,看看对所选择的区域有什么影响。为了在直方图中看到所有的回形针,我们可以在直方图中选择特征值从 4100 到最大值之间区域。当调整到满意的特征值时,点击“ 插入代码” 。 以下代码会被添加到鼠标所在位置行的程序中 select_
26、shape (ConnectedRegions, SelectedRegion, area,and, 4100, 5964) 运行程序,观察输出变量 SelectedRegions。现在回形针的区域就正确了。 在程序中添加以下算子来获得回形针的方向和重心: orientation_region (SelectedRegions, Phi) area_center (SelectedRegions, Area, Row, Column) 算子orientation_region 会返回一个元组Phi ,数值的每个元素的值表示:对象元组SelectedRegions 中对应个区域的方向。同样,算子
27、 area_center把每个区域的ar ea, row 和 column的值以元组的方式返回。 再次运行程序并观察计算出来的控制变量。你能在一个变量观察窗口中观察多个控制变量。在变量窗口中选择控制变量(同时按住 Ctrl 不放),然后单击右键选“ 检测” 。如下图所示: 1.13 在循环体中访问检测结果 作为一个集成开发环境, HDevelop 同时提供了其他编程语言特性,如:变量赋值、表达式和控制流。变量赋值和控制流用 HDevelop 算子来实现。范围算子的其中一种方法从菜单栏中“ 算子” 下“ 控制” 中选择算子,如图: 表达式用调 HDevelop(编程)语言来实现。为了访问 Phi
28、 中的每一个元素,可以 for 循环来实现。for 循环可以像一个普通 HALCON 算子一样使用:在算子窗口输入 for,然后设定好参数 |Phi| 1 是 HDevelop(编程)语言的一部分, |Phi|表示元组元素的个数。注意, 如果 复选框被勾选,末尾算子 endfor会自动插入。还要注意,程序插入的位置是在鼠标光标所在的行。点击“ 确定” ,程序中添加了fo r循环: for Index := 0 to |Phi|1 by 1 endfor 把 for 循环中添加如下代码: set_tposition (3600,RowIndex,ColumnIndex) write_string
29、 (3600, deg(PhiIndex) + degrees) 算子 set_tposition 把图形窗口中的文本光标位置移至索引 Index 所对应的区域的的中心位置。3600是目标图形窗口的窗口句柄,显示在窗口的标题栏: ,并且会因不同窗口的不同而变化,即每个图形窗口对应一个唯一的窗口句柄。 RowIndex是 HDevelop(编程)语言的另一个算子。通过它来访问 tuple 元组的一个元素。算子write_string 的作用是在图形窗口中,在当前文本光标位置输出定字符串。算子 deg 也是 HDevelop(编程)语言的一部分,它的作用是把弧度转换成角度。在本例中,算子+ 的作用
30、是把字符串串联在一起,产生一个新的字符串。在两个操作数相+ 之前,HDevelop 会自动进行一个数据类型转换,把 deg(PhiIndex)从 double 数据类型转化为 string 数据类型。 更多关于 HDevelop(编程) 语言的介绍在HDevelop 编程语言这一章中。 1.14 小结 这节介绍了 HDevelop 编程的基本的方式:在算子窗口,选择一个算子,为其设置参数,使用“ 应用 ”按钮尝试不同的设置值, 用 “输入” 或 “确定” 添加一个新程序行,还可以在“ 程序编辑器” 窗口通过双击来编辑它。HDevelop 提供了很多交互式工具来辅助开发。 2 HDevelop图
31、形用户界面 这章介绍 HDevelop 的图形用户界面。 注:后文中的过程函数、过程和函数,意义一样,表示相同的东西。 2.1 主窗口 主窗口包括以下部分: 2.1.1 窗口标题 HDevelop 的主窗口的标题是由标题 HDevelop 和紧跟其后的当前程序的名称组成(如果当前没有程序则为未定义): 如果当前程序存在未保存的更改,则在主窗口标题显示一个星号(* ): 如果当前程序已保存,主窗口标题显示为: 2.1.2 菜单栏 通过顶部的菜单栏中的选项来使用 hdevelop 的各种功能。 2.1.3 工具栏 工具栏上列出了常用功能的快捷键。 2.1.4 窗口区域 主要的窗口如下(从左到右,从
32、上到下): 图形窗口、算子窗口、变量窗口、程序窗口 2.1.5 状态栏 状态栏用于显示状态信息。 1. 状态图标 :显示当前程序运行的状态。 2. 信息和运行时间信息 例如,如果从菜单中选择一个算子,相应的简短描述信息会在这里显示。 运行时间信息取决于运行模式:当程序单步运行时,显示的是最后一个算子或函数的运行时间。如果程序是连续运行,显示的是程序从运行到停止的时间总和。历史信息纪录会保存下来,详见下文。 3. 在激活图形窗口上显示的图像的信息 显示格式是: 索引号 图像变量名(文件的数量:高* 宽* 通道数量* 像素深度类型) 4. 灰度值 显示鼠标光标所在位置的图像的灰度值。多通道的图像的
33、灰度值通过逗号分隔。 5. 图像坐标 显示鼠标光标所在位置的图像的坐标(行,列)。 6. 在状态栏左侧的消息区域中单击鼠标右键,弹出菜单,有如下选项: (1 )显示处理时间:切换执行消息是否显示在状态栏上。 (2 )复制历史到剪贴板:把运行的历史信息复制到剪切板,可以用在其他文档(如 word, text 等)粘贴。 (3 )打开输出控制台 在单独的输出控制台窗口中显示消息历史记录 2.1.6 窗口模式 在 hdevelop 中有两种不同的窗口模式,在窗口菜单中可以切换: (1 )MDI (多文档界面): 在这种模式下的主窗口包含了所有其他的窗口和对话框(在线帮助窗口和暂时禁止其它窗口的静态弹
34、出框除外)。在主窗口内,你可以根据你的需求和爱好自由移动窗口。你可以决定是否将它们图标化。 (2 )SDI(单文档界面): 在这种模式下,所有的窗户都是独立的。菜单栏,工具栏和状态栏,迁移到第一个程序窗口。 2.2 菜单栏 主窗口的菜单栏提供访问 HDevelop 的全部功能。在这,可以选择算子和过程,控制图像的输出。每个菜单项可以打开一个下拉菜单(以下简称菜单)与可选的子菜单。您可以通过单击菜单项或通过键盘(按键结合菜单项中带下划线的字母)打开一个菜单。下面的章节这些项目将会按照他们出现的顺序介绍。 2.2.1 文件菜单 此菜单的功能是加载图像和程序,并保存最近创建或修改的程序和过程。此外,
35、您可以导出 HDevelop程序到 C+ +,C ,Visual Basic Visual Basic.NET 或 C,也可以打印出来。 HDevelop 程序存储为以下文件格式: (1 )Halcon9 以后(不包括 9): 程序:.hdev 函数: .hdvp (2 )Halcon9 前(包括 9): 程序:.dev 函数: .dvp 2.2.1.1 新程序 功能:新建一个新的 HDevelop 程序。 快捷键:Ctrl+N 2.2.1.2 打开程序. 功能:加载现有 HDevelop 程序 快捷键:Ctrl+O 弹出一个文件选择对话框,然后选择一个 HDevelop程序。请注意,只有 H
36、Develop程序(.hdev 或.dev)可以加载。因此,文本,C ,C +, Visual Basic, Visual Basic.NET 和 C版本将被拒绝。 加载程序之后,相应的文件名被添加到菜单中当前程序的顶部。这允许你在最近加载的程序之间快速切换。 2.2.1.3 浏览例程. 功能:从分类列表中选择一个 HDevelop 例程。 快捷键:Ctrl+E 选择这个菜单项会打开一个对话框,允许你加载分类中的任一 HDevelop 示例程序,如下图所示: 1. 在对话框的左侧的项中包含分类的结构化列表。点击一个分类前的图标切换其子选项的显示。或者,双击其中的任何分类标签显示和隐藏的子选项。
37、如果你选择一个分类,其所有匹配的例子程序列在该区域。您可以通过按住 键的同时单击其他的分类,这样来选择多个分类。一个HDevelop 示例程序会根据不同的主题和分类多次出现。 2. 过滤功能: 可以在过滤文本框中输入一个关键字来减少搜索的程序的数量。过滤所得到的例程,会显示程序文件名和程序的简短说明。过滤的关键字是不区分大小写的。 3. 加载示例程序 双击列表中的一个示例程序,或者选择它并点击按钮“ 打开 ”。如果当前程序中未保存,使用“ 在新的 HDevelop 中打开” 程序,这种方式很有用的 4. 如果想快速浏览几个示例程序,可以勾选上“ 保持对话打开” 。 2.2.1.4 当前程序 功
38、能:加载最近使用 HDevelop 程序。 此子菜单包含最近使用的 HDevelop 程序的列表。只需单击一个程序名来加载它。在此菜单中的文件数量可根据需要进行设置,在 编辑 = 参数选择 : 2.2.1.5 插入程序 功能:插入其他的 hdevelop 程序、过程到当前程序。 2.2.1.5.1 插入所有 功能:将一个完整的 HDevelop 程序插到当前程序。 把所选程序的主过程和所有本地过程插入到当前程序。 如果插入的本地过程的名称与已有的过程冲突,前者会重命名,添加后缀_COPY_1 (或_COPY_2 ,_COPY_3 )。 注意:插入的本地函数名和已加载的外部函数名一样时,将隐藏外
39、部函数,那么在调用到隐藏的外部函数时,需要对其进行调整。可通过以下方式找出的程序中包含的隐藏的外部函数:过程=外部过程设置. =外部函数。 2.2.1.5.2 插入过程 功能:将选择的程序的本地过程插入到当前程序。 通过这个菜单项可以把一个 HDevelop 程序中除主过程以外的函数全部添加到当前的程序中。如果插入的本地过程的名称与已有的过程冲突,前者会重命名,添加后缀 _COPY_1(或 _COPY_2,_COPY_3)。注意:插入的本地函数名和已加载的外部函数名一样时,将隐藏外部函数,那么在调用到隐藏的外部函数时,需要对其进行调整。可通过以下方式找出的程序中包含的隐藏的外部函数:过程=外部
40、过程设置. =外部函数, 2.2.1.5.3 插入主体 功能:将所选程序的主函数插入当前程序中。 将所选程序的主函数插入当前程序中。选择的程序的本地函数无法导入。如果当前的程序不提供导入程序使用的函数,相应的程序行将被标记为无效的代码且不会被执行。无效的代码如果添加缺少的函数会变成有效的代码。 2.2.1.6 保存 功能:保存当前 HDevelop 程序或当前选定的外部函数 快捷键:Ctrl+S 2.2.1.7 程序另存为. 功能:将当前的 HDevelop 程序保存到一个新文件。 快捷键:Ctrl+Shift+S 2.2.1.8 将函数另存为. 功能:将当前函数保存为一个外部函数或者成为一个
41、独立的 HDevelop 程序。 使用这个菜单项你可以把当前的函数另存为一个外部函数或者一个 HDevelop 程序。在保存时,会弹出一个文件选择对话框,在这里可以选择保存文件的类型: (1 )HDevelop 函数(.hdvp 或.dvp ) 该函数存为外部函数,如果目标路径尚未配置在外部过程路径中, HDevelop 将建议把该路径增加到列表中。如下图所示: 如果你单击否,HDevelop 将无法访问已保存的过程,除非手动把该过程的路径添加到外部函数路径列表。 (2 )HDevelop 本地函数(*.hdev 或 *.dev) 如果该文件类型被选择时,产生一个空的主函数,并添加到目标文件中
42、,选择的函数作为一个本地函数添加到该程序。如果在程序窗口中选择主函数,这个菜单项无法使用。 2.2.1.9 保存所有 功能:保存当前的程序和所有修改外部函数。 快捷键:Ctrl+Alt+S 2.2.1.10 导出 功能:将 halcon 程序代码导出为一种可编程语言或者文本文档。 (1 )导出对话框如下图所示 (2 )导出文件及格式 在 设置导出文件路径。 在 选择导出文件的格式。 导出文件的格式如下: 格式 语法 导出文件的后缀名Text File .txt C HALCON/C .c C+ HALCON/C+ .cpp Vsiual Basic.NET HALCON/.NET .vb C#
43、 HALCON/.NET .cs Visual Basic6.0 HALCON/COM .bas Vsiual Basic.NET HALCON/COM .vb C# HALCON/ COM .cs (3 )导出范围 导出范围用于选择导出程序的哪部分内容。有以下几种选型: 1)程序:整个程序将被导出(主函数和所有的本地函数)。所有的外部函数将根据外部函数属性来导出(参见下节) 2)当前过程:当前函数和所有使用的本地函数将被导出。所有的外部函数将根据外部函数属性来导出(参见下文)。 3)外部过程:所有的外部函数将根据外部函数属性来导出(参见下文)。 (4 )函数属性 函数属性如下: 1)导出本地
44、函数内容:如果勾选,那么本地函数的声明和内容都将被导出。否则,只导出声明。 2)导出外部函数内容:如果勾选,那么外部函数的声明和内容都将被导出。否则,只有声明被导出。 3)导出所有引用的外部函数:如果勾选,所有引用的(即已使用的)外部函数和当前的程序一起导出。 4)导出所有函数到分开的目标文件中:不勾选时,外部函数将被导出到一个共同的文件中。勾选时,外部函数导出到分开的目标文件中,文件名与函数名一致,文件的后缀名取决于第(3 )步选择的导出文件的格式。 5)仅在函数比导出文件新的时候进行导出:如果当前函数的时间戳比现有的目标文件中同名的函数的时间戳新,那么把当前函数导出到分开的目标文件中。 (
45、5 )窗口导出 选择 Halcon 窗口的导出方式: 1)使用 halcon 窗口:作为一个独立的工程导出。 2)使用导出模板(只有 HALCON/.NET 和 HALCON/COM 使用):作为一个非独立的工程导出。这种方式导出得到的文件,是工程的一个附属文件。使用 halcon 提供的模板工程(基于 vb,c# 等 IDE环境的工程),加载这个文件,即可运行程序。使用这种方法,可以很快捷的把 halcon 与 vb 或 c#等联合应用。 (6 )编码 编码: 选择导出程序的编码方式。 下边是可选择的选项: 1)原始:使用操作系统定义的编码方式导出程序。 2)UTF 8:使用 UTF8 编码
46、方式(Unicode )导出程序。 (7 )保持窗口打开 保持导出对话框一直处于打开状态。 2.2.1.11 读取图像 功能:添加图像到当前程序。 快捷键:Ctrl+R 这个菜单项提供了一种快速打开图像文件的方法,如下图所示: 2.2.1.12 清除 功能:清除长期不使用的图形变量、控制变量。 2.2.1.13 属性 功能:显示当前程序的各种属性。 该选项栏一般显示当前程序文件的属性,如文件名,路径,创建和修改日期,和写入权限。它显示了图像的尺寸,代码行数,使用的本地函数和未使用的本地函数的数量,以及使用的外部函数和保护函数的数量。如下图所示: 选项栏“ 使用的模块” 列出当前程序的 HALCON 模块。标有照明灯泡模块是被使用的。这个窗口可以让你知道你的应用程序大概需要多少运行许可证。请参阅安装指南有关模块和运行许可证的详细信息。 1. 选项:只检查使用的函数 如果选中,只根据使用的函数来确定程序使用的模块。否则,根据所有的函数来确定程序使用的模块。 2. 按钮:拷贝到剪贴板 把使用到的模块的名称复制到系统剪贴板。这样的话列表可以很容易地粘贴到其他的应用程序 2.2.1.14 打印 功能:打印当前的程序或者挑选的函数。 快捷键:Ctrl+P 打印对话框如下图所示: