开启左侧

请教一点关于halcon编程的问题

[复制链接]
任宇翔 发表于 2020-8-21 16:51:11 | 显示全部楼层 |阅读模式
本人用的是QT联合vs2019和halcon编程,用C++,在学习halcon的时候看别人的代码有些不懂,比如:
  1. tuple_strlen (strings, Len)
  2. if(Len<1)
  3.     return()
  4. endif
  5. chararray := []
  6. for i:=0 to Len-1 by 1
  7.     tuple_str_bit_select (strings, i, Selected)
  8.     chararray := [chararray,Selected]
  9. endfor
  10. return ()
复制代码

对于上面这段代码,有些疑问:
1.这个是什么语言?
2.对于这个代码的chararray := []这个赋值语句以及for循环不是很懂
有知道的请不吝赐教,谢谢!
绝地武士 发表于 2020-8-21 17:16:33 | 显示全部楼层
这代码就是Halcon编写的脚本代码,可以在HDevelop中使用:
微信截图_20200821171343.png
话说,这代码不就是https://www.51halcon.com/thread-1117-1-1.html这篇帖子写的功能么?
如果楼主不懂HDevelop编程,可以去看看Halcon语言基础,这个chararray := []意思就是声明一个元组,可以放入任何控制类型的数据进去!

夏叫兽 发表于 2020-8-21 17:25:18 | 显示全部楼层
1、这是halcon的专用语言halcon develop language,语法有点像Pascal
2、这段代码应该是将字符串转换为字符数组,for循环遍历字符串strings,获取每一位字符Selected,将Selected追加到chararray 中。此处chararray := [chararray,Selected]等价于chararray[i] := Selected
xlp18268931538 发表于 2020-8-22 08:34:25 | 显示全部楼层
本帖最后由 xlp18268931538 于 2020-8-22 08:47 编辑

借贵贴请教几个问题:
海康相机SKD用回调函数,转成halcon进行处理:
1、回调函数里面一般都是什么内容?可以把全部的处理函数都放在里面吗?
2、如果第一条成立(回调函数中能放处理函数),在回调函数比较耗时、还未完成的情况下,下一帧图像会再次触发回调函数吗?
3、如果在回调未完成情况下,不会再次触发回调函数的话,这一帧是存放在缓存区还是直接丢失?若是缓存,缓存区需要手动分配吗?
     如果在回调未完成情况下,会再次触发回调函数的话,运行机制又是怎样的?
xlp18268931538 发表于 2020-8-22 08:36:51 | 显示全部楼层
望大佬们指点迷津~~~
绝地武士 发表于 2020-8-22 09:58:49 | 显示全部楼层
xlp18268931538 发表于 2020-8-22 08:34
借贵贴请教几个问题:
海康相机SKD用回调函数,转成halcon进行处理:
1、回调函数里面一般都是什么内容?可 ...

下次记得这种非当前帖内容的另行开贴提问!
针对你的几个问题,我的解答如下:
1.回调函数是响应相机图像接收处理的,你可以放所有的函数,但是不建议;
2.你如果还在处理中,参考第一条,那么回调仍然会触发,举个例子,这就好比你把手机号给了别人,你玩手机和来电不冲突,但是你就无法正常玩你的手机了!
3.所以如果图像过来还没有处理完成,建议回调只存图片到缓存然后单独开辟线程依次从缓存中取出图片处理后再清除。可以参考队列(先进先出,自动控制)和数组方式(自己实现,手动分配指定大小,反复循环,需要人工代码完成控制)实现。
 楼主| 任宇翔 发表于 2020-8-24 11:59:20 | 显示全部楼层
绝地武士 发表于 2020-8-21 17:16
这代码就是Halcon编写的脚本代码,可以在HDevelop中使用:

话说,这代码不就是https://www.51halcon.com/t ...

谢谢!初次接触halcon,还有很多需要学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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