找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 2558|回复: 6

能在事件结构里添加一个while循环并停止吗~~

[复制链接]
发表于 2009-12-31 10:10:34 | 显示全部楼层 |阅读模式
在A事件分支里添加一个while循环,可是就算设置了停止条件,比如说在另一个事件分支B里设定了循环停止的条件,去停止A事件分支里的循环,却停止不了
而且如果在某个事件分支里加了while循环的话,好像其它的事件分支的按钮甚至都按不了,这是为啥啊,求解~~
发表于 2009-12-31 11:07:13 | 显示全部楼层
事件不结束,操作不了的,不建议这么用
回复 顶

使用道具 举报

发表于 2010-1-6 09:55:45 | 显示全部楼层
同问
但是有时候需要这样用
有什么好办法解决吗?
回复 顶

使用道具 举报

发表于 2010-1-6 10:00:30 | 显示全部楼层
尝试B事件设一个值,A事件循环里面要判断此值停止循环。试试
回复 顶

使用道具 举报

发表于 2010-1-6 10:28:07 | 显示全部楼层
这个不难,利用VALUE(signal)属性节点来触发事件并停止WHILE。
回复 顶

使用道具 举报

发表于 2010-1-7 15:12:00 | 显示全部楼层

将图示中的勾选去掉即可,原因可看上面的说明!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 顶

使用道具 举报

发表于 2010-1-8 11:28:49 | 显示全部楼层
我没试过,不过如果一个事件里放置循环,然后这个循环的结束需要这个事件外部(依然程序里)的触发,直觉上不可行。
你可以这样做:
程序主体架构要两循环,master/slaver结构,在master里,你放置你的event,检测全部的user interface的事件和其它一些也放在event框里的事件。按嵌入式开发准则,一个事件的处理,不能有太长的时间,一般控制在20ms之内,不然其它同在一个event框里的事件响应会滞后,很常见的就是你的user interface反映慢了很多,按下按钮,0.5或者1s才动作,显然是不行的。而如果你确实需要长时间处理某事件,有两种常见的方法:一是把处理分割,每一部分时间控制在20ms之内,这只能适用timeout这种在空闲的时候会自动运行的事件;另外一个更常用,在lv种更容易见到的就是用并行处理,说白了就是多个循环,做成一主多从的模式,你可以学习下master/slaver或者类似的producer/consumer,都是这种思想,很简单的。还有点时间,具体说下:
事件A里你本来放置循环的,现在不要了,改成放一个notifier,去通知slaver的循环。slaver循环怎么做呢?循环体内无限等待notifier,如果等到,开启一个子循环(就是把wait notifier输出连接到子循环框即可),子循环里来处理你本来在事件A内处理的东西,子循环和slaver循环的结束,你要用其它的notifier来通知了。

很多字,看不懂得话,有两点提醒:
第一楼那个停止不了,是因为你事件A在运行,没停止之前不会去运行事件B,所以不会产生事件A的停止标志,典型的死锁;
第六楼的方法确实可以按动按钮什么的,因为user interface是用另外的的线程来监视了,不过最终的处理还是要送回到后面板线程的,而这个时候后面板线程死锁,导致一个现象,你按了按钮,但不会有预期效果发生。
end!
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-29 09:13 , Processed in 0.048939 second(s), 11 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表