2013-05-14 91 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