2013-05-14 88 views
1

我想在MATLAB中創建一個圖形用戶界面,其中有兩個可用於調整值a和b的滑塊。我知道我可以得到GUI打開Simulink和有SIMULINK做到這一點,然後分組使用UDP信息圖如下圖所示:將simulink塊轉換爲GUI代碼?

http://i.imgur.com/pkxomQi.png

不過,我寧願能夠將這些SIMULINK轉換塊在GUI滑塊中編碼。更具體地說,我對編碼數據包輸出塊感興趣,因此GUI按鈕可以發送信息。有誰知道如何做到這一點?

回答

1

只要知道塊的「路徑」,就可以使用set_paramget_param來設置/獲取其參數。在你的情況下,第一個Constant塊的路徑爲'rtpacketio/Constant' - 也就是系統名稱後跟/,後面跟着塊的名稱。

要了解哪些參數可用於塊,你可以做,

>> get_param('rtpacketio/Constant', 'DialogParameters') 

ans = 

     Value: [1x1 struct] <<< This is the one you need to change 
VectorParams1D: [1x1 struct] 
    SamplingMode: [1x1 struct] 
     OutMin: [1x1 struct] 
     OutMax: [1x1 struct] 
OutDataTypeStr: [1x1 struct] 
    LockScale: [1x1 struct] 
    SampleTime: [1x1 struct] 
    FramePeriod: [1x1 struct] 

注意,這些參數的值不struct秒 - 這是從返回的結構數組DialogParameters參數代表信息關於參數;當您設置或獲取塊的參數時,它必須是一個字符串(因爲它將進入edit控件)。在您要設置這個參數的代碼,那麼,你可以做到以下幾點:

set_param('rtpacketio/Constant', 'Value', num2str(myConstantValue)); 

您可能希望用更精確的等同替換num2str,如果您需要高精度。

+0

所以用這種方法,那麼Simulink必須正確運行?因爲我需要做的是能夠與控制機器人手臂的目標PC通信。如果沒有打開Simulink,有一個通過UDP傳輸數據的圖形界面將會很不錯。通過使用滑塊,信息直接傳輸到目標PC。這可能嗎? – 2013-05-16 03:41:30

+1

我相信DSP工具箱爲Simulink提供了TCP和UDP模塊,因此您可以在TCP控制器上使用TCP發送和模型在本地運行模型,並使用TCP接收並以此方式發送您的命令數據。另一種選擇是[FileExchange提交](http://www.mathworks.co.uk/matlabcentral/fileexchange/13721-distributed-parallel-simulations-with-simulinkr-and-other-tools),這很不錯,儘管這有點...古怪,並沒有與來源。你可能直接打開一個TCP連接直接到TCP接收塊,但我從來沒有做過,所以不知道多少。 – wakjah 2013-05-16 07:48:50

+0

感謝wakjah。因此,對於您的第一篇文章,該方法需要Simulink開放嗎?並且GUI可以通過使用set來編輯參數並正確地獲取?只是想確定。 – 2013-05-17 23:55:24