2013-11-28 51 views
1

我想在我的VI(它已經在運行)中設置一個控制值。如何通過Active X更改LabVIEW控制值(在已經運行的VI中)?

我用下面的命令:

e=actxserver('LabVIEW.Application'); 
vipath='C:\DATA\Labview\test.vi'; 
vi=invoke(e,'GetVIReference',vipath); 
% my control parameter is z which is DBL (double precision) 
vi.SetControlValue('z',10) 

一切似乎做工精細! 我能看到的「Z」值更改爲10在VI但實際上VI不讀取值和VI應用程序沒有響應這個值

的VI是第三方應用程序,這是由開發其他人。不幸的是,我沒有特權在這個論壇發佈一張圖片(我需要10分)

我想從Matlab控制變量「z」。 「z」是一個.dll文件的輸入。請注意,我可以通過VI中的前面板控制來完成,但不能像前面所描述的那樣使用Matlab。

回答

0

Got it!控制變量'z'在事件結構內,並且被設置爲'z'的值變化。所以,我暫時將其刪除,並且運行良好。

但是,我不知道如何與事件結構工作,用Matlab的Active X

+0

您應該能夠將以下LabVIEW代碼移植到Matlab中:http://i.imgur.com/C102sbg.png –

2

在沒有看到代碼,這是不可能的說,但這裏有一些猜測:

你閱讀使用值變化事件的控制?此事件只能通過UI中的更改或調用控件的值(信號)屬性觸發。我不確定你是否可以從ActiveX接口訪問這個屬性,但是你可以通過獲取對控件的引用來嘗試(儘管我不知道ActiveX接口是如何實現的,也許VI有一個方法?) 。如果你不能,最好的辦法可能是改變VI來輪詢控制。你也可以有另一個循環,每當控制改變時就會觸發事件,但如果你這樣做,我建議你有一個單獨的控制來傳遞這個值。

另一種可能性 - 在您修改它之前從控件的終端讀取該值,並且您的代碼使用線上的值,而不是控件的值。

如果這沒有幫助,請發佈代碼。

+0

它的VI是第三方應用程序,這是由別人開發的控制。不幸的是,我沒有特權在這個論壇上張貼它的圖片(我需要10分) 我想從Matlab控制變量「z」。 「z」是一個.dll文件的輸入。請注意,我可以通過VI中的前面板控制來完成,但不能像前面所描述的那樣使用Matlab。 – user3046246