LabVIEW——關(guān)于事件結(jié)構(gòu)的使用
剛開始接觸事件結(jié)構(gòu)時(shí)覺得它很好用,所以很喜歡用,但也引起了一些問(wèn)題,就是前面板很容易就被掛起來(lái)了,就是所前面板沒(méi)有響應(yīng)了,很郁悶。
之后就不敢用了,很多可以用事件結(jié)構(gòu)的地方都只用CASE結(jié)構(gòu)麻煩的代替了~~
今天被師兄那么一指點(diǎn),覺得完全是委屈了事件結(jié)構(gòu)啊,之前事件結(jié)構(gòu)引起的問(wèn)題可以很容易的解決。
方法就是設(shè)置“超時(shí)”(之前一直覺得這個(gè)東西沒(méi)用的):
一般情況下,事件結(jié)構(gòu)是會(huì)和while循環(huán)套用的,通過(guò)不斷的循環(huán)來(lái)執(zhí)行不同事件源激發(fā)的事件,但如果不設(shè)置超時(shí),也沒(méi)有事件源發(fā)生,那么while循環(huán)將一直等待事件的發(fā)生而不進(jìn)行循環(huán),這樣就會(huì)使得事件結(jié)構(gòu)外的其他程序也不能執(zhí)行,可能造成的結(jié)果就是前面板本該有反應(yīng)的地方(比如變量值的變化)沒(méi)有了反應(yīng)。
而如果設(shè)置了超時(shí),比如設(shè)置為100(ms),意思就是每隔100ms如果沒(méi)有事件發(fā)生就超時(shí),進(jìn)行一次循環(huán),那么事件結(jié)構(gòu)外的其他程序也就得到了執(zhí)行。
總結(jié)一下:
如果事件結(jié)構(gòu)在while循環(huán)中,而事件結(jié)構(gòu)之外又有其他的程序需要執(zhí)行(可能不依賴于事件的發(fā)生),那么就應(yīng)該設(shè)置超時(shí)。(可能還是很抽象哈,等你遇到了你就會(huì)明白一些的~~)