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输出结果,如下图:
总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 坐标旋转与坐标系旋转的区别