十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Visionpro 软件是一款非常好用的机器视觉软件,它降低了开发人员的入门门槛,一个简单的机器视觉项目,只需要拖拉窗口,设定下参数,就可以立刻完成部署上线,开发效率是非常高的。
创新互联是一家专业提供朗县企业网站建设,专注与成都网站设计、成都网站制作、H5开发、小程序制作等业务。10年已为朗县众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
但这种模式也会降低开发的灵活性,值得高兴的是Visionpro也帮我们考虑到了这点,可以通过VisionPro脚本来拓展我们需要的功能,该脚本可以由C#或者VB.NET来编写,无需再学习新的编程语言。这样使得Visonpro开发机器视觉项目变得更加高效和灵活。下面我么就来介绍一下VisionPro脚本的使用方式。
1.VisionPro脚本的目的
VisionPro脚本主要是用来辅助QuickBuild工程,灵活拓展QuickBuild工程应用。它通常与VisionPro代码一起或者代替VisionPro代码来运行。
2.什么情况下使用脚本
1.QuickBuild和应用程序向导不能实现你想要的功能的时候;
2.拓展QuickBuild和应用程序向导的功能。
3.VisionPro脚本分为:作业脚本,工具组脚本,工具块脚本;
1.作业脚本
(1.)作业脚本用途
通过作业脚本,我们可以访问作业属性,对图像采集参数进行设置和控制图像采集过程。
(2.)如何进入图像脚本编程界面
1.打开作业
2.点击配置-作业属性-编辑脚本
这里有C#和VB.Net脚本可以供选择,可以根据自己专长来选择,案例中我们都以c#为首选语言。
3.选择C#脚本,进入编译区域
2.工具组脚本
(1.)工具组脚本用途
控制工具组里工具的执行顺序,拓展工具无法实现的功能。
(2.)如何进入工具组脚本编程界面
1.打开作业
2.点击创建-编辑脚本工具-C#脚本
3.工具块脚本
(1.)工具块脚本用途
可以将多个工具封装成一个工具块,该工具块具有特殊功能和自定义的输入输出端口,同时工具块可以被其它程序复用。
(2.)如何进入工具组脚本编程界面
1.打开作业
2.进入作业-添加工具块工具
3.进入工具块-添加c#脚本-进入脚本编译区域
这里有C#和VB.NET两种脚本语言,同时每种脚本又有简单和高级两种脚本。
工具块(ToolBlock)脚本结构和工具组(ToolGroup)脚本结构大致一致,这里就不在复述了,可以参考工具组脚本结构学习。
开始做Halcon的上位机,选用Visual Studio 10.0平台。
C#
第一步:
Visual Studio 10.0设置引用HalconDotNet.dll
01.新建项目
02.选择Visual C#
03.修改文件名
04.确认
第二步
Visual Studio 10.0设置引用HalconDotNet.dll
01.选择“解决方案资源管理器”
02.选择“引用”,右键
03.选择“添加引用”
第三步
Visual Studio 10.0设置引用HalconDotNet.dll
01.在添加引用选项卡选择浏览
02.选择路径:X:\Program Files\MVTec\HALCON-10.0\bin\dotnet20
03.选择“HalconDotNet.dll”
04.确认
第四步
Visual Studio 10.0设置引用HalconDotNet.dll
01.选择“工具箱”
02.选择“所有工具”或任意工具控件,右键
03.选择“选择项”
第五步
Visual Studio 10.0设置引用HalconDotNet.dll
选择Halcon图像控件
Visual Studio 10.0设置引用HalconDotNet.dll
还有VB的设置,如下图:
Visual Studio 10.0设置引用HalconDotNet.dll
01.选择项目名称
02.点击显示全部文件,取消隐藏,就可以看到引用
03.引用,邮件
04.添加,之后的步骤和C#一样
Visual Studio 10.0设置引用HalconDotNet.dll
选择工具控件,步骤和C#基本一样。
VB的第二张图,步骤如下
01.选择“工具箱”
02.选择“所有工具”或任意工具控件,右键
03.选择“选择项”
04.在“.net framwork组件”的选项卡中,选择浏览
05.出来的对话框中,选择X:\Program Files\MVTec\HALCON-10.0\bin\dotnet20
06.选择“HalconDotNet.dll”
07.确认
08.这时候的工具栏的控件是HWinwow 控件。
kamuixiao :
X:\Program Files\MVTec\HALCON-10.0\bin\dotnet20
路径下的无法使用,在.net framework组件无法找到
X:\Program Files\MVTec\HALCON-10.0\bin\dotnet35
路径下的可用,在.net framework组件下可以找到,并且在工具箱上能够找到并使用,但是功能无法实现,如下图
我不作其他动作,程序代码内容仅是运行时候读取一张图片,
在调试的时候能够运行,但读不到图片……楼主在VB.NET环境下正常运行了吗?求解~
Visual Studio 10.0设置引用HalconDotNet.dll
x8515618 :
定义错了
dim m_hWindow As Htuple '这是一个句柄,不是窗体控件
x8515618 :
Dim m_hWindow As Htuple = Nothing
kamuixiao :
谢谢楼上的建议,但是我试了下发现仍然不行,我觉得问题不是出在这里,不知道使用VB.NET的各位有没有遇到过,反正我是没能正常实现过一次的,输出显示的错误情况如图:
Visual Studio 10.0设置引用HalconDotNet.dll
x8515618 :
你只是读取了图片,都没有显示图片呢
灵峤 lencue :
你最开始新建项目的时候选择的“.net框架”版本是多少的?.net 2.0就用dotnet20文件夹,3.5就用dontnet35文件夹,你再查看一下,会不会是这个问题,看能不能解决。
irun999 :
请问楼主,用在VS2008中用C#读入一直比较大的图片的时候只是显示部分图片,如何解决?
灵峤 lencue :
dev_resize_window_fit_image(ho_Image, 0, 0, 300, 400);
用这个算子,在C#的program.cs中可以用的,后面的300,400就是显示这个图片的大小的,会被缩放到这个比例。
irun999 :
请问在VS 2005 C# 处理视频,程序老是死掉,怎么办?视频无法实时显示。 是不是视频太大了,VS2005处理不够来?该怎么办?
灵峤 lencue :
采用C#的多线程,具体怎么使用,我还在学习中,要是有进展,再一起讨论。
好吧,我写漏了,但事实上我把显示补上,然后按照兄台所说修改定义后仍然没能成功!~附图:
Visual Studio 10.0设置引用HalconDotNet.dll
irun999 :
今天下午发现视频无法显示是因为hdevelop导出程序的死循环函数里没有 HOperatorSet.DispObj 显示函数。但是关闭程序就会出现vshost.exe无响应。这个问题可能得多线程解决了。
Private Const WS_CHILD = H40000000
Private Const WS_VISIBLE = H10000000
Private Const WM_CAP_START = H400
Private Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
Private Const WM_CAP_SET_SCALE = WM_CAP_START + 53
Private Const WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52
Private Const WM_CAP_SET_PREVIEW = WM_CAP_START + 50
Private Declare Function capCreateCaptureWindowA Lib "avicap32.dll" ( _
ByVal lpszWindowName As String, _
ByVal dwStyle As Long, _
ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Integer, _
ByVal hWndParent As Long, ByVal nID As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Private Sub Form_Load()
'建立采集窗口(不显示窗口,处理后显示到PIC控件)
uwndc = capCreateCaptureWindowA("", WS_VISIBLE Or WS_CHILD, 0, 0, 320, 240, Me.hWnd, 0)
'连接
SendMessage uwndc, WM_CAP_DRIVER_CONNECT, 0, 0
'Scale开
SendMessage uwndc, WM_CAP_SET_SCALE, True, 0
'显示刷新MS
SendMessage uwndc, WM_CAP_SET_PREVIEWRATE, 40, 0
'用予览方式显示(特殊需要,不显示予缆)
SendMessage uwndc, WM_CAP_SET_PREVIEW, True, 0
End Sub
上述代码就可以实现 但是要注意相应的控件是否存在 不存在的 你自己画出来
HALCON对于机器视觉的学习者、开发者而言并不陌生,称其为机器视觉领域第一软件,亦无可厚非。
HALCON对于视觉系统的控制、图像的处理和分析都能够较好的实现,尤其是各种图像处理算法。但就其本身而言,开发用户界面并不理想。用户界面以及对于其他底层的控制,比如和底层电路板、PLC等的控制和通信,可通过VC++、VB等进行开发。方便的是,HALCON恰恰能够被这些开发工具所调用,它支持C、C++、VB、JAVA等等。
刚开始结合VC++结合HALCON进行学习和开发时,因为软件方面的薄弱,对如何在VC++中如何调用HALCON感到不知所措,也在网上找了一些资料,资料较少,基本内容相同,或许能用,但始终对于笔者个人而言不太灵光。后来在一位软件同事的指导下,对其有了较为深刻的了解,其实说到底对软件工程师而言这是一件很简单的事,也就是将HALCON的库导入VC++。
以下,针对初学者一步步介绍,以MFC作为开发工具。
在Visual Studio中新建项目选择Visual C++下的MFC,其中的MFC应用程序,建立过程不赘述。本文以Visual Studio 2005为例。
打开HALCON安装目录(以HALCON7.0为例,后面的版本也相同),如下图1所示:
将其中的include文件夹整个拷贝至所建MFC项目工作目录下,如下图2所示:
同样,将HALCON的LIB文件拷贝到所建MFC项目工作目录下,因使用C++进行开发,所以选择X:Program FilesMVTecHALCONlibi586-nt4下的halconcpp.lib,这里X:为安装盘符
打开stdafx.h,在文件中空白位置处,加入
#include "include/cpp/HalconCpp.h"
#prama comment(lib,"halconcpp.lib")
下一步,点击项目下的属性,如下图6所示:
点开配置属性中的C/C++,如下图7所示:
当点在附加包含目录右侧空白框时,会出现的图标,点开,如下图8所示:
点击新建行,将所建MFC项目工程目录下的include文件夹的地址输入,也就是刚才我们拷贝过去的那个文件夹
最后一步,在需要使用HALCON库的地方,将其头文件导入,以****Dlg.cpp为例
这样我们就算成功在VC++/MFC中导入了HALCON库文件,就可以调用HALCON的函数,使用其强大的算法。另外,单纯执行上述步骤后,按F5启动调试,应该是不会有任何的ERROR和WARNING的。此方法同样适用于VB,在此不赘述,VB的开发者可自行尝试。
一般二次开发用vb.net或者c#即可,如果想要自己写算法做开发,或者定制现有的算法,建议使用C++