设置首页收藏本站
开启左侧

引发了"HalconDotNet.HTupleAccessException"类型的异常

[复制链接]
xixiyinhang 发表于 2018-11-24 22:02:18 | 显示全部楼层 |阅读模式
本帖最后由 xixiyinhang 于 2018-11-25 23:59 编辑

1124.png
如上图所示的错误。我写的halcon程序是正确的,能够正常检测出结果和点位数据。但是导出成C#之后
却出现了这样的错误,究竟是哪里出了问题?
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
绝地武士 发表于 2018-11-24 23:49:31 | 显示全部楼层
你这个变量类型是空的,长度为0,没有设置值进去。

HTuple是一个通用类型,里面可以传入Double和Double数组,Integer和Integer数组,String和String数组,Long和Long数组,由于你目前只是初始化,没有赋值,所以访问对应类型的数据都是空的也就是引发访问异常错误, 你可以看到Type是EMPTY为空状态且长度Length是0!当你赋值以后那么EMPTY就是自动的类型了,长度也变了,如果你写入的是字符串你可以发现S以及SArr就有值了!但是要注意你写入的是什么类型读取的时候就要根据TYPE判断然后调用对应的方法读取,比如S以及SArr即可,否则将再次引发访问异常!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| xixiyinhang 发表于 2018-11-25 21:20:59 | 显示全部楼层
绝地武士 发表于 2018-11-24 23:49
没有问题的,HTuple是一个通用类型,里面可以传入Double和Double数组,Integer和Integer数组,String和Stri ...

1212121212121212.png
虽然我很努力的的看来好几遍你的回答,但还是十分的懵逼,完全不知道到底错哪里了。
只要是涉及到HTuple类型的全部出现了错误,比如HOperatorSet.RegionFeatures(ho_RegionClosing1, "width", out hv_velwidth);
hv_velwidth的结果竟然是空的,这到底是哪里出了错,我需要怎么改呢?郁闷啊!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
绝地武士 发表于 2018-11-25 21:38:58 | 显示全部楼层
xixiyinhang 发表于 2018-11-25 21:20
虽然我很努力的的看来好几遍你的回答,但还是十分的懵逼,完全不知道到底错哪里了。
只要是涉及到HTuple ...

哈哈哈,根据我的经验,你的那个ho_RegionClosing1可能是空值!你安装下Halcon的变量检测插件或者用AreaCenter去测试下区域是不是面积为0,我估计就是区域原因,所以导致数据长度为0没有得到值!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| xixiyinhang 发表于 2018-11-25 22:18:19 | 显示全部楼层
更奇怪的是 例如HOperatorSet.GetImageSize(ho_image, out hv_Width, out hv_Height);,这个算子计算的HTUple类型的数据hv_Width和hv_Height就没有错误,
而HOperatorSet.MinMaxGray(ho_Domain, ho_ImageSurface, 0, out hv_Min, out hv_Max,out hv_Range); 却出现了HTUple类型的结果hv_Min、hv_Max、hv_Range错误的现象。
有的算子能用,有的算子不能用,这到底是哪里出了错,郁闷啊!!!!!!!!!!!!!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
绝地武士 发表于 2018-11-25 22:24:33 | 显示全部楼层
xixiyinhang 发表于 2018-11-25 22:18
更奇怪的是 例如HOperatorSet.GetImageSize(ho_image, out hv_Width, out hv_Height);,这个算子计算的HTUp ...

还是安装Halcon的变量检测插件监测下看看是那个导致了后面为空了没法继续了吧!https://www.51halcon.com/thread-722-1-1.html
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| xixiyinhang 发表于 2018-11-25 22:29:54 | 显示全部楼层
我把上面两个算子写在主函数中就能正常计算,单独写在一个类当中,第二个算子就会计算出错为空,*了狗了!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2018-11-25 22:49:51 | 显示全部楼层
xixiyinhang 发表于 2018-11-25 22:29
我把上面两个算子写在主函数中就能正常计算,单独写在一个类当中,第二个算子就会计算出错为空,*了狗了! ...

麻烦仔细检查下代码是否是局部变量跨函数了导致为空然后访问了,可以使用Halcon针对VS调试的插件HALCON_Variable_Inspect.vsix 进行查看解决,位于安装目录下\misc下!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| xixiyinhang 发表于 2018-11-25 22:59:14 | 显示全部楼层
Criss 发表于 2018-11-25 22:49
麻烦仔细检查下代码是否是局部变量跨函数了导致为空然后访问了,可以使用Halcon针对VS调试的插件HALCON_V ...

局部变量跨函数是啥意思啊?
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| xixiyinhang 发表于 2018-11-25 23:55:41 | 显示全部楼层
终于赶在12点之前给解决了,其实跟这些算子能不能用没关系,是有一个变量跟别的地方重名了,中间给整了个dispose释放掉了,导致后面计算结果为空,感谢版主解答!{:1_374:}
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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