Файл: Методические рекомендации к выполнению курсового проекта по мдк 01. 02 Прикладное программирование.docx

ВУЗ: Не указан

Категория: Методичка

Дисциплина: Не указана

Добавлен: 04.02.2024

Просмотров: 165

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
      1. Очереди обмена данными



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

Она реализована в виде шаблона FIFOQueue, где Т – это тип данных, которым будет производиться обмен.

Данный шаблон имеет следующие методы:

  • voidappend( T* data ). Данный метод добавляет блок данных в очередь;

  • T* get_next(). Данный метод удаляет блок данных из очереди, возвращая указатель на него;

  • boolempty(). Данный метод возвращает true, если очередь пустая.


      1. Базовая функциональность графических объектов



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

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

Данный класс имеет следующие методы:

  • ProfilographBaseScale( HWND parent_window ). Этоконструкторобъекта. В качестве входного параметра он принимает дескриптор родительского окна.

  • voidresize(). Данный метод должен быть вызван, когда родительское окно меняет свои размеры;

  • voidfill_scale(). Вызов данного метода приведет к тому, что объект обновит информацию в своем внутреннем графическом буфере;

  • voidapplay_changes(). Данный метод должен быть вызван, после изменения настроек программы.

  • voidrepaint(). Вызов данного метода приведет к обновлению изображения на экране.

Также в данном классе определены два интерфейса, которые необходимо перегружать в дочерних объектах:

  • virtual void fill_bitmap( HDC dc, HBITMAP bitmap, constCRect&rect ) = 0. Данный метод вызывается, когда необходимо заполнить bitmap базовым изображением (например, нанести сетку), в том числе и проинициализировать bitmap (например, рассчитать коэффициенты отображения). В качестве параметров в метод передаются контекст устройства для bitmap, дескриптор bitmap и геометрические размеры bitmap.;

  • virtual void paint_bitmap( HDC dc, HBITMAP bitmap, constCRect&rect ). Данный метод вызывается, когда необходимо отобразить на bitmap регулярную информацию. Параметры такие же, как для предыдущего метода.

Также в этом классе определены методы доступные только для дочерних объектов:

  • voidupdate_bitmap(). Вызов этого метода приведет к вызову метода paint_bitmap, а затем отображению bitmap на экран.


      1. Таймер



В программной компоненте системных функций реализован таймер, который посылает уведомление в виде объектов событий.

Таймер реализуется классом Timer, который имеет следующие методы:

  • Timer(BaseEventHandler* parent, int period, int ID = -1 ). Конструктор класса. Принимает на вход следующие параметры: родитель (объект, которому будут посылаться уведомления, об истечении заданного периода времени), значение периода таймера, и необязательный параметр – числовой идентификатор таймера;

  • voidstart(). Запускает таймер. После истечения заданного периода, родителю посылается событие TimerEvent, содержащее числовой идентификатор таймера, затем таймер автоматически перезапускается;

  • voidstop(). Данный метод останавливает таймер;

  • boolcheck_ID(intID ). Данный метод проверяет идентификатор таймера.



Программная компонента конфигурирования



Программная компонента конфигурирования предоставляет оператору средства для настройки программной компоненты отображения данных и отображению навигационной информации.

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

  • блок параметров;

  • блок выбора настоек;

  • панель информации.



      1. Блок параметров



