Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

c++, Matlab

.pdf
Скачиваний:
98
Добавлен:
30.03.2015
Размер:
1 Mб
Скачать

Контрольные вопросы

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

2.Приведите последовательность команд в программной среде Matlab, необходимую для создания и установки свойств объекта передачи (приема) данных с использованием интерфейса RS-232. Поясните назначение каждой приведенной команды.

3.Какие команды применяются для передачи и приема данных с использованием интерфейса RS-232 в программной среде Matlab? Поясните назначение аргументов каждой приведенной команды.

4.Поясните смысл понятия «сеть передачи данных». Из чего состоит простейшая компьютерная сеть?

5.Приведите характеристики последовательного интерфейса RS-232.

6.Какие значения скорости передачи информации использует интерфейс

RS-232?

7.Что такое программная эмуляция COM-порта?

8.Что такое синхронный и асинхронный режимы обмена информацией

винтерфейсе RS-232?

9.Какие уровни сигналов используются COM-портом для передачи логического нуля и логической единицы?

10.Какой формат имеет посылка символа в интерфейсе RS-232 при использовании асинхронного режима передачи?

Библиографический список

1.РД.45.128-2000. Сети и службы передачи данных. – М. : Изд-во стандар-

тов, 2000. – 72 с.

2.Горбачев, В. В. COM-порт и Matlab / В. В. Горбачев // Exponenta Pro. – 2003. – № 2. – С. 92–94.

3.Гук, М. Аппаратные интерфейсы ПК / М. Гук. – СПб. : Питер, 2002. – 528 с.

4.Дьяконов, В. П. Matlab 6.5 SP1/7 + Simulink 5/6. Основы применения /

В. П. Дьяконов. – М. : СОЛОН-Пресс, 2005. – 800 с.

5.Лазарев, Ю. Ф. MatLAB 5.x / Ю. Ф. Лазарев. – Киев : BHV, 2000. – 384 с.

41

ЛАБОРАТОРНАЯ РАБОТА 5

СРЕДСТВА ГРАФИЧЕСКОГО ОТОБРАЖЕНИЯ ИНФОРМАЦИИ СРЕДЫ С++ BUILDER

Цель работы – изучение библиотечных компонентов среды C++ Builder, предназначенных для графического вывода информации на экран.

Задание к работе

1.Изучить функции и компоненты среды С++ Builder 6, предназначенные для создания графиков и диаграмм.

2.В программной среде C++ Builder 6 разработать ПО, выполняющее построение графиков функций.

3.В программной среде C++ Builder 6 разработать ПО, выполняющее отображение хода вычислительного процесса.

4.Сделать выводы по результатам работы.

Пояснения к работе

Среда C++ Builder 6 предоставляет большие возможности графического отображения информации в разрабатываемых приложениях. В среде имеется несколько типов объектов, позволяющих выводить на экран растровые изображения, строить графики функций, рисовать диаграммы различного типа.

Одним из таких объектов является канва (Canvas). Канва – это область компонента, на которой можно рисовать или отображать готовые рисунки. Канва представляет собой битовую карту поверхности окна приложения, которая может быть использована для вывода графики [1, 2]. Многие компоненты среды C++ Builder 6 имеют свойство Canvas, позволяющее размещать на форме изображения, «иконки» и другие графические объекты. Канва не является самостоятельным компонентом и всегда представлена как свойство какого-то другого графического объекта.

Другим примером графических объектов является рисунок (TPicture). Он представляет собой контейнер для графики, который может содержать любые классы графических объектов [2]. В контейнер могут помещаться битовые образы, пиктограммы, метафайлы или другие графические данные. Разработанное приложение может обращаться ко всем объектам контейнера посредством

42

свойств объекта TPicture. В среде также имеется ряд классов TBitmap, Ticon, TMetafile, представляющих растровое изображение некоторого файла или ресурса (битового образа, пиктограммы или метафайла). Графические объекты среды C++ Builder 6 тесно связаны между собой [1–3].

Среда C++ Builder 6 предлагает ряд специализированных компонентов, предназначенных для графического отображения данных. Одним из наиболее удобных компонентов, позволяющих выводить на экран различные графики и диаграммы, является компонент Chart (тип TChart). Он представляет собой контейнер объектов Series типа TChartSeries [1]. Каждый объект Series является массивом данных, характеризующимся определенным стилем отображения. Компонент Chart может включать несколько серий. Каждый объект Series будет соответствовать одной кривой на графике. Для задания отображаемых значений надо использовать методы серий Series. Остановимся только на трех основных методах: Clear, Add, AddXY.

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

Series1>Clear();

Построение графиков производится с использованием методов Add и AddXY. Метод Add добавляет новую точку в диаграмму, а метод AddXY позволяет добавить новую точку в график функции. Методы имеют следующий синтаксис [2]:

long int Add(double AValue, const String ALabel, TColor AColor); long int AddXY(double AXValue, double AYValue,

const String ALabel, TColor AColor);

В данных функциях AValue – добавляемое значение; ALabel – название, которое будет отображаться на диаграмме; AColor – цвет графика; AXValue – координата точки по горизонтали; AYValue – координата точки по вертикали.

Например, если требуется построить график функции y = cos(t) при t = 0, 1, …, 20, необходимо выполнить команды

for(int t=0; t<=20; t++) Series1>AddXY(t, cos(t), "", clRed);

Следует помнить, что использование методов Add и AddXY добавляет новые точки на графике к уже имеющимся (ранее нанесенные точки не удаляются). Поэтому перед построением нового графика (т. е. перед повторным применением к серии методов Add и AddXY) необходимо выполнить метод Clear. Основные свойства компонента Chart представлены в табл. 5.1.

43

 

 

Таблица 5.1

 

 

Свойство

Пояснение свойства

 

 

AllowPanning

Определяет возможность прокручивать наблюдаемую часть

 

графика (возможные значения: pmNone

– прокрутка запре-

 

щена; pmHorizontal, pmVertical

или pmBoth – раз-

 

решена прокрутка только в горизонтальном направлении,

 

только в вертикальном направлении или в обоих направле-

 

ниях соответственно)

 

 

 

AllowZoom

Позволяет изменять масштаб изображения, выделяя фраг-

 

менты диаграммы или графика курсором мыши

 

 

 

Title

Определяет заголовок диаграммы

 

 

 

Foot

Определяет подпись под диаграммой (по умолчанию отсут-

 

ствует, текст подписи определяется подсвойством Text)

 

 

Frame

Определяет внешний вид рамки вокруг диаграммы

 

 

Legend

Легенда диаграммы – список обозначений

 

 

BottomAxis,

Эти свойства определяют характеристики нижней, левой

LeftAxis,

и правой осей соответственно (установка масштаба, коли-

RightAxis

чества меток на оси, шага сетки и т. д.)

 

 

 

LeftWall,

Эти свойства определяют характеристики соответственно

BottomWall,

левой, нижней и задней граней области трехмерного отобра-

BackWall

жения графика

 

 

 

SeriesList

Список серий данных, отображаемых в компоненте

 

 

View3d

Разрешает или запрещает трехмерное отображение диа-

 

граммы

 

 

 

View3DOptions

Характеристики трехмерного отображения

 

 

 

При разработке приложений достаточно часто возникает задача информировать пользователя о ходе выполнения некоторых длительных процессов. Примером может служить скачивание файла, ход процесса обработки данных, установка драйверов и т. д. В среде C++ Builder предусмотрен ряд компонентов, выполняющих отображение хода длительного процесса и дающих возможность пользователю управлять внешним видом отображения. В частности, ход длительного процесса может быть выведен на экран с использованием компонента ProgressBar. Основные свойства компонента ProgressBar представлены в табл. 5.2.

44

 

Таблица 5.2

 

 

Свойство

Пояснение свойства

 

 

Max

Максимальное значение позиции, которое соответствует завер-

 

шению отображаемого процесса (по умолчанию устанавлива-

 

ется 100 %)

 

 

Min

Начальное значение позиции, которое соответствует началу

 

отображаемого процесса

 

 

Orientation

Определяет направление отображения процесса

 

(pbHorizontal – горизонтальное;

 

pbVertical – вертикальное)

 

 

Position

Позиция полоски, отображающей ход процесса (значение за-

 

висит от значений свойств Min и Max)

 

 

Smooth

Определяет внешний вид полоски, отображающей ход процес-

 

са (если установлено значение true, то полоска цельная, если

 

значение false, то полоска имеет пробелы)

 

 

Отображение хода процесса можно осуществлять задавая значение свойства Position. Предположим, что полная длительность процесса определяется переменной Count, а выполненная часть процесса определяется значением переменной Current (переменные Count и Current – целые числа). Переменная Count может символизировать объем скачиваемого файла или количество драйверов, которые необходимо установить, Current Count. При этом значения минимальной и максимальной позиций компонента ProgressBar равны 0 и 100. В этом случае отображение хода процесса может быть выполнено командой

ProgressBar1>Position=100*Current/Count;

Графическое представление информации в приложении является одной из наиболее часто возникающих задач.

Ход работы

1.Запустить программную среду C++ Builder 6, создать новый проект (тип проекта – Application) [1]. Примерный вид окна после создания нового проекта показан на рис. 5.1.

2.Cохранить проект на жестком диске ПК, используя пункт Save All меню

File (рис. 5.1).

45

Рис. 5.1

3. Разместить на форме компоненты Chart и Button [1]. Далее будем использовать следующие имена компонентов: Chart1, Button1 (примерный вид окна после размещения указанных компонентов показан на рис. 5.2).

Рис. 5.2

4. Двойным нажатием мыши выбрать компонент Chart1. При этом на экране должно появиться окно Editing Chart1, показанное на рис. 5.3.

46

Рис. 5.3

5. В окне Editing Chart1 нажать кнопку Add…. Данное действие приведет к появлению окна TeeChart Gallery, показанного на рис. 5.4.

Рис. 5.4

6. В появившемся окне выбрать тип графика Bar и нажать кнопку ОК. Данное действие приведет к закрытию окна TeeChart Gallery и возвращению к окну Editing Chart1. При этом в окне Editing Chart1 должна отобразиться надпись Series1 (рис. 5.5).

47

Рис. 5.5

7. Закрыть окно Editing Chart1. Примерный вид окна после размещения указанных компонентов показан на рис. 5.6.

Рис. 5.6

8. В тексте исполняемого файла Unit1.cpp поместить следующую директиву [4]:

#include "Math.h"

48

9. В обработчике события OnClick компонента Button1 разместить следующий программный код:

Series1>Clear();

for(int jj=0; jj<=5; jj++) Series1>AddXY(jj, 2*jj+5, "", clGreen);

10. Откомпилировать и выполнить разработанное ПО. Проект считать успешно откомпилированным при отсутствии сообщений об ошибках в процессе компиляции. Примерный вид экранной формы показан на рис. 5.7.

Рис. 5.7

11.В окне Form1 нажать кнопку Button1. После выполнения данного действия в окне Form1 должен появиться график функции в виде столбчатой диаграммы.

12.Закрыть экранную форму.

13.Двойным нажатием мыши выбрать компонент Chart1. При этом на экране должно появиться окно Editing Chart1, показанное на рис. 5.8.

Рис. 5.8

49

14.В окне Editing Chart1 нажать кнопку Add…. Данное действие приведет к появлению окна TeeChart Gallery (см. рис. 5.4).

15.В появившемся окне выбрать тип графика Line, убрать «флажок» напротив пункта 3D и нажать кнопку ОК. Данное действие приведет к закрытию

окна TeeChart Gallery и возвращению к окну Editing Chart1. При этом в окне Editing Chart1 должны отобразиться надписи Series1 и Series2 (рис. 5.9). Закрыть окно Editing Chart1.

Рис. 5.9

16. В обработчике события OnClick компонента Button1 удалить или отметить как комментарий написанный ранее программный код и разместить следующий программный код:

Series2>Clear();

for(int t=0; t<=1000; t++)

Series2>AddXY(t, sin(2*3.14*0.1*t), "", clRed); Chart1>BottomAxis>Minimum=0; Chart1>BottomAxis>Maximum=50;

17.Откомпилировать и выполнить разработанное ПО. Проект считать успешно откомпилированным при отсутствии сообщений об ошибках в процессе компиляции.

18.В окне Form1 нажать кнопку Button1. После выполнения данного дей-

ствия в окне Form1 должен появиться график гармонической функции.

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]