如何使用shared variabe在兩台電腦之間傳遞數值?

請問各位高手:

小弟寫了一個小專案,測試shared variable是否能透過區域網路,在兩台電腦之間傳遞數據。

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

(檔案下載:share_variable測試程式.zip)

我新增了一個shared variable,並設定為network-published,

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

還寫了write.vi和read.vi兩個介面。

當我在同一台電腦執行這兩個VI時,可以正常運作,

但是若將read.vi複製到另一台電腦執行時,卻讀不到shared variable,且出現錯誤訊息!

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

請問是哪邊需要設定呢?

SKYBOW40154.6340625

shared variable

只能在同一電腦之間傳遞資料

區網傳遞資料用 tcp ip

labview 裡面有範例可以參考

[QUOTE=SCOTT7O]

shared variable

只能在同一電腦之間傳遞資料

區網傳遞資料用 tcp ip

labview 裡面有範例可以參考

[/QUOTE]

啥咪? 您確定嗎?

在同一台電腦中傳遞的應該是global variable或是single process shared variable吧?

因為我在以下兩個網頁看到,只要把shared variable設定為network-published,就可以透過區域網路傳到遠端電腦。

此方法用到的技術是NI-PSP,它似乎已經把TCP的架構寫在裡面了,所以可以讓shared variable的使用很簡便。

http://zone.ni.com/reference/en-XX/help/371361D-01/lvconcepts/ni_psp/

http://zone.ni.com/devzone/cda/tut/p/id/4679

只是我還是不太確定,實際上運用時要設定什麼參數,

我也參考過LabVIEW內建的shared variable Client-Server範例了,但還是看不出個所以然...

有沒有使用過network-published shared variable的高手可以指導一下呢? 謝謝!

基本上shared variable是有支援2台電腦(以上)的連接。

[轉貼]open up Project Explorer and create a shared variable as described in step 1. In the Variable tab check Enable Aliasing and choose PSP URL in the Bind To section. Click Browse, go to your publisher PC's IP and expand it. You should be able to see your shared library and variable Select that and then click OK to exit the variable configuration window.

![](upload://4sWZPvcDj7O4JYrljMIQBflDu7m.png)


給你網址參考http://digital.ni.com/public.nsf/allkb/7815BCE435DCC432862575DA006FEBF8

*假如說找不到你要接收的電腦,那你可能就是要換改用TCP/IP使用了。

我最近也有研究shared variable

其實很簡單先設一個Project New一個variable 設定好了之後

就會啟動一個PSP URL 的 Server 可以從 Tools --> Distruted System Manager 可以看到目前設定的 shared variable

而另外一台PC如果要抓這台shared variable就要輸入 PSP URL 可點旁邊的瀏覽模式看到

要注意的一點是如果本機設計可以看到 但是別台PC沒辦法看到 就表示 PSP Server 未啟用 或 options 有東西沒設定到

還有一點不管是本機還是別台PC 都要灌 labview 作成安裝檔好像可以但沒試過

[QUOTE=Ding00]

我最近也有研究shared variable

其實很簡單先設一個Project New一個variable 設定好了之後

就會啟動一個PSP URL 的 Server 可以從 Tools --> Distruted System Manager 可以看到目前設定的 shared variable

而另外一台PC如果要抓這台shared variable就要輸入 PSP URL 可點旁邊的瀏覽模式看到

要注意的一點是如果本機設計可以看到 但是別台PC沒辦法看到 就表示 PSP Server 未啟用 或 options 有東西沒設定到

還有一點不管是本機還是別台PC 都要灌 labview 作成安裝檔好像可以但沒試過

[/QUOTE]

謝謝樓上兩位高手的建議,

我有照這個knowledge base的步驟做過了,

也在兩台電腦都已安裝LabVIEW 2009 Full Development System,

也試過Distruted System Manager,確認該process是online的,

但在B電腦就是看不到A電腦發布的shared varaible,

或許是XP的防火牆問題?

真是令人百思不得其解阿!

在B台的Distruted System Manager 有看到A台的電腦名稱嗎??

如果沒有就有可能是防火牆

如果有看到A台的電腦名稱 底下卻沒有A台發布的shared varaible

表示A台設定有問題

補充一點只要設定過shared varaible成功依次 不管該Project  是否執行甚至是否開啟都沒關係

只要PSP Server 開著就就可以  read\write  並保持最後的結果

除非在Distruted System Manager 內設定停止 或 清值

當然重開PC 值也會清掉 但 並不會消失

Ding0040157.7332986111

[QUOTE=Ding00]

在B台的Distruted System Manager 有看到A台的電腦名稱嗎??

如果沒有就有可能是防火牆

如果有看到A台的電腦名稱 底下卻沒有A台發布的shared varaible

表示A台設定有問題

補充一點只要設定過shared varaible成功依次 不管該Project  是否執行甚至是否開啟都沒關係

只要PSP Server 開著就就可以  read\write  並保持最後的結果

除非在Distruted System Manager 內設定停止 或 清值

當然重開PC 值也會清掉 但 並不會消失

[/QUOTE]

我是一直看不到該電腦的名稱,更不用說底下的SV了,

所以我剛剛也試了一下,關閉兩台電腦XP的防火牆,果然就抓到了!

但我覺得不應該把防火牆關掉,正統作法應該是設定例外清單讓SVE通過XP防火牆才對,

所以我找到這個說明:

http://digital.ni.com/public.nsf/websearch/0D7B86F4B4D19A5E86256F9A006EECB1?OpenDocument

經過我嘗試後,在LabVIEW2009和winXP的環境下,只要將以下三個執行檔加入例外清單,

即使防火牆開著,也可以抓到shared variable了!

  • C:\Windows\system32\lkads.exe
  • C:\Windows\system32\lktsrv.exe
  • C:\Program Files\National Instruments\Shared\Tagger\tagsrv.exe
  • 加入的步驟就是如該網頁所說明!

    幾經曲折,這個問題終於解決了...感謝Ding00的經驗分享和樓上諸位的協助!

     

    我也遇到類似問題,不過我是傳送端用XP,接收端用WIN 7…

    剛開始也有找不到變數的問題,但是如樓上方式XP端將幾個程式改成例外後,在WIN 7那邊
    就可以看到變數了,不過WIN 7端接收到的資料並不室傳去的,都是0…

    還有在WIN 7那邊點選BROWSE偶而也會看不到XP PC,再點幾次有時會出現…
    感覺有時會斷線的樣子…