Блок параметров представляет собой набор переменных, значения которых управляют процессом отображения данных профилографа. Набор параметров реализован в виде static переменных класса ProfilographParameters. В данном классе определены следующие параметры:

  • staticScaleTypescale_type. Тип горизонтальной шкалы (метры или секунды). Задается из диалога конфигурирования пользователем;

  • staticintdistance_scale_step. Размер шага сетки по оси Х в пикселях. Задается из диалога конфигурирования пользователем;

  • staticfloatdistance_scale. Определяет значение величины метр/пиксель. Рассчитывается автоматически при изменении соответствующих настроек;

  • staticfloattime_scale. Определяет значение величины время/пиксель. Рассчитывается автоматически при изменении соответствующих настроек;

  • staticboolscale_draw. Определяет, надо ли отображать сетку. Задается из диалога конфигурирования пользователем;

  • staticbooldepth_scale_draw. Определяет, надо ли отображать сетку глубин. Задается из диалога конфигурирования пользователем;

  • staticboolmeters. Определяет единицы измерения шкалы.

  • staticintmax_depth. В данной переменной хранится максимальное отображаемое значение глубины;

  • staticbooldraw_marking. В данной переменной хранится режим отображения маркеров (отображать/не отображать);

  • staticintmarking_step. В данной переменной задается шаг отображения маркеров в пикселях;

  • staticintcurrent_law. В данной переменной хранится текущий закон отображения данных.

  • staticfloatFD. В данной переменной храниться текущая частота дискретизации;

  • staticfloatsound_speed. В данной переменной храниться текущая скорость звука;

  • staticfloatspeed. В данной переменной хранится текущая скорость корабля носителя;

  • staticboolshow_amplitude. Данная переменная определяет, будут ли отображаться амплитудные отметки;

  • staticCStringimages_dir. В данной переменной хранится имя директории, в которую будут сохраняться копии экрана;

  • staticintperiod. В этой переменной хранится период сохранения экрана в миллисекундах;

  • staticboolsave_images. Эта переменная определяет, будет ли производиться периодическое сохранение экрана.




      1. Блок выбора настроек



Блок выбора настроек реализуется классом ProfilographControl. Данный класс реализует диалоговое окно со стандартными элементами ввода, хранимое в файле ресурсов (IDD_PROFILOGRAPH_CONTROL).

Данное диалоговое окно имеет следующие элементы ввода:

  • IDC_RADIO_TIME. Если выбран этот элемент, то отображение данных будет производиться по временной шкале;

  • IDC_RADIO_DISTANCE. Если выбран этот элемент, то отображение данных будет производиться по шкале дистанций;

  • IDC_RADIO_AMPLITUDE_ON. Если выбран этот элемент, то будет производиться отображение амплитудных отметок;

  • IDC_RADIO_AMPLITUDE_OFF. Если выбран этот элемент управления, то не будет производиться отображения амплитудных отметок;

  • IDC_STATIC_PALETTES_PARENT_WINDOW. Родительское окно для ComboBox, производящего выбор текущей палитры;

  • IDC_RADIO_SCALE_ON. Если выбран этот элемент, то будет производиться отображение сетки;

  • IDC_RADIO_SCALE_OFF. Если выбран этот элемент, то не будет производиться отборажение сетки;

  • IDC_COMBO_DISTANCE_STEP. Данный всплывающий список задает шаг отображение шкалы, для шкалы дистанций;

  • IDC_COMBO_DISTANCE_STEP. Данный всплывающий список задает шаг отображения шкалы, для шкалы времени;

  • IDC_RADIO_MARKS_ON. Если выбран этот элемент, то будет производиться отображение маркеров;

  • IDC_RADIO_MARKS_OFF. Если выбран этот элемент, то отображение маркеров производиться не будет;

  • IDC_COMBO_DISTANCE_COFF. Данный всплывающий список позволяет задать шаг отображения маркеров по шкале дистанций;

  • IDC_COMBO_TIME_COFF. Данный всплывающий список позволяет задать шаг отображения маркеров по оси времени;

  • IDC_RADIO_DEPTH_SCALE_ON. Если выбран данный элемент, то будет производиться отображение сетки глубин;

  • IDC_RADIO_DEPTH_SCALE_ON. Если выбран данный элемент, то не будет производиться отображение сетки глубин;

  • IDC_COMBO_DEPTH. Данный всплывающий список позволяет выбирать максимальную отображаемую глубину;

  • IDC_COMBO_LAW. Данный всплывающий список позволяет выбирать номер закона отображения данных;

  • IDC_STATIC_LAW. Родительское окно для отображения текущего закона отображения;

  • IDC_EDIT_FOLDER_NAME. Данное поле ввода позволяет задать папку, в которую будет сохраняться текущее изображение экрана;

  • IDC_EDIT_PERIOD. Данное поле ввода позволяет задать период сохранения текущего экрана.


