完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在子vi中用引用的方式使用了事件结构,在主vi中同样使用了事件结构,子vi事件能够正常运行,而主vi触发事件就会卡死。当然,我们应该尽量避免一个vi里出现多个事件结构,但是为了实现封装我又貌似不得不采用这样的结构,大家能提供一个好的解决办法吗。 |
|
相关推荐
4个回答
|
|
在LabVIEW中,使用事件结构是实现多线程和事件驱动编程的一种方法。然而,当在子VI中使用事件结构时,可能会遇到一些性能问题,特别是在主VI中也使用事件结构的情况下。以下是一些建议,以帮助您解决这个问题:
1. **优化事件结构**:首先,检查您的事件结构是否已经优化。确保您没有在事件结构中执行过多的工作,这可能会导致性能下降。尝试将一些工作移出事件结构,以减少事件处理的开销。 2. **使用局部变量**:在子VI中使用局部变量,而不是使用引用。这可以减少在主VI和子VI之间传递数据的开销。您可以使用Shift和Ctrl键将控件或指示器转换为局部变量。 3. **使用队列**:如果需要在主VI和子VI之间传递大量数据,可以考虑使用队列。队列可以帮助您在两个VI之间高效地传输数据,而不会阻塞事件处理。 4. **使用多线程**:考虑使用LabVIEW的多线程功能,如执行线程和子VI调用节点。这可以帮助您在不同的线程上执行任务,从而提高性能。 5. **避免循环等待**:确保您的事件结构没有陷入无限循环或长时间的等待。这可能会导致事件处理变得非常慢,甚至卡死。 6. **使用条件结构**:如果可能,尝试使用条件结构代替事件结构。条件结构可以提供类似的功能,但在某些情况下可能具有更好的性能。 7. **调试和性能分析**:使用LabVIEW的调试工具和性能分析器来识别性能瓶颈。这可以帮助您确定哪些部分的代码需要优化。 8. **封装和模块化**:尽量将功能封装在单独的VI中,以提高可读性和可维护性。这可以帮助您更好地管理事件结构,并减少在单个VI中使用多个事件结构的可能性。 9. **使用事件驱动的架构**:考虑使用事件驱动的架构来设计您的应用程序。这可以帮助您更好地管理事件处理,并提高性能。 |
|
|
|
主程序的事件结构里调用了一个死循环的子VI,这个子VI不执行完成主VI肯定无法执行其他事件
解决方法:将主程序里的动态调用该子VI改为异步调用,且异步调用忽略输出(模式80,参考NI异步调用范例) |
|
|
|
事件冲突子VI没有退出得了吧
|
|
|
|
看看是不是主VI触发的事件锁定前面板了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
232 浏览 0 评论
1639 浏览 1 评论
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
2250 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1824 浏览 0 评论
2008 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 20:58 , Processed in 0.522486 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号