调用halcon引擎有两个直接的好处:

  • 避免C# 与halcon代码混编时可能产生的内存泄露问题

  • 修改halcon程序时不用重新编译C#

勇哥写了一个示例,详细的应用感受和缺点限制勇哥会持续做相关的总结给大家分享。

对于halcon17来说,要运行下面的程序,你要引用

C#

halcondotnet.dll
hdevenginedonet.dll

C#

using HalconDotNet;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{public partial class Form1 : Form{private HDevEngine engine = new HDevEngine();private HDevProgramCall programCall;private string programPath;private string procedurePath;private HDevOpMultiWindowImpl MyHDevOperatorImpl;public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){var path1 = "drawCircle";if (initialengine(path1)){loadengine(); inspectengine();}}public bool initialengine(string filename){programPath = System.Environment.CurrentDirectory + @"\" + filename + ".hdev";procedurePath = System.Environment.CurrentDirectory + @"\";if(!File.Exists(programPath)){MessageBox.Show("file not exist");return false;}if (!HalconAPI.isWindows){programPath = programPath.Replace("\"", "/");procedurePath = procedurePath.Replace("\"", "/");}engine.SetProcedurePath(procedurePath);// viewPort.HalconWindow.SetLineWidth(4);MyHDevOperatorImpl = new HDevOpMultiWindowImpl(hWindowControl1.Handle);engine.SetHDevOperators(MyHDevOperatorImpl);return true;}public void loadengine(){try{HDevProgram program = new HDevProgram(programPath);programCall = new HDevProgramCall(program);}catch { }}public void disposeengine(){try{programCall.Dispose();}catch { }}public void inspectengine(){try{programCall.Execute();}catch { }}}
}

halcon代码如下,只是简单的画了一个圆。

C#

px:=280
py:=300
r:=200xary:=[]
yary:=[]
step:=2
for Index := 0 to 360/step by stepx:=px+px/2*cos(rad(step*Index+step))y:=py+py/2*sin(rad(step*Index+step))xary[Index/step]:=xyary[Index/step]:=ydisp_polygon(200000, xary, yary)
endfor

C#中调用halcon引擎来执行hdev程序相关推荐

  1. Halcon初学者知识 【13】如何在MFC中调用Halcon代码

    要知道如何在MFC中调用Halcon代码,需要以下知识点: 在VC++2019的工程中,配置Halcon环境[请看此文] Halcon代码如何导出成C++代码 如何拆解halcon转换成C++的代码, ...

  2. C#调用 Halcon引擎执行代码

    Halcon引擎可以直接执行halcon代码,把halcon程序当做C#的一个方法来调用,这样可以减轻C#这边的程序负担,而且可以避免内在泄露等bug的出现.还有一种好处是方便调试视觉代码,你只需要启 ...

  3. JavaScript中的JS引擎的执行机制

    为什么JavaScript是单线程? Javascript引擎是单线程机制,首先我们要了解Javascript语言为什么是单线程 JavaScript的主要用途主要是用户互动,和操作DOM.如果Jav ...

  4. python执行bat文件_Python中调用PowerShell、远程执行bat文件实例

    python调用本地powershell方法 1.现在准备一个简陋的powershell脚本,功能是测试一个IP列表哪些可以ping通: function test_ping($iplist) { f ...

  5. java调用exe_Windows系统中Java调用cmd命令及执行exe程序的方法

    Java调用cmd命令,并输出显示信息: package com.anxin.cmd.test; import java.io.BufferedReader; import java.io.Input ...

  6. TFS2017持续发布中调用PowerShell启停远程应用程序

    目前团队项目中有多个Web.服务以及与大数据平台对接接口等应用,每次的发布和部署采用手工的方式进行.停止应用程序,拷贝发布包,启动应用程序,不停的循环着,并且时不时地会出现一些人为错误性问题.这种模式 ...

  7. java访问其它服务器,一个Java Web应用程序是否可以在tomcat服务器的同一本地主机中调用另一个Java Web应用程序...

    i am trying to deploy two web applications say appA and appB in same local host tomcat server and wh ...

  8. java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

  9. java 执行js脚本_java中调用js脚本

    JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...

最新文章

  1. 【CV】10分钟理解Focal loss数学原理与Pytorch代码
  2. 【COCOS2DX隐藏IOS7状态栏】通过添加PLIST KEY隐藏IOS7状态栏
  3. 1027. 打印沙漏(20)
  4. SLF4J: Class path contains multiple SLF4J bindings.
  5. 基于arm-linux的防火墙设计,基于ARM9的Linux驱动开发及防火墙设计
  6. CodeWithMosh--mysql 学习笔记(2)
  7. 极简静态 Web 服务器
  8. 【TWVRP】基于matlab遗传算法求解多车场带时间窗的车辆路径规划问题【含Matlab源码 1035期】
  9. 精美绝伦的KShong GHOST Windows7-Pro 2010幸福版
  10. keil安装GD32 pack包安装不上 不显示 没有了
  11. TensorFlow 核心流程剖析 -- 2 神经网络模型的构建、分割和优化
  12. 各种说明方法的答题格式_说明方法作用答题格式
  13. 前端开发工程师就业时应该选择大公司还是小公司?这是我听过最靠谱的答案!
  14. vue-bilibili学习笔记
  15. python做一个大鱼吃小鱼_Python精灵模块制作的大鱼吃小鱼游戏
  16. GameofMir引擎架设传奇服务器【1:架设服务端】
  17. Java打印乘法口诀表(任何数)
  18. pinyin4j使用示例(支持多音字)
  19. 发布H5时,提示文件查找失败
  20. mysql查看最大连接数_MySQL查看最大连接数和修改最大连接数

热门文章

  1. hdu5489 Removed Interval dp+线段树优化
  2. FM实现F4帮助系列三:弹出框多筛选…
  3. 自己动手编写一个ajax extender
  4. 使用jQuery清空表单
  5. 20141126-解决联网问题-笔记
  6. 48个越吃越瘦的诀窍 - 生活至上,美容至尚!
  7. 算法 --- 顺序查找、二分查找的js实现
  8. PHP 实现随机字符串,可作为随机密码
  9. ES6-9 对象密封4种方式、assign、取值函数的拷贝
  10. Exchange Server 2016管理系列课件39.新建本地移动请求