0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

labview中事件回调的使用

lvxisi 来源:lvxisi 作者:lvxisi 2023-08-24 16:38 次阅读

最近测试了labview调用dll中的回调函数相关功能,遇到了一些问题,现在做一下整理和总结,相关的内容比较多,分多篇来写。

在LabVIEW中,新手经常将所有的程序放在事件结构中来执行,有时还不取消前面板锁定,一个事件触发没有执行完成时,又去执行另外一个事件,导致界面锁死,必须从任务管理器里面关闭程序才行。

wKgZomTnFqOAMqVvAAKtoIyqNeY810.jpg

进一步优化,会采用生产者-消费者结构,在事件结构中触发,在消费者循环中,处理相关的程序。但如果要处理的程序时间较长,还是会导致队列阻塞,不能及时处理相应的程序。此时,便可以采用事件回调的方式来来解决。

wKgZomTnFqOALZiXAALB0o0_JfI308.jpg

先简单介绍一下回调函数,是一种在编程中常见的概念,它通常用于在特定事件发生时执行预定义的操作。回调函数可以作为参数传递给其他函数,以便在需要时被调用,从而实现定制的事件处理和逻辑分离。详细的概念网上很多,可以感兴趣可以查一下。

在labview中,无法实现将函数的地址指针传递给dll的,实际测试过VI引用是不可以的。可通过包装器的方式来实现,网上这方面的信息很少,个人理解,就是额外做一个中间层,将labview和dll进行连接。更进一步,就用其他语言如c++,编写好相关的函数指针,完全实现既定的功能,之后再打包成中间的dll,在labview中进行调用。

labview本身,是支持回调函数的,只不过,这种机制是在内部进行实现(也许还支持其他的交互方式,本人没有测试出来)。可以利用此功能,编写一些异步的程序,解决一些程序执行时间较长的问题。

1)搜索找到“事件回调注册”,这两个是同样的东西,在不同的文件路径下面,选择一个即可。

wKgaomTnFqOAMiF2AABhurO2fqQ366.jpg

2)拖放到程序框图内,这个函数包含了事件、VI引用还有用户参数。

wKgZomTnFqOAfYF8AAEGbSpmYyI094.jpg

3)这里写一个简单的测试函数,a+b=sum。其中a传入值,b和sum传入引用。

void Add(int a, int& b, int& sum) {

sum = a + b;

}

这几个参数,作为函数的输入,连接到用户参数中上面。

wKgaomTnFqOAEJNrAACAEelHcmM625.jpg

4)选择这个回调函数的触发方式,这里使用A的值改变。将A的引用连接到“事件”接线端,选择相应的事件。

wKgaomTnFqOAUrFcAAGpI-YcXmg316.jpg

5)在VI引用上,右键选择“创建回调VI”,可以自动生成一个用于执行的VI函数。

wKgZomTnFqSATtAMAAEgo5mnho8496.jpgwKgaomTnFqSAQXvMAAGGlQfWglo837.jpg

这个生成的VI与自己编写的VI静态调用有所区别,界面显示多了个*,右键查看是选择了“严格类型VI的引用”。

wKgaomTnFqOAQUmBAAH37j7997k875.jpg

6)编程完成相关函数功能,保存VI。

wKgZomTnFqSAMjnRAAFT_7Srmcs758.jpg

7)编写简单的循环和延时,保证程序一直是执行状态。

wKgZomTnFqSAESfKAAFAftMgRv4541.jpg

8)程序测试。输入A=1,B=1,运行软件。软件运行时,程序没有执行。当用于触发的A达到“值改变”的条件时,程序运行,sum得到数据为2。

wKgaomTnFqSAe_LiAAD_i-z5EHM316.jpg

9) 后续改变A的数值,发现整个sum没有发生变化,A的数据是以值的类型传入的,后面再改变数据,也无法改变最初传入的数据值。

wKgaomTnFqeAFcBpAAB4W6jkJHU658.jpg