Выбор палитры для отображения производится при помощи класса PalettesComboBox. Данный класс определяет доступные палитры в системе, и предлагает пользователю осуществить выбор одной из доступных палитр, представляя данные в графическом виде.

Данный класс имеет следующие методы:

  • PalettesComboBox(CWnd* parent, constCRect&rect, int ID = -1 ). Конструктор класса. Он принимает следующие параметры: родительское окно, на котором будет расположен ComboBox, размеры зоны редактирования для ComboBox, и в качестве необязательного параметра принимается числовой идентификатор объекта. По этому числовому идентификатору через таблицу сообщений можно получать уведомления об изменении состояния ComboBox;

  • voidapplay_changes(). Вызов данного метода устанавливает в системе текущей палитру, выбранную в данный момент в ComboBox.

При выборе закона отображения полученная палитра отображения данных отображается классом ProfilogrpahDrawLaw. Данный класс имеет следующие методы:

  • ProfilographLawDraw( HWND parent_window ). Конструкторкласса. В качестве параметра принимает дескриптор родительского окна. Отображение законов будет производиться на всю площадь клиентской зоны родительского окна;

  • voidset_law(intlaw ). Данный метод устанавливает номер текущего закона отображения;

  • voidupdate_palette(). Данный метод заставляет объект установить текущую палитру системы.

При открытии диалогового окна из метода DoDataExchange вызывается метод load_values, в котором все элементы ввода принимают значения в соответствии со значениями, хранимыми в классе ProfilographParameters.

Если при закрытии окна была нажата кнопка «OK», то автоматически вызывается метод applay_values, в котором все элементы ввода заносят вновь установленные значения в переменные класса ProfilographParameters, после чего родителю посылается сообщение ApplaySettingsEvent.

Внешний вид окна «Настройки» представлен на рисунке 3.2.


Рисунок 3.2- Внешний вид окна «Настройки»
      1. Панель информации



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

Панель информации реализуется классом ProfilographInfo. Данный класс является диалоговым окном, считываемым из файла ресурсов (IDD_FORMVIEW2), и имеет следующие элементы:


  • IDC_STATIC_DEPTH. Родительское окно для отображения текущей глубины;

  • IDC_COURSE. Элемент отображения курса корабля;

  • IDC_SHIP_PATH. Элемент для отображения пройденного пути корабля;

  • IDC_KREN. Элемент для отображения крена корабля;

  • IDC_DIFFERENT. Элемент для отображения дифферента корабля;

  • IDC_SHIP_SPEED. Элемент для отображения скорости корабля;

  • IDC_SOUND_SPEED. Элемент для отображения текущей скорости звука;

  • IDC_STATIC_LONGITUDE. Элемент для отображения текущей долготы;

  • IDC_STATIC_LATITUDE. Элемент для отображения текущей широты;

  • IDC_STATIC_TIME. Элемент для отображения текущего времени;

  • IDC_STATIC_DATE. Элемент для отображения текущей даты;

  • IDC_BUTTON1. Копка вызова диалога настроек;

  • IDC_BUTTON_SAVE_SCREEN. Кнопка включения/выключения сохранения текущего экрана.

  • IDC_BUTTON_KADR. Кнопка мгновенного сохранения экрана. Посылает родителю событие BaseEvent::ScreenSave.

Класс ProfilographInfo имеет следующие методы:

  • ProfilographInfo(BaseEventHandler* parent_object, CWnd* parent_window = NULL). Конструктор класса. Принимает следующие параметры: родитель (объект, который будет получать уведомления от данного класса и от класса ProfilographControl);

  • voiddepth_receive(floatdata ). Данный метод устанавливает текущее значение глубины;

  • voidnavigation_receive(constSNav&navigation ). Данный метод устанавливает текущие навигационные данные.

Панель вывода навигационной информации представлена на рисунке 3.3.


Рисунок 3.3 – Панель вывода навигационной информации
    1. 1   2   3   4   5   6   7   8   9