![](/user_photo/2706_HbeT2.jpg)
Лаба 1 по ММ. Основы работы с пакетом Matlab
.pdf![](/html/2706/270/html_SReolCNlr6.H5VI/htmlconvd-uiwSh261x1.jpg)
61
Функционирование графического интерфейса
Принципиальная схема взаимодействия модулей разработанной программы показана на рис.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.