首页

halcon HDevEngine功能

c#

2020-11-12

目的://此示例程序显示如何使用类HDevEngine和HDevOpMultiWindowImpl //来实现鳍检测应用程序。 
//几乎所有应用程序的功能都包含在// HDevelop程序fin_detection.hdev中,该程序可以在//目录hdevelop中找到。 
//当您单击按钮Load时,加载HDevelop程序,当您单击//执行它时执行。 
// HDevOpMultiWindowImpl类实现了HDevelop的内部//运算符。

27.2例子
本节介绍如何使用基于C#和Visual Basic .NET的示例应用程序的HDevEngine / .NET,它们位于子目录 %HALCONEXAMPLES%\ hdevengine \ c#和 %HALCONEXAMPLES%\ hdevengine \ vb.net。在下文中,我们仅描述C#示例; 除了两种语言之间的标准差异外,Visual Basic .NET版本是相同的。此外,与C#版本相比,Visual Basic .NET版本不包含对Linux的支持。

执行HDevelop程序(“执行HDevelop程序”部分),
执行HDevelop程序(“执行HDevelop程序”一节)和
显示操作员(“显示”部分),
错误处理(“错误处理”部分),和
多线程(“创建多线程应用程序”一节)。
27.2.1执行HDevelop程序
在本节中,我们将介绍如何使用HDevEngine加载和执行HDevelop程序。代码片段来自示例应用程序 ExecProgram,它检查塑料部件的边界是否有鳍。图27.1显示了该应用程序的屏幕截图; 它包含两个用于加载和执行HDevelop程序的按钮。

 图片/ exec_program_dotnet_h12
图27.1:执行检测边界上的鳍的HDevelop程序。

27.2.1.1第1步:初始化
首先,我们创建主HDevEngine类HDevEngine的全局实例 。

private HDevEngine MyEngine = new HDevEngine();
加载表单后,我们将路径存储到HDevelop程序并使用方法SetProcedurePath设置外部过程路径:

String ProgramPathString;

private void ExecProgramForm_Load(object sender,System.EventArgs e)
{
  string halconExamples = HSystem.GetSystem(“example_dir”);
  string ProcedurePath = halconExamples @“\ hdevengine \ procedures”;

  ProgramPathString = halconExamples
                      @ “\ hdevengine \ hdevelop \ fin_detection.hdev”;
  if(!HalconAPI.isWindows)
  {
    ProcedurePath = ProcedurePath.Replace(’\\’,’/’);
    ProgramPathString = ProgramPathString.Replace(’\\’,’/’);
  }
  MyEngine.SetProcedurePath(ProcedurePath);
}
请注意,只有在HDevelop程序调用外部过程时才需要后者。

27.2.1.2第2步:加载程序
单击按钮加载HDevelop程序时,将创建HDevProgram类的实例,并将程序路径作为参数。此外,创建HDevProgramCall的实例供以后使用。构造函数中发生的异常(例如,因为未正确指定文件名)是使用标准C#错误处理机制处理的:

private void LoadBtn_Click(object sender,System.EventArgs e)
{
  尝试
  {
    HDevProgram Program = new HDevProgram(ProgramPathString);
    ProgramCall = new HDevProgramCall(Program);
  }
  catch(HDevEngineException Ex)
  {
    MessageBox.Show(Ex.Message,“HDevEngine异常”);
    返回;
  }
  catch(例外)
  {
    返回;
  }

  //启用执行按钮
  ExecuteBtn.Enabled = true;
}
有关错误处理的更多信息,请参见 “错误处理”部分。

27.2.1.3第3步:执行程序
单击按钮执行程序时,将调用方法mHDEExecuteName:

private void ExecuteBtn_Click(object sender,System.EventArgs e)
{
  尝试
  {
    尝试
    {
      ProgramCall.Execute();
    }
    catch(HDevEngineException Ex)
    {
      MessageBox.Show(Ex.Message,“HDevEngine异常”);
      返回;
    }
  }
  catch(例外)
  {
  }
}
27.2.1.4第4步:获得结果
这就是执行HDevelop程序所需要做的一切。您还可以使用方法GetCtrlVarTuple访问其“结果”,即其变量。在示例程序中,查询提取的fin的区域,然后显示:

双FinArea;
FinArea = ProgramCall.GetCtrlVarTuple(“FinArea”);
Window.SetTposition(150,20);
Window.WriteString(“Fin Area:”);
请注意,只有在程序终止时才能访问程序变量。

27.2.1.5概述:显示结果
如何在程序运行时显示结果将在“显示”部分中介绍 。

27.2.2执行HDevelop程序

