多個視窗迴路設計

如何建立多個視窗的迴路設計,何種方式比較適合

a視窗有個設定值a可調

b視窗有個設定值b可調

結果值a+b於b和c視窗分別display出來

有return button可重覆來回a與b視窗修改設定值a與b的值

b與c的視窗則display改變後的結果

我用event structure來做或lib辨不到,因為有先後次序無法再回去設定

請問大家有沒有什麼好方法

 

我第一個想到的是用全域變數來做,不過我相信作法一定很多,你想用event structure的原因是什麼? lib是什麼方法???

就是希望當在a視窗按下ok的botton才由a視窗跳到b視窗

在b視窗按下return才跳回a視窗,不然值是不會改變的

不知有沒有什麼好想法,你提的域變數如何在不同的v之中做呼叫?

或把a的vi與b的vi放入一個lib好像只能建之top level而不能在loop level的方式建之關係,不知道有沒什麼好點子呢?

全域變數就是在不同vi中使用的啊,不然用區域變數就好了

你可以看一下example,查Global就可以找到範例了

除了使用Local Variable,Global Variable,Notifier Operations等作為VI與VI之間參數的傳遞.

你可以設計

視窗1:顯示a+b=c的畫面,下一步的按鈕及離開程式的按鈕.

1)當按下下一步按鈕時,呼叫視窗2

2)按下離開程式的按鈕,則離開程式.

視窗2:輸入a值控制元,下一步按鈕及上一步按鈕.

1)輸入a值,按下一步按鈕時,將參數記錄起來.開啟視窗3並關閉視窗2.

2)按上一步按鈕時,開啟視窗1並關閉視窗2.

視窗3:輸入b值控制元,開始計算按鈕及上一步按鈕.

1)輸入b值,按開始計算按鈕時,將參數記錄起來.開啟視窗1並關閉視窗3.

2)按上一步按鈕時,開啟視窗2並關閉視窗3.

當然,有些地方要自己想一下,基本上關閉或開啟的方式,在論壇其他地方都找得到.

試試看吧!![](upload://kgKjFjULeiT3VYYN3Ma0GFEQlGF.gif)

我做了一個比較進階的程式,主要利用幾個技巧來達到![](upload://jjI19MNbuPM2C9il3mIEsiIuEZ8.gif):

1)在資料傳遞方面,我減少使用Local Variable的使用量,只在2個地方使用Page1.vi及Page2.vi.主要是要再重新開啟vi時,會把Notifi er裡(也就是上一次)的參數顯示在Front Penal的Numeric裡.進而以Notifier Operations來取代.

2)在做畫面切換時,利用自己做的Close.vi及Open.vi來開啟或關閉vi.

3)設定VI Properties的Windows Behavior為Modal,所以當執行某一個vi時,該vi會一直保持在畫面最上層.

Main.vi:

1)在此vi為主要的vi,也就是所謂的主程式.當執行候,按下Front Penal畫面中的">>"按鈕,表示開啟(呼叫)Page1.vi,來進行A參數的輸入.

2)Front Penal上的"Exit"按鈕,按下後即離開並"關閉"程式.

3)當程式開始時,會利用Obtain Notifier建立一個存放參數的,暫時說為"參數暫存區",此參數暫存區的資料型態我是利用A,B,C的Cluster來建 立.所以Notifier的傳遞方式都是以Cluster的型態.

4)在Event Structure的Timeout事件裡,一直讀取A,B,C三個參數的值,所以當參數暫存區的資料一改變,Main.vi上 也會立即顯示目前改變的值.

Page1.vi:

基本上在這個vi內,當你按下"<<"按鈕時,會關閉Page1.vi.但是如果按下">>"按鈕時, 會先將A參數存入參數暫存區內.再開啟Page2.vi,然後關閉Page1.vi.

Page2.vi:

與Page1.vi大致相同,唯一不同的地方是再按下"Ans"按鈕後,會計算A+B的值,並將C參數存入參數暫存區內,但又因 為Main.vi的Event Structure Timeout事件,一直讀取A,B,C三個參數的值,所以當參數暫存區的資料一改變,Main.vi上也會立即顯示目前改變的 值.

2004-06-16_101844_A_B_C.llb

在程式中A_B_C.llb中只需執行Main.vi即可.![](upload://kgKjFjULeiT3VYYN3Ma0GFEQlGF.gif)