51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 77|回复: 1
收起左侧

[资料] 线程模拟实现SDK里面上升延触发(下降沿类似)

[复制链接]
  • TA的每日心情
    耍酷
    6 小时前
  • 签到天数: 991 天

    连续签到: 3 天

    [LV.10]以坛为家III

    386

    主题

    1564

    帖子

    7486

    积分

    Rank: 9

    积分
    7486

    突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

    发表于 2020-11-13 18:13:16 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    1. private void CheckInput()
    2.         {
    3.             int nInputSlot = 2; //第二个槽 替换成自己想要监控的槽
    4.             int nInput = -1;
    5.             while (true)
    6.             {
    7.                 nInput = iob_read_inport(); //SDK方式读取IO信号量
    8.                 //信号是按位处理的
    9.                 //Console.WriteLine("IO State:{0}", nInput);
    10.                 if ((nInput & (1 << (nInputSlot - 1))) == 0)
    11.                 {
    12.                     //Console.WriteLine("等待发送触发信号");
    13.                     //监测到0则一直等待1出现
    14.                     while (true)
    15.                     {
    16.                         nInput = iob_read_inport(); //再次读取
    17.                         if ((nInput & (1 << (nInputSlot - 1))) != 0)
    18.                         {
    19.                             //发送触发信号,我这里打印出来即可。 你需要增加你自己的委托对象来接收处理
    20.                             Console.WriteLine("检测到触发信号发射!" + DateTime.Now.ToString("HH:mm:ss"));
    21.                             break;
    22.                         }
    23.                         Thread.Sleep(10);
    24.                     }
    25.                     Thread.Sleep(10); //延迟10us 实时性高则减少该值 不要设到3us以下避免误判,同时让出cpu让其他代码也执行下
    26.                 }
    27.             }
    28.         }
    复制代码

    以上代码实现了模拟SDK里面信号端口2从0到1变化后导致的信号触发,也就是上升沿捕获,然后把它放到子线程里面去执行即可。
    该功能一般用的少,但是有时候有需要可以参考该代码,留底备份,以后直接使用!
    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
  • TA的每日心情
    叹气
    昨天 11:31
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    18

    帖子

    60

    积分

    Rank: 1

    积分
    60
    发表于 6 天前 | 显示全部楼层
    有用,但是如果两条子线程同时使用 iob_read_inport(); //SDK方式读取IO信号量 ,来读取信号量,会不会产生干扰,有时候读取失败,我遇到过类似的情况。

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    申请友链| 小黑屋| 手机版| Archiver| 有问题需要咨询站长?|  

    CopyRight © 2015-2020 51Halcon机器视觉. Version X3.4.

    粤ICP备15095995号-2 粤公网安备44030602000670号

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