labview 的生产者与消费者结构问题

2019-07-17 08:19发布

今天在学习生产者,消费者结构,遇到个问题:
当按主循环中的“停止”按键,后面两个子程序能够正常关闭。
当按子程序2的“停止”按键,子程序1和子程序2也能正常关闭。
但是当我按子程序1的”停止“按键时,只能把子程序1关闭,另外2个都不能正常停止,最让人奇怪的是当我把子程序2高亮显示的时候,再去点击子程序1的”停止“按钮,后面两个子程序又可以正常关闭了。
万能的”电子发烧友“啊,请帮忙指点迷津呀。




我保持了低版本的程序!!!!!
154331pyzgdb7r1p52r7jo_jpg_thumb.jpg
154339wy4z9eb79bh6uvbh_jpg_thumb.jpg
生产者消费者高级应用 文件夹.zip 下载积分: 积分 -1 分
131.53 KB, 下载次数: 152, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
btlook
2019-07-17 10:39
gswanybz123 发表于 2016-6-18 15:35
1.按主程序的停止后会向Q1、Q2队列发exit命令使两个子VI的接收处理循环停止。这个没问题;
2.按Q2停止时,Q2内的接收处理循环正常停止,同时主程序事件结构停止,主程序继续执行接收处理循环到“待处理队列MAIN”子VI后会因为全局变量往队列丢入exit命令,执行后停止本身循环同时通知Q1停止。这个也没问题;
3.按Q1停止时, ...

谢谢楼上的高人答疑解惑。我在程序中加了一个清除错误的命令,问题是解决了。
但是好像我好像还是有些问题:
1. 子程序2本来是可以自己停止的,它是可以由全局变量EXIT的变化来停止的,但是由于主程序在执行“exit”这个分支的时候产生了错误(那时子程序1已经停止,压入exit产生错误)导致子程序2的队列管道无法压入数据,也就使得子程序2无法停止。
2.但是问题来了:为什么主程序中的全局变量EXIT会先起作用,先产生错误。而不是让子程序2中的全局变量EXIT先起作用,使得子程序2先停止下来,然后执行主程序的“exit”的分支,这样即使产生错误,也可以停止程序。
clear error.jpg

一周热门 更多>