10)修改B的数据,再修改A触发程序,可以以看到程序运行。说明只需要注册一次,程序可以触发多次。

wKgZomTmHWuAIWsAAAFPqHy_OUg638.png

11)在常规用事件结构处理的事件,在“事件检测窗口”中,都是有记录的。但是利用事件回调是没有记录的,说明这个事件回调和事件结构没有直接关系。

wKgZomTnFqSAJj0-AAJGzp9lQ2w136.jpg
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LabVIEW
    +关注

    关注

    1918

    文章

    3619

    浏览量

    317001
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79546
  • 回调函数
    +关注

    关注

    0

    文章

    87

    浏览量

    11455
收藏 人收藏

    评论

    相关推荐

    LabVIEW与C接口设计

    LabVIEW与C接口设计 介绍一种LabVIEW与C接口的设计方法。利用此接口方法,可以根据实际应用的要求,扩展LabVIEW的功能。  关键词:LabVIEW;CIN;V
    发表于 10-16 09:30 3592次阅读
    <b class='flag-5'>LabVIEW</b>与C接口设计

    LabVIEWLabVIEW天下会初探

    LabVIEW作为NI的旗舰产品,它能为我们做些什么? 如果您对LabVIEW只是一个初步的认识的话 该视频将会为您回答这些问题。作为一年一度的盛会,LabVIEW天下会吸引了越来越多的爱好者加入
    发表于 04-18 12:44 1.5w次下载
    <b class='flag-5'>LabVIEW</b>和<b class='flag-5'>LabVIEW</b>天下会初探

    基于labview闹钟的设计

    基于labview闹钟的设计基于labview闹钟的设计
    发表于 01-04 15:25 0次下载

    LabVIEW从入门到精通】LabVIEW程序设计步

    LabVIEW从入门到精通】2.3 LabVIEW程序设计步骤
    发表于 01-04 09:41 0次下载

    LabVIEW简介【LabVIEW

    LabVIEW简介【LabVIEW】,喜欢的朋友可以下载来学习。
    发表于 01-12 11:21 66次下载

    LabVIEW编程技巧

    LabVIEW编程技巧LabVIEW编程技巧LabVIEW编程技巧
    发表于 02-23 16:59 137次下载

    Labview之机实验

    Labview之机实验,很好的Labview资料,快来下载学习吧。
    发表于 04-19 09:54 0次下载

    Labview之报警

    Labview之报警,很好的Labview资料,快来下载学习吧。
    发表于 04-19 11:03 0次下载

    Labview之登陆设计

    Labview之登陆设计,很好的Labview资料,快来下载学习吧。
    发表于 04-19 11:03 0次下载

    打开LabvIEW编程之门_LabVIEW入门篇

    打开LabvIEW编程之门_LabVIEW入门篇,学习LabVIEW必须的资料。
    发表于 08-23 17:28 0次下载

    LabVIEW基本函数_LabVIEW入门篇

    LabVIEW基本函数,学习的基础知识,函数的学习
    发表于 08-23 17:28 0次下载

    LabVIEW钢琴_labview程序

    以前寫論文收集的一些資料,学习labview的好资料!!!!
    发表于 10-25 16:32 175次下载

    LabVIEW中的子VI

    LabVIEW教学课件与源代码,学习LabVIEW的很必要资料。
    发表于 12-14 17:44 0次下载

    labview的优势与缺点_LabVIEW类的动态类型处理

    本文主要介绍了labview的优势与缺点及LabVIEW类的动态类型处理。
    发表于 05-07 09:10 4.1w次阅读
    <b class='flag-5'>labview</b>的优势与缺点_<b class='flag-5'>LabVIEW</b>类的动态类型处理

    labview是什么软件?labview是什么语言?labview能实现什么功能?

    labview是什么软件?labview是什么语言?labview能实现什么功能? LabVIEW是一种图形化的编程语言,通常被用于数据采集、分析和控制系统。
    的头像 发表于 08-31 17:23 3187次阅读