Лаба 1 по ММ. Основы работы с пакетом Matlab
.pdf61
Функционирование графического интерфейса
Принципиальная схема взаимодействия модулей разработанной программы показана на рис.11. Головная программа DRIVE вызывает основную графическую программу NAME.M, которая при первом исполнении создает графический интерфейсный экран с кнопками, окнами, поясняющим текстом и т.д. После этого система переходит в режим ожидания событий - нажатия мышкой в интерфейсном окне. Если это нажатие происходит в редактируемом окне, после чего с помощью клавиатуры изменяется значение в этом окне и нажимается клавиша Enter, то начинается выполнение процедуры Func_Edit, которая и обновляет соответствующие данные в записи info, после чего заносит обновленные значения в UserData. Если же происходит нажатие на кнопку Run, то обновляются значения редактируемых окон и выполняется функция Run.
Рис. 11. Принципиальная схема функционирования графического интерфейса
Разработка функции Run
Функция выполнения основного действия (кнопка RUN) пишется на основании ранее имевшейся программы расчета R-C цепочки. Первая группа добавляемых операторов - извлечение новых значений задаваемых переменных
h0=gcf;
info=get(h0,’UserData’);
N=info.N;
62
R=info.R;
C=info.C;
....................
%Основной расчетный алгоритм
%Построение насчитанных графиков в окне
%Первое окно - рисуем сигнал
hax1=finobj(’Tag’,’Axes1’); % Определение дескриптора осей этого
окна |
|
subplot(hax1); |
% Рисуем подрисунок в этом окне |
cla; |
% Стирание предыдущего изображения в этом |
окне |
|
hl1=line(t,E); |
% Определить линию с дескриптором hl1 |
set(hl1,’color’,’r’,... |
% Обновить данные для линии hl1 цветом ’r’ |
’parent’,hax1); |
% в осях hax1 |
title(’Сигнал E(t)’); |
% добавить надпись к этому окну |
........................... |
|
И так далее для каждого окна.
Разработка функции Exit
Самая простая процедура - это процедура отключения программы и стирания рисунка
function f=Func_Exit() delete(gcf);
После выполнения этой процедуры удаляются все графические объекты в текущем окне и закрывается графическое окно.
Разработка функции Edit
Функция редактирования значений в окнах ввода. h0=gcf;
%Считывание данных из общего блока всего рисунка. info=get(h0,’UserData’);
%Определение дескриптора редактируемого окна hedN=findobj(h0,’Tag’,’EditN’
%Сканирование строки с преобразованием к формату e newN=sscanf(get(hedN,’string’),’%e’);
if ~isempty(newN)
63
info.N=newN;
end;
................
Дескриптор соответствующего редактируемого окна в данном примере находится с помощью функции findobj - нахождение объекта по известному значению его свойства (в данном случае - свойству Tag). Можно эти дескрипторы передавать из процедуры NAME.M с помощью оператора global или через свойство UserData. В конце всей функции после выполнения группы операторов, подобных приведенным, для каждого редактируемого окна необходимо результаты обновления info присвоить свойству ’UserData’ с помощью оператора
set(h0,’UserData’,info); % Занесение новых данных из info в UserData.