2012年11月8日 星期四

連結 Indicators 和 Shared Variables

前一篇,我們在專案裏以 New > Variable 的方式連結已存在的網路共用變數 (Network Shared Varialbe),讓應用程式之間透過網路傳虒資料,程式會連結到 Temperature 共用變數,其完整路徑如下,其中 192.168.2.106 是我電腦的 IP:

\\192.168.2.106\NSV_Demo\Temperature

這個方法雖然有效,不過卻會建立另一個多餘的叫作 RemoteTemperature 的新的共用變數,新共用變數的完整路徑如下:

\\192.168.2.106\Binding_NSV\RemoteTemperature

如下圖所示:

image

要存取共用變數,除了這個方法外,我發現還有一個更簡單的方法,而且不會建立一個多餘的共用變數。這個方法是把 Control 或 Indicaotr 直接與共用變數連結起來, 操作步驟為:

Step 1: 首先,建立一個新的 VI,一樣,我要用 Thermometer 來顯示 Temperature 網路共用變數的內容,所以設計如下一個很簡單的程式:

image image

Step 2: 接著,不管在 Front Panel 或是 Block Diagram 操作都可以,在 thermometer 上按右鍵,在右鍵選單中點選 Propertyies,這時會跳出如下的視窗:

image

Step 3: 參考下圖,輸入下列資料:

  • 頁面: 切到最右邊的 Data Binding 頁面
  • Data Binding Selection: 選擇 Shared Variable Engine (NI-PSP)
  • Path: 輸入在這篇建立的共用變數的完整路徑 \\192.168.2.106\NSV_Demo\Temperature

image

因為我們知道共用變數的完整路徑,所以直接輸入即可,其實也可以點 Browse 鈕,如下圖,然後在底下視窗中瀏覽網路上可用的共用變數:

image

Step 4: 完成上述動作後,就已經把 thermometer indicator 與共用變數連結起來,現在我們可以同時跑這篇 (如下圖左) 與本文的程式 (如下圖右),然後你會看到,當滑動左手邊視窗的 Temperature 時,右手邊視窗的 Thermometer 也會同步更新:

image  image

把 Control 或 Indicaotr 直接與共用變數連結起來,這比前一篇說的方法簡單快速多了,而且不會產生多餘的共用變數。

現在有個問題,發佈共用變數的程式以及訂閱共用變數的程式,到目前為止我都是放在同一電腦上跑的,還沒遇到什麼困難。既然是網路共用變數,遠端電腦應該也可以來訂閱與取用的才對,不過我發現,由於現在 Windows 都有內建防火牆,如果遠端電腦要訂閱共用變數,得先設定防火牆才能過得了關。這問題我會花點時間研究,之後再來分享。

參考資料

0 意見: