Run when opened

Dear ALL

    請問各位先進,一直以來關於我所知道的方法中

    如果要讓Build好的執行檔不要一打開就執行,由使用者決定要不要開始

    就是在Build的時候把Run when opened取消

    但是我用Labview8.2卻沒有一次成功,每次它都跑的很快樂

    雖然透過修改程式的方法用別的方式繞過這個問題(EX:在最外圍加個While loop之類的)

    可是它還是存在....請問這是我的設定有問題嗎?

    還是有哪邊我沒有注意到的?? 

![](upload://A67g6BaP6pjwE5oOfQvHQflikD7.jpeg)

您Build好的執行檔不要一打開就執行,由使用者決定要不要開始

請問您VI的架構為何.可貼圖嗎?

我舉兩種例您參考看看. Standard State Machine 與 Producer/Consumer

1. Standard State Machine 一般我都應用在自動量測上
只要先把步驟設計好,使用 Enum 然後 Edit Item 將步驟名稱(開始 暫停 結束)建立好

可以設定執行檔一打開就執行暫停.

 

2.  Producer/Consumer  一般我都應用在手動量測上
因為大多操作上會使用鍵盤所以我都使用Event  Key Down 的功能
上迴圈經由Event  Key Down 觸發事件 輸出 VKey 或 ScanCode 來做判斷,
再經由下迴圈  Dequeue Element 送出指令進入對應的 Case Structure 後,依指令運作



Dear JD 大:

目前我也是在使用你說的這種方法

但是缺點就是一開始程式使用者在輸入參數設定或者選取檔案之類的動作時

程式還是一直在跑(這裡我是用空迴圈外加Delay 0.5 S")

但是這種做法在設定比較多東西的時候(也就是放太久)

我發現記憶體可能有被佔滿的感覺

開始會有一點點的LAG(不知道是否我的記憶體太少....)

所以我才想說把架構改成Build完後不要一打開就執行

以前在7.1時我都是在Build時把Run when opened取消就可以了

但是8.2卻怎麼弄都會在Build好後一打開就執行

實在是很頭痛...

還是說有沒有沒大大可以指點一下關於記憶體控制的資訊

讓我研究一下,謝謝

PS.JD大,我的程式架構如果不考慮裡面執行的東西

    其實也是跟你的Case 1差不多

    最外圍一個無窮迴圈,裡面再用條件選擇這樣

您可以貼圖或上傳VI嗎?

Case 1 我前面有敘述我都應用在自動量測.也就是說不需使用者有輸入參數設定或者選取檔案之類的動作.

通常我會使用一個對話框 只要按OK 就開始執行.

使用者有輸入參數設定或者選取檔案之類的動作我會建議您使用事件觸發.Producer/Consumer 這種架構.

 

Dear JD 大

SOR, 程式的內容有牽涉到別人的東西所以沒辦法直接PO上來

不過在這個問題所提到的部分我有把我的做法貼上來了

因為我是要做及時回饋的

有點像是程式一開始要設定一些參數等等

然後執行之後可以再把結果存到檔案中

之後可能換一些參數在繼續執行

所以最外圍用While loop

然後等到使用者在人機介面上把參數都調好之後按下Start才會開始跑

而還沒按之前是跑False的空白Case(僅放了一個Delay 0.5 S")

等於是最外圍的While Loop在一直跑的意思

 

這種做法有可以改進的地方嗎?

還是有其他比較好的方法呢??

![](upload://dppKbUZIv3OaiwFSM1bI49NhTQT.jpeg)

Hi yilin123

妳要的是不是將寫好的vi,Build成執行檔而提供給使用者使用,當使用者

使用此執行檔後,程式不會直接開始執行程式,需等待使用者將所有參數

設定完成後,選擇button使會執行程式?若是的話妳可參考一下此作法

或許能解決問題

![](upload://cdNFh2e1SFiMhwPJTkX3yKJajY9.jpeg)