Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Проблемы программирования

Процедуры ответных вызовов, используемые в графическом интерфейсе пользователя

Интерфейс пользователя, основанный на дескрипторной графике системы MATLAB, может быть реализован при помощи М-функции, которая включает процедуры ответных вызовов и выполняет ответные действия, связанные с обработкой событий, инициируемых моделью системы Simulink и графическим интерфейсом пользователя. Графический интерфейс пользователя (GUI) должен удовлетворять следующим требованиям:

1. Диалоговое окно должно открываться двойным нажатием левой кнопки мыши на изображении блока (параметр процедуры ответного вызова OpenFсn). Функция ответного вызова должна содержать операторы системы MATLAB, отвечающие за формирование интерфейса и его инициализацию, включать проверку на наличие уже открытых окон графического интерфейса соответствующих одному и тому же блоку системы Simulink.

2. В случае удаления блока, все открытые окна, связанные с этим блоком, должны быть закрыты (параметр процедуры ответного вызова DeleteFcn).

3. Необходимо отслеживать изменения имени блока, связанного с процедурой ответного вызова.

4. В случае закрытия окна модели, содержащей некоторый блок, все открытые окна, связанные с этим блоком, должны быть закрыты (параметр процедуры ответного вызова ModelCloseFcn).

5. В случае закрытия подсистемы, содержащей некоторый блок, все открытые окна, связанные с этим блоком, должны быть закрыты (параметр процедуры ответного вызова ParentCloseFcn). Это требование является необязательным.

6. Окно графического интерфейса пользователя должно содержать механизмы управления моделью Simulink и, как следствие, обеспечивать собственные процедуры ответных вызовов.

Удобным подходом является включение в М-файл инструкций, предназначенных для установки процедур ответных вызовов. При выполнении М-функции, процедуры ответных вызовов после сохранения файла модели станут постоянной ее частью.

Добавление в модель пустой подсистемы является способом формирования графического интерфейса пользователя для модели системы Simulink. В данном случае можно подключить процедуру ответного вызова с параметром OpenFcn для блока подсистемы таким образом, чтобы окна графического интерфейса появлялись при двойном нажатии левой кнопки мыши на изображении этого блока. Также можно провести маскирование этой подсистемы для формирования графического рисунка на изображении блока, а также для сохранения созданного изображения блока.

 

 

Существует ряд проблем программирования, возникающих при разработке функций ответных вызовов в виде М-файлов.

Использование имен блоков и подсистем

Не рекомендуется использовать имена блоков и подсистем в явном виде в функциях ответных вызовов в виде М-файлов. Вместо этого следует применять команды gcb и gcs, а полученные значения присваивать переменным системы MATLAB.

Текущая система и текущий блок

Команды gcb и gcs могут быть использованы только в процедурах ответных вызовов Simulink. Использование этих команд в процедурах ответных вызовов, связанных с управлением графическим интерфейсом пользователя, не гарантирует, что данный блок или модель системы являются текущими. Например, команда gcb возвращает полный путь системы Simulink к блоку, который был последним выделен при помощи мыши, даже если этот блок находится в другом открытом окне модели системы Simulink.

Большинство процедур ответных вызовов, связанных с пользовательским интерфейсом, должны обращаться к различным параметрам модели системы Simulink, поэтому необходимо сохранять имя модели, системы или блока в локальной области, которая является доступной для функций ответного вызова.

Локальные переменные

Для организации ответных вызовов рекомендуется отдавать предпочтение М-функциям, которые, как правило, используют локальные переменные. Объявление в функциях одной или нескольких глобальных переменных может привести к возникновению ошибок, т. к. операция присвоения значения переменной возможна из любых функций.

Для задания данных, определенных пользователем, рекомендуется присваивать указанные значения параметру UserData или вводить значения в диалоговом окне маскированного блока.

Каждый блок Simulink имеет параметр UserData, которому можно присваивать значение любой переменной. Этот параметр не сохраняется вместе с моделью, поэтому он не может быть использован для хранения исходных данных. Параметр UserData доступен для блока системы Simulink лишь в течение того времени, пока окно модели открыто, поэтому удобен для хранения текущих значений параметров. Команда

set_param(gcb, 'UserData', value);

присваивает параметру UserData блока значение value. Функция

value=get_param(block, 'UserData');

позволяет извлечь значение параметра UserData. Здесь value может быть скалярной величиной, матрицей, массивом ячеек или структурой.

Параметр UserData существует для объектов дескрипторной графики системы MATLAB лишь в течение того времени, пока существует сам объект. Например, параметр UserData для графического объекта Figure доступен на промежуток времени, пока объект открыт. В случае закрытия объекта Figure этот параметр будет уничтожен.

Ввод параметров диалоговых окон маскированных блоков является альтернативой задания параметра UserData. Переменные, определенные таким образом, доступны как функциям ответного вызова, так и любым блокам маскированной подсистемы. Значения переменных, связанных с каждым полем диалогового окна, обрабатываются как параметры маскированного блока (подсистемы), и могут быть установлены с помощью команды set_param, а извлечены при помощи команды get_param. Значения этих параметров должны вводиться в полях диалогового окна как строковые выражения.

 

<== предыдущая лекция | следующая лекция ==>
Графический интерфейс пользователя и организация процедур ответных вызовов | Завдання курсу
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 552; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.