资源下载此资源下载价格为4D币(VIP免费),请先
资源文件列表
ExecProgram/source/AssemblyInfo.cs , 2426
ExecProgram/source/ExecProgramForm.cs , 8753
ExecProgram/source/ExecProgramForm.resx , 6017
ExecProgram/vs_interface/.vs/ExecProgram/v15/.suo , 53248
ExecProgram/vs_interface/.vs/ExecProgram/v15/Server/sqlite3/db.lock , 0
ExecProgram/vs_interface/.vs/ExecProgram/v15/Server/sqlite3/storage.ide , 499712
ExecProgram/vs_interface/.vs/ExecProgram/v15/Server/sqlite3/storage.ide-shm , 32768
ExecProgram/vs_interface/.vs/ExecProgram/v15/Server/sqlite3/storage.ide-wal , 4136512
ExecProgram/vs_interface/bin/Debug/ExecProgram.exe , 9728
ExecProgram/vs_interface/bin/Debug/ExecProgram.pdb , 19968
ExecProgram/vs_interface/bin/Debug/halcon.dll , 32320568
ExecProgram/vs_interface/bin/Debug/halcondotnet.dll , 1271352
ExecProgram/vs_interface/bin/Debug/halcondotnet.xml , 4070318
ExecProgram/vs_interface/bin/Debug/hdevenginedotnet.dll , 54840
ExecProgram/vs_interface/bin/Debug/hdevenginedotnet.xml , 42154
ExecProgram/vs_interface/bin/x86/Debug/ExecProgram.exe , 9728
ExecProgram/vs_interface/bin/x86/Debug/ExecProgram.pdb , 19968
ExecProgram/vs_interface/bin/x86/Debug/halcon.dll , 32320568
ExecProgram/vs_interface/bin/x86/Debug/halcondotnet.dll , 1271352
ExecProgram/vs_interface/bin/x86/Debug/halcondotnet.xml , 4070318
ExecProgram/vs_interface/bin/x86/Debug/hdevenginedotnet.dll , 54840
ExecProgram/vs_interface/bin/x86/Debug/hdevenginedotnet.xml , 42154
ExecProgram/vs_interface/ExecProgram.csproj , 4933
ExecProgram/vs_interface/ExecProgram.sln , 1473
ExecProgram/vs_interface/obj/Debug/DesignTimeResolveAssemblyReferences.cache , 753
ExecProgram/vs_interface/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache , 6362
ExecProgram/vs_interface/obj/Debug/ExecProgram.csproj.CopyComplete , 0
ExecProgram/vs_interface/obj/Debug/ExecProgram.csproj.CoreCompileInputs.cache , 42
ExecProgram/vs_interface/obj/Debug/ExecProgram.csproj.FileListAbsolute.txt , 4123
ExecProgram/vs_interface/obj/Debug/ExecProgram.csproj.GenerateResource.cache , 867
ExecProgram/vs_interface/obj/Debug/ExecProgram.csprojAssemblyReference.cache , 30980
ExecProgram/vs_interface/obj/Debug/ExecProgram.exe , 9728
ExecProgram/vs_interface/obj/Debug/ExecProgram.ExecProgramForm.resources , 180
ExecProgram/vs_interface/obj/Debug/ExecProgram.pdb , 19968
ExecProgram/vs_interface/obj/Debug/ExecProgram.Properties.Resources.resources , 180
ExecProgram/vs_interface/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll , 3584
ExecProgram/vs_interface/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache , 6257
ExecProgram/vs_interface/obj/x86/Debug/ExecProgram.csproj.CopyComplete , 0
ExecProgram/vs_interface/obj/x86/Debug/ExecProgram.csproj.CoreCompileInputs.cache , 42
ExecProgram/vs_interface/obj/x86/Debug/ExecProgram.csproj.FileListAbsolute.txt , 2524
ExecProgram/vs_interface/obj/x86/Debug/ExecProgram.csproj.GenerateResource.cache , 867
ExecProgram/vs_interface/obj/x86/Debug/ExecProgram.exe , 9728
ExecProgram/vs_interface/obj/x86/Debug/ExecProgram.ExecProgramForm.resources , 180
ExecProgram/vs_interface/obj/x86/Debug/ExecProgram.pdb , 19968
ExecProgram/vs_interface/obj/x86/Debug/ExecProgram.Properties.Resources.resources , 180
ExecProgram/vs_interface/obj/x86/Debug/TempPE/Properties.Resources.Designer.cs.dll , 3584
ExecProgram/vs_interface/Properties/Resources.Designer.cs , 2857
ExecProgram/vs_interface/Properties/Resources.resx , 5350
ExecProgram/vs_interface/Properties/Settings.Designer.cs , 1111
ExecProgram/vs_interface/Properties/Settings.settings , 249
ExecProgram/vs_interface/readme.txt , 4333
ExecProgram/vs_interface/UpgradeLog.htm , 42744
没有账号? 忘记密码?

社交账号快速登录