完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
求大神指点一二啊,谢谢
|
|
|
|
求大神
|
|
|
|
没什么问题,重置vi的提示并不影响程序功能,而是你vi占用了太多资源没有及时释放由系统的资源管理重置该vi占用的资源,建议你的for循环添加一个小的延时。
|
|
|
|
静夜style 发表于 2017-7-13 08:50 好的。我试试,谢谢!!! |
|
|
|
静夜style 发表于 2017-7-13 08:50 从资源管理器中发现CPU和内存使用都正常,而且偶发出现程序卡死,强制关闭就出现重置VI,请问什么原因呢? |
|
|
|
本帖最后由 静夜style 于 2018-1-5 14:53 编辑
强制关闭VI也不是立即就结束所有的ni相关进程,当点击了关闭,ni自带的垃圾处理功能就会运行,用来处理运行时产生的资源消耗,像一般的c,c++等语言需要自己编写垃圾处理的,就拿打开文件来说吧,labview允许你调试的时候只打开文件而不关闭,并且在你结束之后自动调用结束这个功能,这个在lv开发环境下是可取的,c,c++肯定是不允许的。另一个例子就是关于labview中的while循环的问题,当你有一个while循环没有任何退出条件,但是你又结束了当前while循环所在的vi,此时labview是不会去结束你的那个while循环的,而是把那个循环当做一个单独的线程去运行,但是有可能该while循环内部调用了已经被结束的vi的控件,那么此时while循环就访问了一块非法的内存,那么labview就需要去针对这个while循环做异常结束,也就是看到重置vi这个提示。 关于程序优化的建议,所有的循环尽可能给出退出的条件,而不是无休止的一直执行,关闭vi前面板的时候,请一定要结束所有的相关的循环,避免自动变成后台的僵尸进程。推荐使用关闭labview而不是关闭vi,关闭labview会关闭所有的子进程。适当的禁止前面板自动刷新,前面板最好用事件结构处理,但是处理前面板的时候最好关闭延迟响应,前面板按钮等控件所触发的事件最好用子VI去调用,这样不会出现前面板假死。数据传递到子VI比直接拖一大堆框图节点效率更高一些,并行的几个循环一定要注意变量值的变化,轮询模式的标准状态机一定要给while循环加至少50ms延时。事件结构千万不要嵌套,也不要在同一个vi中使用两个或更多的事件结构,一个vi最多一个事件结构,否则很大概率会出现事件无响应。条件结构嵌套最好不要超过3层,如果超过了,请话卡诺图重新整理逻辑,否则很大概率得不到正确的结果。 |
|
|
|
静夜style 发表于 2018-1-5 14:49 多谢专家指导! |
|
|
|
一语惊醒梦中人
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
232 浏览 0 评论
1639 浏览 1 评论
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
2250 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1824 浏览 0 评论
2008 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 22:18 , Processed in 0.550704 second(s), Total 58, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号