完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
最近在学习事件结构,碰到了软触发问题,在度娘里搜到了一个关于软触发的帖子,地址如下:
https://bbs.elecfans.com/jishu_201307_1_1.html 按照上面的例子,自己搭建了一个,如附件1所示。不明白的事为什么要将前面板锁定的按钮勾去掉(见附件2)。不去掉的话,按钮无法按下. |
|
相关推荐
20个回答
|
|
|
深夜还没睡,无意间看到,就给你解答一下。
解决方法:你按如图这样加一个if循环,就可以解决了。 说明:Val(Sgnl)函数,对于事件结构而言,不管赋值T/F,都是始终触发的。 所以你如果直接使用"服务"按钮直连Val(Sgnl)函数的话,相当于"服务"按钮已经被程序事件一直按住了,事件没有结束,按钮就没有松开,所以你按不动。当你将事件结构里锁定前面板的钩取消,就是强制人为动作优先,此时的按钮被人为强制使用了,所以可以按下。
最佳答案
评分
|
||
|
|
||
|
期待大神的解答
|
|
|
|
|
|
做了下改动,发现如果是点高亮显示,勾选锁定前面板的话,确实是预期的一样,前面板没法操作了。
如果不点高亮显示,勾选锁定前面板的话,没有任何效果,这又是什么情况,将附件上传上去了 期待各位的回答!!
|
|
|
|
|
wangyi31 发表于 2017-2-2 17:09 你更改一下“服务”的机械动作,改为第二个试试 |
|
|
|
|
|
直接上图吧。手边电脑没有软件。
|
|
|
|
|
|
谢谢您的回答,这个就是个确定按钮,我就是好奇这种情况该如何解释。 |
|
|
|
|
lcsj1517 发表于 2017-2-2 02:44 谢谢您的回答,解决了心中的一些疑惑! |
|
|
|
|
lcsj1517 发表于 2017-2-1 10:30 突然想起来还有个疑问,按照您所说的方法,就是我点了"高亮执行过程按钮“后,为什么按钮无法操作了那,不点"高亮执行过程按钮“的话,按钮是可以操作的。这又是什么原因,希望您能够解释下。 |
|
|
|
|
wangyi31 发表于 2017-2-4 19:19 因为下面的循环结构里的事件结构有一个20ms的延迟,而上面的循环没有延迟。 就相当于上面已经触发了20次事件了,下面才响应一次事件,最终导致事件结构始终忙碌,你按钮就自然按不动了。 只要在上面的循环加一个大于20ms的延时,就能解决了。 |
|
|
|
|
lcsj1517 发表于 2017-2-6 16:56 谢谢! 我想了一下,按照您的做法,加了个条件判断,第一次是可以按下的,因为Val(Sgnl)没有赋值。按下之后的话,Val(Sgnl)被赋值为T了吗,不是也是一直相当于触发事件了吗,这个按钮此时不应当也被锁定吗? 问题有点多,希望您赐教下。 |
|
|
|
|
wangyi31 发表于 2017-2-7 11:16 不会锁住按钮啊,虽然按钮按下,Val(Sgnl)被赋值为T,但这个时候的两个while循环的执行时间几乎一样,自然就不存在锁住按钮了啊。 |
|
|
|
|
|
建议,其实那帖子过于久远了,实际意义也并未有多大
而且你理解也错了,他的程序是写在两个VI里面的,而非你写的一个VI的 他说事件结构优点是占用内存和CPU 但是此做法完全违背初衷,因为相当于在0ms延时的while循环上加上了另外一个事件结构 不管是麻烦程度还是什么,那帖子只能算是探路而已,而非作为教程,更不能作为学习。 对于初学者:我建议老老实实的利用事件结构的超时去写 对于深入者:建议的话,利用后台事件结构编写一个定时器,当达到规定时间,利用触发一个动态事件反馈给主函数,然后让主函数进行处理。 |
|
|
|
|
|
我是这样理解的:有两个循环,按钮按下,Val(Sgnl)被赋值为T,触发了另一个循环中的“值改变”事件,事件一直被触发的话,不是应该将前面板锁住了吗? 期待您的回答。 |
|
|
|
|
|
本帖最后由 lcsj1517 于 2017-2-10 15:51 编辑
wangyi31 发表于 2017-2-10 10:17 是的。只要被触发,前面板就会锁住。但是并不是触发之后或事件正在执行就不响应你的按钮事件了。 你有没有注意到“锁定前面板”那个选项后面括号还有两句话“(延迟处理前面板的用户操作)直至事件分支完成”。 当你勾选这个选项,他并不是不执行你按下按钮的动作,只是它要先执行你按下按钮之前的事件直到完成,才响应你的按钮事件。 也就是说,在你按下按钮那一瞬间,其实程序前面板本身是被锁住的。但是因为程序代码执行过程很短,瞬间处理完了,所以马上就处理了你的按钮事件。所以你感觉前面板没有被锁住。 简而言之,事件正在执行或者程序自身造成事件触发,具有高优先级,优先响应,用户操作事件低优先级,最后响应。 你仔细体会一下。 |
|
|
|
|
|
本帖最后由 lcsj1517 于 2017-2-10 16:17 编辑
ZHZJK 发表于 2017-2-8 15:01 版主大佬,其实我觉得题主的问题并不出在软触发上面,软触发其实是很简单的一个属性节点而已,它就是只要赋值,就触发事件。 感觉他的问题其实是出在对事件结构的触发和执行方式不熟悉。 应该算是借用了”软触发“这个主题来学习事件结构吧。 |
|
|
|
|
lcsj1517 发表于 2017-2-10 15:11 太感谢您的细心解答了! 还发现了个现象(服务按钮前面板锁定的条件下),因为While循环中一般要加个定时器,我给两个循环都加了定时器,发现定时的时间不同的话,程序运行的结果不同,比如在服务按钮那个循环中,定时时间为100ms,在带有事件结构的循环中,定时时间也为100ms的话,服务按钮是可以操控的。 如果服务按钮的定时时间为200ms,事件结构的循环定时时间仍旧为100ms的话,服务按钮仍旧是可以操控的。 但是如果服务按钮的定时时间为50ms,事件结构的循环定时时间仍旧为100ms的话,服务按钮就不可以操控了。请问这是什么原因啊? |
|
|
|
|
lcsj1517 发表于 2017-2-10 15:11 十分感谢您的耐心回答 还发现了个现象(服务按钮前面板锁定的条件下),因为While循环中一般要加个定时器,我给两个循环都加了定时器,发现定时的时间不同的话,程序运行的结果不同,比如在服务按钮那个循环中,定时时间为100ms,在带有事件结构的循环中,定时时间也为100ms的话,服务按钮是可以操控的。 如果服务按钮的定时时间为200ms,事件结构的循环定时时间仍旧为100ms的话,服务按钮仍旧是可以操控的。 但是如果服务按钮的定时时间为50ms,事件结构的循环定时时间仍旧为100ms的话,服务按钮就不可以操控了。请问这是什么原因啊? |
|
|
|
|
|
来学习下,楼主辛苦了
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
211 浏览 0 评论
请教大神,在labview里面对实时扫描资源中的C系列模块NI9234进行配置发生非预期错误
1709 浏览 0 评论
1585 浏览 0 评论
LABVIEW 2023 Q1调用python后一直报错1671
1960 浏览 2 评论
5207 浏览 3 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 03:42 , Processed in 1.340917 second(s), Total 112, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4279