2015-10-16 63 views
3

如果我把塊顯示在畫面中while循環的一切失敗,FO例如停止按鈕不工作! 有人可以向我解釋如何正確使用事件?在while循環事件的情況下,管理

enter image description here

感謝

+0

切線我注意到,而看你的圖:你似乎並不知道自動索引For循環。您不需要連接N端子。您的顏色數組具有您需要的大小,所以只需右鍵單擊循環隧道並選擇「啓用索引」。這將爲您節省大量的+1和-1邏輯來嘗試並計算該N終端。 – srm

回答

4

您沒有連接超時終端。

它是如何始終等待一個事件,不會讓你停止循環。因爲它不會迭代,所以它會等待。

要停止你應該指定停止按鈕事件循環,讓你的循環將在點擊停止迭代,你將能夠阻止它。或者你可以指定超時時間,比如說100毫秒,循環會在100毫秒超時的情況下迭代一次,即使沒有事件。

+0

我對這個答案進行了編輯,希望得到同行評審。即使一旦這些編輯被接受,我的整體回答是您上面顯示的架構不是一個好的架構。它不會很好地擴展和結合在一起。相反,有兩個並行while循環...一個只有沒有超時的事件結構;它會將數組數組排入隊列。另一個while循環從Queue中讀取數據並根據命令渲染它。那麼你不會浪費處理器週期來重新繪製。銷燬隊列以停止第二個循環。 – srm

5

而且儘量避免強制轉換點(近喜歡加一些塊紅色的小點)的數據類型是動態變化的(I32一倍),但它是有效的,並在LabVIEW中的約定是大多手動更改數據類型。

+1

感謝您的建議,我會深入研究這個論點 –

0

其他的答案告訴你如何修補你的代碼,以便當前的架構繼續工作。但是,如果你的應用程序變得更大,那麼這種體系結構就會出現根本性的缺陷 - 你將無謂地浪費大量的CPU重新繪製,並且最終會導致UI的滯後。業務邏輯與圖形邏輯的LV分離將看起來像下圖所示。此圖片是LV 2015的LV剪輯,這意味着如果將圖像保存到磁盤,然後將其直接放到LV 2015或更高版本上,則代碼將直接丟棄。對不起,我目前沒有LV的早期版本,所以我不能給你一個以前版本的剪輯,但下面的代碼應該一直工作回到LV 6.1(大約2001a.d。 )如果你重新編碼它。 enter image description here