设置首页收藏本站在线聊天
授权版本:2024_09
开启左侧

求助,C#版本的devengine,开启调试后,修改了halcon脚本,重新调试脚本是旧的

[复制链接]
osimida 发表于 2023-6-13 17:40:01 | 显示全部楼层 |阅读模式
如题

代码非常简单,load的时候,HDevProgram都是新的了,执行的时候 HDevProcedure 也是新建的对象,调试模式可以看到对象都是新的,但是远程调试连上去,显示的代码时旧的
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using HalconDotNet;

  12. namespace HalconWinFormDebug
  13. {
  14.     static class ExtendHalcon
  15.     {
  16.         public static void PrintAddress(this HDevProgram program)
  17.         {
  18.         }
  19.     }
  20.     public partial class Form1 : Form
  21.     {
  22.         public Form1()
  23.         {
  24.             InitializeComponent();
  25.         }

  26.         private void Form1_Load(object sender, EventArgs e)
  27.         {

  28.         }

  29.         HDevEngine engine;
  30.         HDevProgram program;
  31.         HDevProcedure procedure;
  32.         HDevProcedureCall procedureCall;
  33.         void load()
  34.         {
  35.             program = new HDevProgram();
  36.             string path = textBox1.Text;
  37.             string b = System.Environment.CurrentDirectory;
  38.             try
  39.             {
  40.                 System.Diagnostics.Debug.WriteLine(path);
  41.                 program.LoadProgram(path);
  42.             }
  43.             finally
  44.             {
  45.                 System.Environment.CurrentDirectory = b;
  46.                 System.Diagnostics.Debug.WriteLine("program loaded: {0}", program.IsLoaded());
  47.             }
  48.             System.Diagnostics.Debug.WriteLine(engine.GetLoadedProcedureNames());
  49.             System.Diagnostics.Debug.WriteLine(engine.GetProcedureNames());
  50.         }
  51.         /// <summary>
  52.         /// Start the f*cking debug server
  53.         /// </summary>
  54.         /// <param name="sender"></param>
  55.         /// <param name="e"></param>
  56.         private void button1_Click(object sender, EventArgs e)
  57.         {
  58.             if (engine == null)
  59.                 engine = new HDevEngine();

  60.             engine.StopDebugServer();
  61.             engine.StartDebugServer();
  62.             System.Diagnostics.Debug.WriteLine("server started.");

  63.             load();
  64.         }
  65.         
  66.         private void debug_Click(object sender, EventArgs e)
  67.         {

  68.             System.Diagnostics.Debug.WriteLine("start debug: {0}", program.IsLoaded());
  69.             procedure = new HDevProcedure(program, "test");
  70.             procedureCall = procedure.CreateCall();
  71.             procedureCall.SetWaitForDebugConnection(true);
  72.             procedureCall.Execute();
  73.             System.Diagnostics.Debug.WriteLine("debug ended");
  74.         }

  75.         private void button2_Click(object sender, EventArgs e)
  76.         {
  77.             // a new program every click
  78.             load();
  79.         }
  80.     }
  81. }
复制代码


奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2023-6-13 19:06:40 | 显示全部楼层
重新重启程序,重新加载改动的脚本
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| osimida 发表于 2023-6-14 08:58:12 | 显示全部楼层
Criss 发表于 2023-6-13 19:06
重新重启程序,重新加载改动的脚本

必须要重新启动吗,感觉这个是halcon一直的bug
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| osimida 发表于 2023-6-14 08:59:39 | 显示全部楼层
如果旧脚本比较长,调试可以跑完,如果比新的短,就会报错,感觉是hdevengine发送给调试器的内容一直没更新,但是调试还是用的新的脚本
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
dianke09 发表于 2023-6-14 17:00:02 | 显示全部楼层
1.png
更新引擎的时候先卸载所有,再设置hdpl路径,可以用这种方法不用重启软件
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| osimida 发表于 2023-7-5 11:27:33 | 显示全部楼层
dianke09 发表于 2023-6-14 17:00
更新引擎的时候先卸载所有,再设置hdpl路径,可以用这种方法不用重启软件 ...

感谢!
试了一下,还是不行,我用HProgram来加载的脚本
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表