如何建立多個視窗的迴路設計,何種方式比較適合
a視窗有個設定值a可調
b視窗有個設定值b可調
結果值a+b於b和c視窗分別display出來
有return button可重覆來回a與b視窗修改設定值a與b的值
b與c的視窗則display改變後的結果
我用event structure來做或lib辨不到,因為有先後次序無法再回去設定
請問大家有沒有什麼好方法
如何建立多個視窗的迴路設計,何種方式比較適合
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上也會立即顯示目前改變的 值.
在程式中A_B_C.llb中只需執行Main.vi即可.![](upload://kgKjFjULeiT3VYYN3Ma0GFEQlGF.gif)