事件结构读取事件的机理是怎样?事件结构嵌套的问题。
按照我的理解,程序运行后,外事件处于等待事件发生中,内事件结构还未运行。那么如果此时发生内事件,程序应该没反应才对。
实际结果是:内事件发生后,前面板被锁定了,这说明内事件结构检测到了事件。而奇怪的是,灯没有亮,说明内事件结构里的程序没有运行。
请问朋友们,该怎么理解LabVIEW事件结构在这一实验下的行为呢?
上个个程序来看看
手机party,看看程序图吧
Labview官方不允许事件结构嵌套。所以他们应该也没有仔细去研究嵌套的时候会有什么不合理的事情发生吧。
你说的这个我做了实验确实有这个问题,内部事件结构指定的事件发生时会锁定前面板。
所以朋友,还是不要嵌套的好。
如果所有事件结构都不锁定前面板,内外事件嵌套会分别维护一个消息队列。比如内嵌套发生了10次事件,都不会执行程序,而会将事件加入自己的队列。直到外事件每发生一次,内事件就会执行一次,直到内事件队列清空。
涨姿势了。原来是队列。
你给的例子不论你按哪个按钮都会锁死前面板并且灯不会亮,首先是面板锁死的原因:两个事件结构响应同一种事件,那么不论哪一个事件发生,另一个事件结构都会锁死。
参考帮助手册的建议:
在LabVIEW中使用事件的说明与建议
由于LabVIEW是一个图形化编程界面,因此其事件处理和其他编程语言中的事件处理有所不同。下文列出了在LabVIEW应用程序中使用事件的说明和建议。
确保事件结构能在任何时间处理发生的事件。
记得在“值改变”事件分支中读取触发布尔控件的接线端。
使用条件结构处理触发布尔控件的撤消操作。
将一个条件分支配置为处理多个通知事件的操作时,使用警告信息。
不要使用不同的事件数据将一个分支配置为处理多个过滤事件。
如包含事件结构的While循环基于触发停止布尔控件的值而终止,记住要在事件结构中处理该触发停止布尔控件。
如无需通过编程监视特定的前面板对象,考虑使用“等待前面板活动”函数。
用户界面事件仅适用于直接的用户交互。
避免在一个事件分支中同时使用对话框和“鼠标按下?”过滤事件。
避免在一个循环中放置两个事件结构。
使用动态注册时,确保每个事件结构均有一个“注册事件”函数。
如果VI类和控件类注册了同样的事件,LabVIEW先产生VI事件。
使用子面板控件时,事件由含该子面板控件的顶层VI处理。
如需在处理当前事件的同时生成或处理其他事件,考虑使用事件回调注册函数。
请谨慎选择通知或过滤事件。用于处理通知事件的事件分支,并将无法影响LabVIEW处理用户交互的方式。如要修改LabVIEW是否处理用户交互,或LabVIEW怎样处理用户交互,可使用过滤事件。
不要将前面板关闭通知事件用于重要的关闭代码中,除非事先已采取措施确保前面板关闭时VI不中止。例如,用户关闭前面板之前,确保应用程序打开对该VI的引用。或者,可使用前面板关闭?过滤事件,该事件在面板关闭前发生。
如果没有事件结构立即处理某一事件且启用了前面板锁定,该VI的用户界面将不响应任何操作。因此,必须确保事件结构所处循环的运行频率能及时响应用户界面事件或禁用前面板锁定。
你需要把外事件设为不锁定前面板,再试试
图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕图看的晕