2013-05-14 5 views
1

Я хотел бы создать графический интерфейс в MATLAB, который имеет два ползунка, которые можно использовать для настройки значений a и b. Я знаю, что могу получить GUI, чтобы открыть Simulink и есть Simulink сделать это, а затем пакетную информацию, используя UDP, как показано на следующем рисунке:Преобразование блоков симуляции в код для графического интерфейса?

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

Однако, я бы предпочел, чтобы иметь возможность конвертировать эти Simulink блокирует код в слайдере GUI. В частности, меня интересует кодирование блока вывода пакета, чтобы кнопка GUI могла отправлять информацию. Кто-нибудь знает как это сделать?

ответ

1

До тех пор, пока вы знаете «путь» к блоку, вы можете установить/получить его параметры с помощью set_param и get_param. В вашем случае первый константный блок имеет путь '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 s - массив структуры, которая возвращается из DialogParameters параметра представляет информацию о параметрах; когда вы устанавливаете или получаете параметр блока, он должен быть строкой (потому что он переходит в элемент управления edit). В коде, где вы хотите установить этот параметр, то вы можете сделать следующее:

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

Вы можете заменить num2str с более точным эквивалентом, если требуется высокая точность.

+0

Итак, с помощью этого метода, Simulink должен работать правильно? Потому что мне нужно будет общаться с целевым ПК, который управляет роботизированной рукой. Было бы неплохо иметь графический интерфейс, который передает данные через UDP без открытия Simulink. Используя слайдер, информация передается непосредственно на целевой ПК. Это возможно? –

+1

Я считаю, что набор инструментов DSP поставляется с блоками TCP и UDP для Simulink, поэтому вы можете запускать модель локально с помощью TCP-отправки и модели на контроллере с приемом TCP и отправлять ваши данные команд таким образом. Другим вариантом является [это представление FileExchange] (http://www.mathworks.co.uk/matlabcentral/fileexchange/13721-distributed-parallel-simulations-with-simulinkr-and-other-tools), что довольно хорошо, хотя это немного ... причудливый и не приходит с источником. Возможно, вы могли бы просто открыть TCP-соединение непосредственно в блоке TCP Receive, но я никогда не делал этого, поэтому не знаю многого. – wakjah

+0

Спасибо wakjah. Итак, для вашего первого сообщения этот метод требует, чтобы Simulink был открытым? И GUI может редактировать параметры, используя set и получить право? Просто хочу убедиться. –

Смежные вопросы