第一章HALCON
恭喜诸位。您采用了这套在产品研发,研究以及教育方面都有顶尖表现的影
像分析软件。
HALCON 可在UNIX,NT/2000/xp 等等平台下作业,它独特的Library 提供了千余个为影像分析作业,数据可视化,除错等等功能所设计的运算符,用户可以利用它的功能以C 及
C++等程序语言自行撰写图像处理程序。
此外,HALCON 亦支持Windows NT/2000/XP 下的COM 接口,所以您也可以透过Visual Basic 使用它,使得系统的整合更为容易。
HALCON 的设计使得影像区域,边缘,以及等值线的处理上更方便,优化的算法让这套软件在一般的硬件上也有很好的指令周期。
HALCON 包含了名为HDevelop 的程序设计界面,减少了设计软件所花的时间,还有一个好用的联机帮助,您可以查到关于HALCON 运算符间功能相近的替代者,可能的变化,以及交互的参考。
HALCON 从6.0 版开始提供两个版本,除了标准版外,还有支持平行运算的parallel HALCON,可使用多CPU 的机器,提高指令周期。
以下是HALCON 特点的说明
1.1
HALCON 强化的opreator library 提供有效率又有弹性的图像处理功能,简化了影像程序的设计
HALCON operator library 有千余个运算符。所有的HALCON 应用程序(像是HDevelop 和HALCON C++程序)皆是利用这个library 来工作。这些运算符功能广泛,包含了简单的读取影像,到复杂的像是Kalman 滤波等。基本上这些运算符各有其单一功能,而非包含了各种运算,因此一个影像分析功能是由好几个运算符组成的,所以其弹性远大于由少数而复杂的运算符组成的分析程序。特化而复杂的运算符往往只适用于某些工作甚至于影像,应用范围狭窄。相对于这种窘境,HALCON 运算符却能任意组合来完成工作。众多的运算符中,有些是以不同的算法来达到相同的功能,例如只需要粗略定位时,可用
fast_match 来作最快的运算,需要精确定位时,用best_match,以较多的时间来求得最准确结果。
HALCON 可处理彩色及多频道影像可用于计算的影像数据,包含二值化影像,单色,彩色,或是多频影像,在使用上并无差别。
(多频道影像是以多镜头系统取得的影像数据)。
HALCON 提供了快速有效率的region 处理计算
除了使计算更容易外,region 尺寸无限制,甚至于可以重迭,而region 数据经过最佳的编码处理,在内存中所占的资源极少。
HALCON 可做ROI 的计算
每个影像中的物体都可由用户自行定义其region,接着再由运算符进行计算时就可以只针
对定义区域作处理,因此可以集中运算资源和速度,达到最好的效率。
HALCON 提供了快速的pattern 匹配计算
pattern 匹配在许多应用上是很有用的,但是却很花时间,HALCON 有许多不同的pattern 演算法,可以让您自行决定何时使用。
HALCON 提供了形状导向(shape-based)的匹配计算,使得物体有重迭或是旋转杂置的状况下仍可计算。除了pattern 匹配外,形状导向的运算符可以在物体有缩放,照明改变,旋转或重迭等等情况下仍旧能辨认出物体。从6.1 版开始,还有一个辅助工具HMatchIt,透过简易的设定即可用来测试匹配执行的效率,藉由参数的调整让您找出最佳的设定值,达到最快的计算速度。
HALCON 提供了方便有效的tuple 功能
tuples 是一种很有用的功能,使您处理影像,区域,参数等等数据集合时更为便利。HALCON 的tuples 可以将相关数据整合成一个对象,用户可以针对单一或多个tuples 作处理,您就
不必为一个tuple 中有多少元素要处理而烦恼,只要将指定的tuple 丢给运算符,HALCON 就会处理tuple 中所有要计算的元素。
HALCON 在影像和数据管理上效率卓著
HALCON 有个快速有效率的内存管理核心,这个机制提供了数据的读写,还有溢位的检查。为了提高效率,共享的影像数据不会在内存中重复。
HALCON 支持C,C++以及COM 的程序设计
您可以在自己撰写的C,C++和COM 程序中使用HALCON 运算符,完成一个独立的程序。
HALCON 的HDevelop 工具帮助您发展影像分析程序撰写影像分析程序通常是旷日费时,为了帮助设计人员找出合适的运算符及参数,HALCON 发展出一套工具程序HDevelop。它如帮助您呢? 首先HDevelop 有一个图形接口,要使用的运算符和要分析的影像一目了然,运算符可以自行组合,计算成果实时显示在影像中,可
以帮助使用者了解不同运算符和参数对计算的影响。同时它也会提出一些运算符或参数的建议,在线辅助除了解释运算符如何工作外,还有范例的说明。当您觉得计算成果满意了,可以把设计好的成果存成HDevelop 的专用档案,下次可再叫用,或者是将其输出成C,C++或COM 的程序代码,可供其他程序套用,就像自行撰写的程序一样。
HALCON 可连接40 余种影像撷取设备
目前支持的设备列表在https://www.wendangku.net/doc/a015010485.html,/halcon/,要连接取像设备,只要用运算符open_framegrabber,给予格式或撷取模式等参数,再来用运算符grab_image 即可取得影像。
HALCON 可以让您自行新增取像设备
如果您用的取像设备HALCON 尚未支持,您可以利用专用接口连接。HALCON 有个开放的接口,配合一些程序代码,就可以和HALCON 连接,相关的说明请参考Frame Grabber Integration Programmer's Manual。
1.2 可执行HALCON 的操作系统
下表说明了可执行HALCON 的操作系统
Operating System Processor Compiler
Windows NT 4.0 /2000 /XP compatible to Intel Pentium MS Visual Studio 3
Linux 2.2/2.4compatible to Intel Pentium gcc 2.95
Solaris 7SPARC CC 5.2
IRIX 6.5MIPS CC
Tru64 UNIX 5.1Alpha cxx
可执行HALCON 的操作系统一览表
请注意,在Linux 下需要libc6(glibc-2.1.x),这是在大部分的Linux 系统像是RedHat 或SuSe 下需要的,请参考相关文件。
HALCON 也可以在Philips TriMedia DSP 上执行,主计算机需安装NT/2000/XP,这部分请参考HALCON/C 之User's Manual。
1.3 Parallel HALCON 简介
简单的说,标准版的HALCON 是在单处理器的计算机上执行单线程计算,在NT/2000/XP,Linux,Solaris,HALCON 是thread-safe,也就是可以做多绪执行,不过所有的运算符执行时都是独一的,所以线程间必须要互相等待。
相对来说,Parallel HALCON 支持平行运算,是thread-safe 以及reentrant,也就是不同的线程可以同时呼叫同一个运算符,可使用的操作系统包含NT/2000/XP,Linux,Solaris。
除了平行运算外,Parallel HALCON 在多处理器的系统上,会自动将运算符作平行化,旧的HALCON 也有此功能,像是HDevelop 这个接口,所以您开发的C++,C,不必再做更动。
平行化的机制是将要处理的数据,例如影像,由不同的处理器上执行不同的线程(所谓的data parallelism),例如一张影像的滤波运算,在一个四处理器的计算机上执行时,计算工作会被分成四份,由四个线程负责,每个线程都是做相同的滤波计算。由于待处理的影像在系统中不必复制,因此HALCON 的这种设计构想可以达到最好的效率。
至于平行化或数据分配的的程度可以实时掌控,以免造成反效果,例如一张很小的影像,又要将数据分散处理反而会浪费时间,此外,不是所有的运算符做平行化都能提高效率。
此外,parallel HALCON 是用于内存共享的系统中,像是典型的多CPU 主板,这样不同的线程才能共享一个HALCON 数据库,同时也不必再复制影像而造成占用内存。这样一来有些系统是不适合执行HALCON 的,像是cluster 式的工作站或是一些不提供共享记忆体的系统。
Parallel HALCON 也不提供COM 接口,包含平行化机制和reentrant,这是因为撰写COM 的主要工具,Microsoft 的Visual Basic ,尚未有效支持多绪执行之故。
1.4 其他数据
下列的手册提供了各种参考数据
HDevelop User's Manual
介绍与HALCON 核心功能链接的图形用户接口HDevelop。
HALCON/C++ User's Manual
如何在您写的C++程序中使用HALCON library。
HALCON/C User's Manual
如何在您写的C 程序中使用HALCON library。
HALCON/COM User's Manual
如何在您写的COM 程序中使用HALCON library,例如使用Visual Basic。
Extension Package Programmer's Manual
如何自己设计一个运算符,并将其整合到HALCON 中。
Frame Grabber Integration Programmer's Manual。
如何将一个新的取像设备加入HALCON 的系统中。(更
新到8.0后这个手册就没有了,改为image acquire)
HALCON/HDevelop,HALCON/C++,HALCON/C,HALCON/COM
所有HALCON 运算符的参考手册。
Application Guide
这是几份各自独立的文件,即所谓的Application Note,是以工业视觉应用的观点来写的,主要是说明一些计算方式的关键以及使用时的注意事项以及要诀等等。例如以型状导向匹配来寻找物体等等。
在MVTec 的网站上所有的参考手册都有PDF 檔及HTML 文件可以下载,网址为
https://www.wendangku.net/doc/a015010485.html,/halcon
第二章安装,授权以及设定
在未说明安装及设定方法前,先来看看不同版本及授权的相关说明
HALCON 有三种版本
1.demo 版,含HDEvelop 以及完整的图像处理功能,但是有一些限制,例如不能连接取像设备,也少了程序设计界面,这个版本可让您测试HALCON 运算符的所有功能而无时间限制。
2.完整版,让您可以用HALCON 的功能发展程序。除了HDevelop 外,还包含了所有取像功能,C,C++,COM 之接口,还有Extension package Interface,让您可以整合自定义的运算子或是新的取像设备。
3.如果您用HALCON 的功能写好程序,您可以得到一个runtime version ,包含了程序中需要的功能,这个版本就不包含HDevelop。
使用完整版或runtime 版,需要不同的授权码,而demo 版可以不用户许可证码。授权使用方式说明如下
1. Nodelocked license 用于固定地址的计算机或机
器
2. 完整版上也可以使用所谓的floating license,在局域网络中特定地址的机器可以使用,一个license server 会检查执行的HALCON 程序数量。
至于作为license server 的机器并非要真如一般的server 般庞大,或是一定要是某种server 系统,像是Windows NT server,它可以是一台Linux 或是Solaris 工作站,然后在其他的电脑安装Windows NT/2000/XP 等以执行HALCON,只要在HALCON 执行时能和这个server 连接就可以了。
如果是为了估价的目的,您可以用一个免费的temporary license。
2.1 安装
以下说明如何由CD 安装HALCON,由网络安装的方法在网址
https://www.wendangku.net/doc/a015010485.html,/halcon/download 有说明。名为release_note.html 的档案有HALCON 的最新消息。
除了UNIX 的系统外,档案路径和环境变量是以Windows 式的写法表示,例如
%HALCONROOT%\examples\extension_package\halconuser
请参考2.4 节的说明
若是在UNIX 系统下,写法就变成
$HALCONROOT/examples/extension_package/halconuser
注意
如果要安装大改版的新版HALCON,例如6.0 或6.1 版等等,就必须先将旧版卸载,这在Windows 下尤其重要,因为必须要清除旧版在registry 的纪录。移除方法请看2.2 节。有
个例外是ActiveVisionTools 1.0 到1.3 版想安装HALCON6.1 版,这时就要保留旧版的HALCON 6.0.x。
如果只是小改版的更新,像是6.0.1 升级成6.0.2 版,有个特别的更新方法,在2.1.3 节有说明。
2.1.1 在Windows NT/2000/XP 下的安装
将CD 置入机器,就会启动一个安装程序,若没有自动执行,可在一个叫nt-x86 的目录下,执行一个名为Setup.exe 的程序,当然,您必须要有Administrator 的权限。首先,程序会先检查系统资源是否足够安装,再来会检查是否已安装了HALCON,如果已安装了相同的
版本,程序会检查已安装的部分,再让您安装新增加的东西。若是已安装了不同版本的HALCON,会问您要不要保留,至于如何在不同版本间切换,在2.1.5 节有说明。安装程序同时也会检查是否有安装ActiveVisionTools,还有它的版本是否和目前要安装的HALCON 兼容。
(请参考2.1.5 节)
这些检查都结束后,安装精灵会要您选择安装版本如下
(Compact,Custom,Typical)Full HALCON version
(Runtime)runtime version
(Demo)demo 版的hdevelop_demo.exe
一些额外的东西可以日后再安装,一样将CD 置入执行,再选择您要的部分即可。再来,如
果您要用dongle,安装程序会问您是否安装驱动程序,2.3.5 节有驱动程序的说明,
以及如何自行安装而不透过HALCON 的安装程序。接着,程序会问您这台计算机是不是要当成floating license server,这样会安装名为license manager daemon,来管理您的floating license。floating license 的用户只要在一台计算机上安装这个程序即可当作license server。请参考2.3.4 节。
2.1.2 在UNIX 下的安装
您要先mount CD,例如/cdrom,通常您要有root 的权限才能作这个动作,而在大部分的系统下,CD 会被mount 成/etc/fstab,不能在此执行程序,所以要改成mount
/dev/cdrom /cdrom
要安装时,启动CD 主目录下的shell script "install-unix",会问您HALCON 要装在哪,接着环境变量HALCONROOT 也要设成安装的目录(参考2.4.2 节),再来会问您HALCON 的附加部分要装在何处。
由于在CD 上是只读的,如果您是以一般使用者来安装,在权限改变时会出现警告讯息,而某些系统上会出现文件名长度超过32 字符的讯息。接着,会检查您的系统是否足够安装。安装完成后有几个环境变量要设定,HALCON 才能工作。(请参考2.4.2 节)
2.1.3 更新
HALCON 小改版的更新有一个特别的方法,例如从6.0 或6.0.1 更新到6.0.2,更新方法请参考MVTec's 的下载区https://www.wendangku.net/doc/a015010485.html,/halcon/download
关于HALCON 6.0.2 版的特别说明
从6.0.2 版开始,HALCON 要用新的dongle 驱动程序(来自GLOBEtrotter),但是更新方法中并无解除旧版的驱动程序以及新版的安装,所以HALCON 会出现"license not found"或类似的错误讯息,因此您要用2.3.5.1 节的方法自行将旧的驱动程序移除。
2.1.4 HALCON 系统里的各种档案以及目录以下说明了安装目录%HALCONROOT%下的各种子目录以及档案内容,不过随着安装选项的不同,有些目录不会出现。
FLEXlm 包含检查license 的程序
bin HALCON 的主程序,像是HDevelop,或是DLL 檔,frame grabber 的libraries 等等。
doc\pdf PDF 说明文件
examples 其中的子目录包含各类范例,例如
application_guide,配合C,C++,delphi 之程序设计,fg_integration(影像撷取接口),extension_package,hdevelop 之使用,MFC,VB 等等之范例。注意,最好不要直接使用这些范例,因为在大部分的作业平台下,只有安装者可以修改或储存这些范例,也不是所有用户都可以在范例的目录下新增储存东西。所以最好是自行复制一份到自己的工作目录下。
images 各种工作所用的影像
include 给C/C++程序使用的header
lib HALCON 的libraries,包含和各种取像设备相连接的驱动程序。(在Windows 下扩展名为.lib,UNIX 下则为.so)
license 授权数据文件要放在这
里
2.1.5 不同HALCON 版本间的切换
您可以同时安装不同版本的HALCON 在同一台计算机上。在W indows NT/2000/XP,安装时要修改相关的环境变量,像是%PATH%,%HALCONROOT%,%HALCONIMAGES%,以及自设的像是%HALCONEXTENSIONS%,这部分请参考2.4.1 节。
如果您使用HALCON 的COM 接口,就要对专用的DLL 檔halconx.dll 做re-register。例如,开一个DOS shell,然后进到bin\i586-nt4 目录下(您的旧版HALCON),先做unregister,就是在命令提示符号下键入
regsvr32 /u halconx.dll
然后到您的新版HALCON 相对应的目录下,将halconx.dll 做register
regsvr32 halconx.dll
在UNIX 下,要转换不同的HALCON 版本,则要修改相关环境变量,像是$HALCONROOT,$HALCONIMAGES,$PATH,$LD_LIBRARY_PATH 等等。
2.1.6 给ActivVisionTools 用户的信息
ActiveVisionTools1.0 到2.0 版是以HALCON6.0 版(或6.0.1)为基础的,所以要是装了HALCON 6.1 版,将会使得ActivVisionTools 无法使用,所以HALCON 6.1 的安装程序会检查是否在计算机上已有安装ActivVisionTools,如果侦测到安装了ActivVisionTools2.0 版,它会提供一个新的,和HALCON 6.1 版相容的OCX ActivVTools.ocx。一般来说这是
您该做的选择,您也可以事后手动修正如下,开一个DOS shell,到您安装ActivVisionTools 目录下的bin\i586-nt4 目录下,对旧的ocx 做unregist,键入
regsvr32 /u ActivVTools.ocx
然后将其删除,或是改名,换成新的ocx,这在CD 中的misc\i586-nt4\avt20.下可以找到,然后键入
regsvr32 ActivVTools.ocx
即完成更新
注意,和ActivVisionTools2.0 不同的,1.0 到1.3 版不能和HALCON6.1 版一起使用(因为没有兼容的ocx),如果HALCON6.1 版的安装程序发现计算机上安装了ActivVisionTools,像是
1.3 版,它会警告您继续安装会使得现存的ActivVisionTools 无法使用,若您还想使用,您就得保留旧有的HALCON6.0.x,同时用
2.1.5 节的方法来转换版本,如果只是要评估试用新版,建议您安装试用版,这样就不必再register COM 接口的library halconx.dll。
2.2 卸载
2.2.1 Windows NT/2000/XP
在Windows 下有几种卸载的方式(不过某些旧版的HALCON 不一定适用)
1.在控制台下,选择新增/移除程序。
2.若您用的是HALCON 5.1 以后的版本,从开始>程序集>MVTec HALCON>Uninstall HALCON 来卸载。
3.从5.2 版起,安装程序会检查机器上是否已有安装旧版,然后您可以利用安装程序来解除旧版的安装。
这是比较好的方法,这样可以避免路径的变量发生问题。
以上是标准的卸载法,如果遇到问题,请参考6.5.2 节。注意,卸载会真的删除安装的档
案,不过不会删除用户设定的数据,也就是registry
中,像是和HDevelop 有关的一些自定数据不会被删除,保留在
HKEY_CURRENT_USER>Software>MVTev>Halcon 下。这里可以自行手动删除,不会出问题。
卸载也不会移除dongle 的驱动程序,要移除的话请参考2.3.5 节的说明。
关于6.0.2 版的特别说明
从这个版本开始需要一个新的dongle 驱动程序,由于卸载不会移除旧有的驱动程序,所以无法安装6.0.2 版所需的新的驱动程序,所以在用程序进行卸载旧版的HALCON 前,要先以手动移除其驱动程序,请参考2.3.5.1 节。
2.2.2 在UNIX 下卸载
只要将HALCON 所在的安装目录移除即可
rm -rf $HALCONROOT
再来,移除子目录.hevelop,这是位在环境变量HOME 所定义的目录之下(参考2.4.2 节),HDevelop 是以这个目录来储存窗口位置,选项数据等。卸载不会删除任何用户自定数据,因此环境变量也不会改变,要删除或修改时就要自行手动处理。
如果您呼叫了Parallel HALCON 6.0 beta 的operator check_par_hw_potential 来做初始化动作,取得的资料会存在一.halcon_par_info 文件中,置于环境变量HOME 所指定的目录下。
2.3 授权
HALCON 透过FLEXlm license manager 来确认用户的授权数据,以下说明取得授权码
及其安装方式。
要取得授权前,先要取得欲安装HALCON 计算机之辨识数据,送至代理商(新亚洲仪器公司),若使用的是runtime license,则请告知欲安装的模块。(请参考2.3.2)
在您收到license file 之后,请参考2.3.2 节的方法来安装。floating license 的使用者请参考2.3.4 节来安装。
2.3.4 取得辨识资料
取得辨识数据是由您计算机上安装的网络卡,若您的操作系统为NT/2000/XP,处理器为Pentium III,则能取得所谓的CPU ID。在Windows NT/2000/XP 下,也可以用一个dongle,只要有dongle,就可以在其他计算机上执行,这样就不必限定在某台计算机上使用,而且适用于nodelocked 或是floating license 之使用者。详细说明请参考2.3.5 节。
2.3.1.1 用HDevelop 取得辨识资料
用demo 版的HDevelop 来取得辨识数据是最简单的方法。在主选单Help>About,会出现如下的一个窗口,最底下的数据就是关于您这部计算机的数据,像是网络卡卡号,CPU ID,dongle 号码等。
如果发生问题,既有的设备数据找不到,例如有网络卡而侦测不到,请参考6.5.3 来排除问题。
2.3.1.2 用lmhostid 来取得资料
lmhostid 是随着FLEXlm 的软件,在Windows 操作系统下,由DOS 下执行,在UNIX 系统中,则要切换目录,到$HALCONROOT/FLEXlm 下,再到对应您的硬设备的目录下(例如i586-Linux2.2)执行之。
要辨认一台计算机的网络卡号,键入lmhostid -
ether
Windows 系统下的输出画面例子如下
> lmhostid -ether
lmhostid - Copyright (C) 1989-2000 Globetrotter Software, Inc.
The FLEXlm host ID of this machine is "00e02958e36a"
请将ID,就是上面例中的"00e02958e36a"以及计算机的hostname 一起送给代理
商。
如果lmhostid 回传”fffffff f”,请依照6.5.3.1 节的方法来处理。
要辨认CPU ID,键入lmhostid –cpu64
> lmhostid -cpu64
lmhostid - Copyright (C) 1989-2000 Globetrotter Software, Inc.
The FLEXlm host ID of this machine is "0003-C1DE-01C3-E79F"
如果lmhostid 回传"",则可能是因为在BIOS 中CPU ID 的选项关了,可在重新启动时将其开启。
要检查dongle ID(限于Windows NT/2000/XP),则键入lmhostid -flexid
会得到如下例之输出
> lmhostid -flexid
lmhostid - Copyright (C) 1989-2000 Globetrotter Software, Inc.
The FLEXlm host ID of this machine is "FLEXID=7-36c79bd7"
注意,此时序号会写入dongle 中
2.3.2 Runtime license 和HALCON 的模块
HALCON 之运算符可分类成不同的模块,像是"Basic operators",或是"Image/Region/XLD management",用于所有HALCON 之功能,特别的像是"Background Estimation","1D Bar Code Reader"之类的,只用于特定的程序。使用runtime 版时可以只包含您需要的模块。
您的程序中用到了那些模块,有两种方式来检查。
在HDevelop 下执行的程序,可由选单下,File>Moduals,然后会出现一个如下图的窗口,其中就有使用到的模块名称,然后按"Save",即可将这些纪录存成.mod 文件,放在目前的工作目录下。
由C,C++,COM 所写成的应用程序,则需在程序结尾加入运算符get_moduals。
然后将确定需要的模块名称送到代理商。
图例您使用到的模块
2.3.3 安装license file
要使用HALCON 就要安装license file,这个档案必须放在%HALCONROOT%\license 下,档名需为license.dat,如果是用floatong license,您必须将这个档案复制到所有已安装HALCON 的计算机上,包括作为license verver 的计算机。
以下例子是一个nodelocked license file 的内容。
############################
# MVTec (ID: 0080c77161e2) #
############################
FEATURE MVTec_Halcon mvtecd 6.1 permanent 0 FC17B37961F326F957A8 \
VENDOR_STRING=65535 HOSTID=0080c77161e2 ck=23
FEATURE MVTec_HDevelop mvtecd 6.1 permanent 0 CC279389F3566E1D6363 \
VENDOR_STRING=65535 HOSTID=0080c77161e2 ck=32
图例nodelocked license,限用于某台计算机
您可以看到,档案中"FEATURE"接着HALCON 的版本名称,而license 是向下兼容的,举例来说,6.1 版的license 亦可以用于6.0 版。同时,向上亦可用于小改版的升级,例如6.1 版的license 可用于6.1.x 版。
#################################
# MVTec (ID: FLEXID=7-b285ff7f) #
#################################
FEATURE MVTec_Halcon mvtecd 6.1 permanent 0 3C574319AF86C4A5DE4A \
VENDOR_STRING=65535 HOSTID=FLEXID=7-b285ff7f ck=35
FEATURE MVTec_HDevelop mvtecd 6.1 permanent 0 7C772379E2D066930D10 \
VENDOR_STRING=65535 HOSTID=FLEXID=7-b285ff7f ck=245
图例nodelocked development license ,限用于特定dongle
#################################
# MVTec (ID: FLEXID=7-b285ff7f) #
#################################
FEATURE MVTec_Halcon mvtecd 6.1 permanent 0 3C574319AF86C4A5DE4A \
VENDOR_STRING=65535 HOSTID=FLEXID=7-b285ff7f ck=35
图例nodelocked runtime license,限用于特定dongle
2.3.4 floating license 之使用在之前的介绍中已有概略的介绍,首先,要有一台计算机当成license verver,安装一个名为
license manager daemon 的程序来检查网络中执行HALCON 之计算机之数目,再来,license file 要copy 到所有安装HALCON 之计算机,而且也要copy 到作为license verver 的计算机上(参考2.3.4.3)。
接着来看看一个典型的floating license。"SERVER"告诉FLEXlm 当作license server 计算机的名称,这个例子里,就是halconserver。还有网络卡号,以及port
number(27000)。
############################
# MVTec (ID: 0080c77161e2) #
############################
SERVER halconserver 0080c77161e2 27000
DAEMON mvtecd C:\Progra~1\MVTec\Halcon\FLEXlm\i586-nt4\mvtecd
FEATURE MVTec_Halcon mvtecd 6.1 permanent 2 4C72DB2EC0F315624FAE \
VENDOR_STRING=16383 ck=97
图例floating runtime license 的内容(限用于某台计算机)
某些情况下您可会想改变计算机的hostname,例如您用的是dongle-bound license,基于某些需要想把dongle 换到网络中另一台计算机上,或是您用限用于某网络卡的license,而您想把网络卡移到另一台计算机上。
您也可能会需要更改使用的port,例如默认的port 已被网络中某软件占用,但是要注意的,大部分的计算机中,port number 小于1024的,只有特定权限的使用者能更改。当您在网络中任一台计算机执行HALCON 时,license file 中的"SERVER"后接着的数据,诸如host name 和port number 等等,是用于让程序寻找联系license server,而在作为license server 的计算机上,port name 是作为启动license manager daemon 的依据,所以在计算机中,所有复制的档案内容必须相同。
在您做为license server 的计算机上,可能会需要修改daemon 的目录mvtecd,这目录通常如下
%HALCONROOT%\FLEXlm\%ARCHITECTURE%\mvtecd
(关于环境变量ARCHITECTURE 请看2.4 节)
由于license file 中没有环境变量数据,所以这个目录要自己新增。由于目录字符串中含有空白字符时会造成HALCON 的问题,所以当您将HALCON 装在像是c:\program
Files\MVTec\Halcon 下时,路径字符串应改为c:\progra~1\MVTec\Halcon。最后一点,license manager daemon 必须在开机时启动。
2.3.4.1 在Windows NT/2000/XP 下安装license manager daemon
在Windows 下,可以由安装程序来安装,然后他就会在重新启动以后自动启动,当然您也可以自行手动安装,这要在DOS 下键入(这是一整串指令)
"%HALCONROOT%\FLEXlm\i586-nt4\installs" -n "HALCON Licenses"
-c "%HALCONROOT%\license\license.dat"
-l "%HALCONROOT%\license\license.log"
-e "%HALCONROOT%\FLEXlm\i586-nt4\lmgrd.exe"
%HALCONROOT%即是安装的目录,在Windows 下,安装好后必须重开机。如果安装成功,一个称为HALCON 的service 会出现在控制面板下的系统管理工具的"服务"中出现。
要移除liscense manager daemon,键入如下之指令
"%HALCONROOT%\FLEXlm\i58-nt4\installs" -r -n "HALCON Licenses"
2.3.4.2 在UNIX 下安装license manager daemon
在UNIX 下,这个程序lmgrd 必须放在适当的启动档中,像是/etc/init.d/boot.local 或
/sbin/init.d/boot.local,诸如此类。这部分请参考您使用的操作系统手册。
在这个档案中加入下面一整行(要有lmgrd 的目录)
/etc/lmgrd -c $HALCONROOT/license/license.dat > $HALCONROOT/license/license.log 2>&1 &
注意,lmgrd 要由root 启动,否则不能正常的作业。
2.3.4.3 重新启动license manager daemon
如果您换了一个floating license,就要将daemon 重新启动。方法之一是重新启动计算机,如果您有管理者的权限,也可以用手动方式新启动。在Windiows 下,您只要在系统管理工具下的"服务"中,将"HALCON License"这个服务重新启动即可。
在UNIX 下,您可以终止lmgrd 这个process,然后再重新启动,启动的指令就是2.3.4.2 节中,加入启动档的那一行。
2.3.5 使用dongle
dongle 只有在windows 下才能使用,从6.0.2 版起,还提供了连接USB 的dongle。连接印表机埠的dongle,其ID 是以"FLEXID=6-"或"FLEXID=7-"开始,而USB dongle 的ID 是以"FLEXID=9-"起。
2.3.5.1 连接并行端口的dongle
就像2.1.1 节所叙述的,您可以让HALCON 安装驱动程序,要检查安装是否成功,可由装置管理员来检视是否有一个叫sentinel 的设备。
HALCON 也有一个辅助程序让您可以自行安装,设定,或是移除驱动程序。进到DOS 下,切换到%HALCONROOT%\FLEXlm\i568-nt4\flexid6-7\win_nt 目录下,执行setupx86.exe。要安装驱动程序,在主选单下选Functions>install,然后重新启动计算机。然后用上述的检查方法应该可以看到该项设备。要注意的是,您必须要有Administrator 的权限才能安装驱动程式。如果您没有权限,程序会也安装,并告诉您安装完成,而实际上无法作用。
要是计算机上有多个parallel port,则还要再调整驱动程序。
HALCON 的卸载程序并不会移除这个驱动程序(因为其他程序有可能用到),但是却会把这个安装程序移除,所以如果您要移除这个dongle 驱动程序,就要在您将HALCON 解除安装之前完成。这个安装程序是在CD 的FLEXlm\i586-nt4\flexid6-7\win_nt,有需要时可再叫用。
关于6.0.2 版的特别消息
如同在2.1.3 以及 2.2.1 节所叙述的注意事项,为避免出问题,建议以如下之程序进行安装。
手动方式解除旧的驱动程序。
用到的程序是setupx86.exe,位于%HALCONROOT%\FLEXlm\i586-nt4\dongle 下。
再来就有两个方式可以安装HALCON 6.0.2。
用2.2.1 节的方法来移除旧版的HALCON,然后将6.0.2 版和新的驱动程序一起安装。
用2.1.3 节的更新方法,也就是手动更新,用到的程序setupx86.exe 位在
%HALCONROOT%\FLEXlm\i568-nt4\flexid6-7\win_nt 下。
如果您在移除旧版的驱动程序前先移除了旧版的HALCON,这个setupx86.exe 也会被删除,但是它是位在CD 中FLEXlm\i586-nt4\dongle 下,若您没有CD,建议您重新安装旧版的HALCON。
2.3.5.2 USB dongle
如同2.1.1 节,所需要的驱动程序可在HALCON 安装时一起安装,安装是否成功,可由装置管理员中查看是否有新增以下两项装置Hardlock 以及HASP。随者操作系统的不同,您也可以用一个HALCON 随附的辅助程序来修改,设定,移除驱动程序。切换到DOS 下,切换到目录%HALCONROOT%\FLEXlm\i586-nt4\flexid9,有个程序hinstall.exe ,有下列指令可供显示,安装,移除等等。
hinstall 显示如何使用hinstall
hinstall -info 显使驱动程序的状态
hinstall -install 安装驱动程序
hinstall -remove 移除驱动程序
当然,必须要有Administrator 的权限才能安装。
由于HALCON 的卸载程序不会移除dongle 的驱动程序,但是会将安装程序hinstall.exe 移除,所以若是要移除这个驱动程序,就要在卸载HALCON 前进行。原始的程序在CD 中的位置位于FLEXlm\i586-nt4\flexid9。
2.4 设定
HALCON 需要设定的东西大部分都是环境变量,例如放置影像,放置extension package 的目录等等。要使用Parallel HALCON 时,每一台分担计算的计算机上都要做初始化(initialize),这部分会在5.1.1 说明。
2.4.1 Windows NT/2000/XP 下的设定。
安装程序Setup.exe 执行时会自动设定这些环境变量,像是%HALCONROOT%等,要查看变量的内容,可用控制面板下的"系统"中查看,或是修改,新增变量内容。若是变量内容含有不只一个项目,例如%PATH%可能含有数个目录,此时各个目录间就要以分号";"区隔之。此外,要在安装时同时修改建立这些变量,必须要有Administrator 的权限。
HALCONROOT
这是最重要的环境变量,指出了HALCON 安装的目录。典型的变量内容内容像是
C:\Program Files\MVTec\Halcon。根据这个变量,HALCON 得以到以下的子目录中寻找资料。
%HALCONROOT%\help
运算符的数据库位于此处。由HALCON 来存取有关运算符的资料。
%HALCONROOT%\doc\html\reference\hdevelop
在线辅助说明,只要有一个浏览器就可以阅读其内容。
%HALCONROOT%\lut
使用者自定义之look-up table。
%HALCONROOT%\ocr
存放了trained fonts。
%HALCONROOT%\license
license KEY 置于此,也就是license.dat 檔。
%HALCONROOT%\images
系统中没有HALCONIMAGES 这个变数时,HALCON 会到这个目录找寻影像。
HALCONIMAGES
这是告诉系统影像数据存放的地方,其中可以包含数个目录,但是要记得用分号区隔之。
ARCHITECTURE
HALCON 用这个变量来区别操作系统,在Windows 下,%ARCHITECTURE%即是设成
i586-nt4。
这个变量同时会在好几个地方出现,像是HALCON 的程序,hdevelop.exe,halcon.dll 等等,是置于%HALCONROOT%\bin\i586-nt4 下,要link 程序用的library 像是halcon.lib,位在
%HALCONROOT%\lib\i586-nt4 下。
HALCONEXTENSIONS
这个变量含的目录,是用户自定义的运算符所在位置(所谓的extension packages),每个package 中含有数个运算符,linked 到一个共享的library。还有一些说明文件,像是运算符的help,以及HTML 檔。安装extension package 请看2.5 节的安装方法。
HALCONSPY
如果在启动HALCON 前,系统中已有HALCONSPY 这个变数,那么在HALCON 启动时,一个工具程序HALCON Spy 也会启动。由运算符set_spy 也可以将其启动(参数为"mode","on"),两种启动方法的差异在于,有了
%HALCONSPY%这个变量,就可以监看一个linked 好的HALCON 程序,而不必再去修改。相关设定请参考6.4 节。
PA TH
安装时,%HALCONROOT%\bin\i586-nt4 和%HALCONROOT%\FLEXlm\i586-nt4 会被加到PATH 中。
2.4.2 UNIX 下的设定
在UNIX 下,不同的shells 设定环境变量的指令各不相同,例如setenv
下表列出了HALCON library 和HDevelop 要用到的环境变量列表。最好把这些指令加在一个login script 或是shell resource script 中,例如.cshrc 或是.profile 里。
HALCONROOT
这是最重要的环境变量,指出了HALCON 安装的目录。典型的变量内容内容像是
/usr/local/halcon 或/usr/halcon。根据这个变量,HALCON 得以到以下的子目录中寻找数据。
$HALCONROOT\help
运算符的数据库位于此处。由HALCON 来存取有关运算符的资料。
$HALCONROOT\doc\html\reference\hdevelop
在线辅助说明,只要有一个浏览器就可以阅读其内容。
$HALCONROOT\lut
使用者自定义之look-up table。
$HALCONROOT\ocr
存放了trained fonts。
$HALCONROOT\license
license KEY 置于此,也就是license.dat 檔。
$HALCONROOT\images
系统中没有HALCONIMAGES 这个变数时,HALCON 会到这个目录找寻影像。
HALCONIMAGES 这是告诉系统影像数据存放的地方,其中可以包含数个目录,但是要记
得UNIX 下要用冒号区隔之。
ARCHITECTURE
这个变量以一个简写表示了所用的处理器以及操作系统版本。例如i586-linux2.2,或是sparc-sun-solaris7。ARCHITECTURE 会出现在好几个地方,像是程序hdevelop 位在$HALCONROOT/bin/$ARCHITECTURE。把$HALCONROOT/bin/$ARCHITECTURE 加到