請問各位大大
選單不能勾選喔
用按鈕吧,把它改成打勾的圖就可了
有打勾就進入CASE就可了
簡單版SEQUENCE思路:
1. 主程式呼叫step選單
2. 建立一個選單,由於需要給使用者勾選,故主架構為while迴圈。
3. 選單可勾選的介面主要以布林代數做成,勾選完畢後按下某個按鈕離開while迴圈,並把布林代數的值傳出。
4. 由於依據勾選的內容依序執行,故主程式接收到該值後,以SEQUENCE架構撰寫
5. SEQUENCE內至case,當對應的布林代數為true,則執行該項步驟,反之跳過執行下一個SEQUENCE動作
6. 優點為容易撰寫,缺點為當某個step有問題(ex. test NG)無法立即停止,且測試步驟無法更改前後順序
普通版while-step思路
1. 主程式呼叫step選單
2. 建立一個選單,由於需要給使用者勾選,故主架構為while迴圈。
3. 選單可勾選的介面主要以布林代數的矩陣做成,勾選完畢後按下某個按鈕離開while迴圈,並把布林代數矩陣的值傳出。
4. 主程式利用while迴圈逐一讀出布林代數矩陣,並以while-index為case的參考值來設計step
5. 當布林代數矩陣為true,則執行該step,反之跳過。
6. 優點在於當執行發生異常時,可觸發while中斷,缺點為測試步驟無法更改前後順序
進階版state machine思路
1. 主程式呼叫step選單,選單為左右兩邊的list,左邊為全部的step,右邊為選擇之step
2. 當DOUBLE CLICK左邊list的某個選項時,將該選項加入右邊list_name的矩陣並顯示出來,
3. 當DOUBLE CLICK右邊list的某個選項時,則將該選項於list_name移除
4. 按下某個按鈕後離開選單的while迴圈,同時將右邊list_name的值傳出
5. 主程式接受到值後,則以一般state machine的方式執行即可
6. 即以while-index來選取list_name的矩陣,選取出的文字即為state machine的輸入,將其接到case中可進行各設定步驟的撰寫
7. 優點為除了可遇到異常停止外,可根據使用者點選選單的順序不同來進行計算測試,而非固定一直線的執行步序
以上,僅以文字說明,避免直接套用程式而失去了思考的機會。
有敘述不明的地方可以附上卡關的程式提問。
caeru41205.4316203704
感謝各位大大的幫忙 我先試試看
請問caeru大
以下為簡單的二重狀態機
第一重是利用EVENT取得按鍵,觸發相對應的動作(ESC為離開程式,ENTER為執行步驟,F5為讀取步驟)
第二重是一般狀態機,利用取得的步驟逐一執行,或是遇到異常時中止步驟(預設TEST5為異常命令,直行到這行會中止)
main.vi
sub.vi
另SUB VI則為選單部分,
單純利用LIST的double click屬性來操作,主要角色為LIST1,LIST2我沒有寫double click時移除,這個自己想,
由於架構是狀態機,故LIST中的步驟可隨意、可重複,
最後傳出時也不是傳出LIST的值(顯示只是給USER看的)
傳出的是LIST上的文字(這才是狀態機要的)
以上請參考,有不懂再提問~
caeru大大
我的版本太舊開不了…QQ
caeru大需要幫你轉檔嘛?
caeru大我附上我程式的截圖好了
呃,
這整個架構不同,一樣都是狀態機,
但是這樣的架構比較像是活動的sequence,
所以想要預先安排的流程可能會比較難以直接套入。
建議是所有的case結束後都指定到步驟[取得下一步]
當進到[取得下一步]的case之後,利用sub傳出的值(此時就要是數值而非文字)來決定下一步要做甚麼。
然後跳到設定的下一步例如是[擷取],當[擷取]完之後又跳回[取得下一步]
我想你的架構這樣改可能比較簡單一點。