1.3 Описание библиотеки функций Array Visualizer.
Ввиду сложности создания Windows-приложений, а также того, что ActiveX-компонента Avis2D не корректно отображает одномерные массивы было решено использовать непосредственно оболочку Array Viewer в совокупности с программой, расширяющей его возможности, а так же служащей более простым интерфейсом между программой инженера и AV. Для создания программы был применен подход с использованием fagl- и fav- процедур. Программа писалась на языке CVF v6.5.
Опишем процедуры API AV, встраивание которых в приложение позволяет запускать AV, передавать ему массив, управлять изображением.
FAGL - подпрограммы.
Синтаксис подпрограммы | Описание |
faglClose(array,status) | Закрывает экземпляр AV. Если затем возникает потребность отобразить массив array снова, то достаточно вызвать лишь faglShow; вызова faglStartWatch выполнять не нужно |
faglEndWatch (array, status) | Удаляет массив array из списка отображаемых массивов и освобождает ресурсы, связанные с array и используемые подпрограммами библиотеки. |
faglGetShareName (array, filename, status) | Строка filename, возвращаемая этой подпрограммой, может быть передана процедурам Avis2D и AvisGrid как свойство FileName. |
faglHide(array, status) | Делает экземпляр AV невидимым. Экземпляр AV станет видимым, если затем вызвать faglShow. Однако если экземпляр AV создан посредством favStartViewer, то вместо faglShow следует употреблять favShowWindow |
faglLBound (array, lbnd, status) | Устанавливает левые границы измерений отображаемого массива в видах Data или Graph Views AV. По умолчанию массив отображается с границами, равными единице. |
faglSaveAsFile (array, filename, status) | Сохраняет текущий массив в файле с расширением AGL. Такой файл может быть загружен и отображен в AV. |
faglShow (array, | Создает экземпляр AV и отображает данные |
status) | массива array. Так же делает экземпляр AV видимым. |
faglStartWatch (array, status) | Добавляет массив array в список отображаемых массивов и возвращает дескриптор hv, который используется для доступа к массиву другими подпрограммами библиотеки. Фактически faglStartWatch использует системные ресурсы для приведения array к виду, необходимому для faglShow. Чтобы освободить эти ресурсы, следует вызвать faglEndWatch. |
FaglUpdate(array, status) | Приводит в соответствие изображение с данными, хранящимися в массиве array. Употребляется, если приложение изменило отображаемый массив array с момента последнего вызова faglUpdate или faglShow и если есть необходимость обновить изображение. Если же экземпляр AV ассоциируется с массивом, созданным favStartViewer, а не faglShow, то вместо faglUpdate нужно вызвать favUpdate. |
Параметры fagl подпрограмм:
Имя | Смысл/вид | Тип. |
array | Имя отображаемого массива / входной | Числовой |
status | Статус вызова fagl-подпрограммы. В случае успеха равен нулю/ выходной | integer(4) |
filename | Строка, возвращаемая faglGetShareName/ выходной | CHARACTER(*) |
filename | Имя файла без расширения, если файл пишется в директорию, из которой вызвано приложение, либо полное имя файла / входной. | CHARACTER(*) |
lbnd | Массив ранга 1, размер которого равен рангу отображаемого массива / выходной | INTEGER(4) |
title | Строка, отображаемая в заголовке экземпляра AV / входной | CHARACTER(*) |
Для вызова приведенных выше подпрограмм в использующем их программном компоненте следует выполнить ссылку:
Use avdef ! Ссылка на модуль avdef.f90
Модуль AVDEF содержит интерфейсы fagl-подпрограмм.
Перечисленные подпрограммы обычно используются следующим образом:
1. до отображения массива array вызовите faglStartWatch с параметром array;
2. если необходимо отображать массив, имея нижнюю левую границу, отличную от единицы, примените faglLBound;
3. для отображения сообщения, сопровождающего выводимые данные, вызовите faglName;
4. для запуска AV и отображения массива array вызовите faglShow с первым параметром, равным array. AV будет функционировать до тех пор, пока не выполнена команда faglClose;
5. если хранимые массивом данные подверглись изменениям, то для их отображения вызовите faglClose;
6. для сохранения массива array в виде файла с расширением AGL (Array Graphing Language) вызовите faglSaveAsFile, использовав array в качестве первого параметра. При этом AV может быть некактивным;
7. при необходимости можно вызвать faglGetShareName и получить строку filename, позволяющую процедурам Avis2D и AvisGrid осуществлять доступ к памяти, занятой массивом.
8. после завершения просмотра массива вызовите faglEndWatch.
Для массивов отображаемых в AV рекомендуется использовать атрибут !DEC$ATTRIBUTES array_visualizer :: array. Действие этого атрибута таково: память, занимаемая массивом array, используется и AV и приложением. При отсутствии атрибута будут созданы две области данных array и при каждом обновлении массива после вызова faglUpdate данные будут копироваться из области, принадлежащей приложению, в область, используемую AV.
Заметим, что DEC-атрибут ARRAY_VISUALIZER может быть применен только с динамическими объектами, т.е. объектами, обладающими атрибутом PIONTER или ALLOCATABLE.
FAV - подпрограммы.
Fav – подпрограммы управляют AV и обеспечивают взаимодействие AV с приложением. Как правило, fav- и fagl- подпрограммы используются совместно. Fav – подпрограммы подразделяются на группы, имеющие названия:
· запуск AV
· доступ к данным
· зона вывода
· фильтрация данных
· палитра
· оси координат
· выбор
· виды изображений
· 3D вид
· растровая карта
· векторный граф
· отображение данных
· камера
· маркер
· разное
Работа с fav-подпрограммами станет возможной после выполнения ссылки:
Use avviewer
в которой модуль AVVIEWER содержит интерфейсы и константы подпрограмм.
Поскольку fav – подпрограмм очень много (более 100), приведем описание только тех из них, которые используются в программе.
Подпрограмма | Что выполняет |
Запуск AV | |
favStartViewer | Запускает экземпляр AV |
favEndViewer | Завершает работу экземпляра AV |
Доступ к данным | |
favSetArray | Загружает в AV заданный массив |
Фильтрация данных | |
favUpdate | Вызывается, когда нужно обновить изображение, созданное AV, чтобы отобразить изменения, произошедшие с момента последнего обновления данных или начальной загрузки. |
Оси координат | |
favSetDimScale | Ассоциирует ось координат с массивом, содержащим разметку оси. |
favSetUseAxisLabel | Включает/отключает вывод заданных пользователем имен осей координат |
favSetAxisLabel | Задает имя указанной оси координат. |
Виды изображений | |
favSetGraphType | Задает видовой режим |
Разное | |
favSetArrayName | Задает текст, выводимый на заголовочной полосе AV |
favShowWindow | Отображает/скрывает окно AV |
... системам линейных алгебраических уравнений с более чем одной неизвестной; MATLAB решает такие уравнения без вычисле-ния обратной матрицы. Хотя это и не является стандартным математическим обозначением, система MATLAB использует терминологию, связанную с обычным делением в одномерном случае, для описания общего случая решения совместной системы нескольких линейных уравнений. Два символа деления / ...
... концентрических окружностей с уменьшающимся радиусом по мере затухания колебаний скорости и момента. Аналогичная картина наблюдается при ступенчатом набросе нагрузки. 5. РАЗРАБОТКА ВИРТУАЛЬНОЙ ЛАБОРАТОРНОЙ РАБОТЫ НА БАЗЕ ВИРТУАЛЬНОЙ АСИНХРОННОЙ МАШИНЫ Иную возможность анализа АД представляет специализированный раздел по электротехнике Toolbox Power System Block. В его библиотеке имеются блоки ...
... - в группе переменных, «зажатых в кулак», но этот «кулак», как мы уже отмечали, легко разжать, выводя на дисплей найденные значения с «первородной» размерностью массы (kg), длины (m) и времени (sec): пакет MathCAD «разжимает» и сам вектор, м составные размерности, приписывая к числам комбинации основных физических единиц. Но не только этим хороша размерность в задачах. Главное то , что она ...
... де-факто, чему способствовала и их большая универсальность). Таким образом, именно Microsoft Excel был выбран мной для разработки средства автоматизации расчетов в лабораторной работе «Предварительные вычисления в триангуляции». Поэтому другие средства построения электронных таблиц здесь не рассматриваются, но зато уделяестся внимание некоторым специфичным средствам Excel. Возможности EXCEL ...
0 комментариев