C++调用Halcon引擎,附加到进程调试

C++调用Halcon引擎
1、初始化Halcon引擎,HDevEngine();
2、设置程序路径,指定到devp上一级;
3、通过外部或本地程序创建程序,HDevProcedure();
4、创建调用程序实例,HDevProcedureCall();
(如果需要启动调试
4.5、通过HDevEngine 调用调试服务;
)
5、设置程序输入参数,HDevProcedureCall的Set方法设置输入参数;
6、执行程序,通过ProcedureCall调用Execute方法;
7、获取程序输出参数,HDevProcedureCall的Get方法获取输出参数;
(如果需要启动调试
8、通过HDevEngine 关闭调试服务;
)
其他:
1、通过HDevProcedure的方法可以查看输入输出参数信息,如参数个数,参数名称等;

 

C++代码

#include<iostream>
#include<HalconCpp.h>
#include<HDevEngineCpp.h>
#include"my_error_output.h"

using namespace HalconCpp;
using namespace HDevEngineCpp;
using namespace std;
void LoadProcedure(string procedureName); //函数声明

HDevEngine* gMyEngine; //Halcon引擎
HDevProcedure* gProgram; //创建程序
HDevProcedureCall* gProcedureCall; //调用程序

//变量
string ProcedureName;
HTuple paramKey, paramVal, dictHandle;

#if 1

int main()
{
gMyEngine = new HDevEngine();
gMyEngine->SetProcedurePath("E:/Code/L/cpp/Cpp/HalconEngine/porcedure"); //devp文件路径
LoadProcedure("test");
return 0;
}
#endif // 0

void LoadProcedure(string procedureName)
{
ProcedureName = procedureName;
try
{
gProgram = new HDevProcedure(procedureName.c_str());
gProcedureCall = new HDevProcedureCall(*gProgram);

printf("Strat Debug Server\n");
gMyEngine->StartDebugServer(); //启动调试服务

gProcedureCall->SetWaitForDebugConnection(true); //★等待debug连接,程序会在Execute步骤等待,直至Halcon附加到进程
printf("Wait For Connection...\n");

#pragma region Test 调试函数 只作显示

//cout << "输入参数个数: " << gProgram->GetInputCtrlParamCount() << endl;
//cout << "输出参数个数: " << gProgram->GetOutputCtrlParamCount() << endl;

//for (size_t i = 1; i <= gProgram->GetInputCtrlParamCount(); i++)
//{
// cout << gProgram->GetInputCtrlParamName(i) << endl;
//}

//for (size_t i = 1; i <= gProgram->GetOutputCtrlParamCount(); i++)
//{
// cout << gProgram->GetOutputCtrlParamName(i) << endl;
//}

#pragma endregion

gProcedureCall->SetInputCtrlParamTuple("Param1", "test"); //设置输入参数

gProcedureCall->Execute(); //执行程序

HTuple hv_Result;
hv_Result = gProcedureCall->GetOutputCtrlParamTuple("Result"); //获取输出参数
string str_Result = (string)hv_Result[0].S();
printf(str_Result.c_str());

gMyEngine->StopDebugServer(); //停止调试服务

}
catch (HDevEngineException ex)
{
DispMessage(ex.Message()); //Halcon例程自带错误函数

}

}

Halcon hdvp代码

try

*输入

Param1:=Param1

Result:='show:'+Param1


catch (Exception)

Result:=-1

ErrorString:=Exception

endtry

return ()

 

hdvp参数

 

效果

1、运行cpp程序后

 

2、打开hdvp文件,点击左上角-执行,选择-附加到进程

 调式服务器默认确实即可。

 链接成功后,可以F6单步调试hdvp文件。

 

运行成功后在控制台显示hdvp输出结果,如下图:

 

总结

百度网盘代码链接,提取码:vp42

 

posted @   QuincyYi  阅读(1112)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-09-26 坐标旋转与坐标系旋转的区别

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示