ПЗ (Виртуальная лаборатория для проведения занятий по дисциплине Электротехника), страница 4

2020-10-01СтудИзба

Описание файла

Файл "ПЗ" внутри архива находится в следующих папках: Виртуальная лаборатория для проведения занятий по дисциплине Электротехника, Цай В.С. Документ из архива "Виртуальная лаборатория для проведения занятий по дисциплине Электротехника", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 8 семестр, которые можно найти в файловом архиве ДВГУПС. Не смотря на прямую связь этого архива с ДВГУПС, его также можно найти и в других разделах. .

Онлайн просмотр документа "ПЗ"

Текст 4 страницы из документа "ПЗ"

Недостатком данного языка является более низкая производительность по сравнению с С/С++ языками. Связано это с тем что программный код, как и в языке Java транслируется в байт-код.

4.2 Среды разработки

4.2.1 LabView

LabView представляет собой программное обеспечение для решения технических задач тестирования, измерения и управления с быстрым доступом к оборудованию и результатам обработки измерений.

Рисунок 12 – Программа созданная в LabView.

LabView использует собственный язык программирования, который постоянно дорабатывается. В LabView разрабатываемые программные модули называются «Virtual Instruments» (VI). Каждый VI представляет собой функцию написанную на графическом коде и состоит из двух частей – Block Diagram и Front Panel.

Рисунок 13 – Составляющие Virtual Instruments

Несмотря на удобство LabView для создания виртуальной лаборатории, от нее пришлось отказаться из-за того, что для запуска требуются компоненты, которые невозможно установить на каждом компьютере в университете.

4.2.2 Qt Creator

Qt Creator – кроссплатформенный инструментарий разработки ПО на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования: Python, Ruby, Java, PHP и другие.

Qt позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.

Рисунок 14 – Интерфейс Qt Creator

Основная задача Qt Creator – упростить разработку приложения с помощью фреймворка Qt на разных платформах. Поэтому среди возможностей, присущих любой среде разработки, есть и специфичные, такие как отладка приложений на QML и отображение в отладчике данных из контейнеров Qt, встроенный дизайнер интерфейсов как на QML, так и на QtWidgets.

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

В Qt Creator имеются библиотеки, упрощающие обработку выходных данных, например Qwt.

Qwt – графическая библиотека, позволяющая значительно упростить процесс визуализации данных в программе. Упрощение заключается в следующем: нет необходимости вручную прописывать элементы отображения, такие как шкалы координат, сетки, кривые данных и прочее. Следует лишь задавать параметры этих элементов.

Для реализации поставленной задачи была выбрана среда Qt Creator из-за удобства работы с графическим интерфейсом и отсутствием проблем с запуском присущие LabView.

4.2.3 Visual studio

Microsoft Visual Studio 2015 – это набор инструментов для создания программного обеспечения: от планирования до разработки пользовательского интерфейса, написания кода, тестирования, отладки, анализа качества кода и производительности, развертывания в средах клиентов и сбора данных телеметрии по использованию.

Рисунок 15 – Интерфейс Visual Studio

По умолчанию Visual Studio обеспечивает поддержку C#, C и C++, JavaScript, F# и Visual Basic. Visual Studio хорошо работает и интегрируется со сторонними приложениями, например Unity и Apache Cordova с помощью различных расширений.

Visual Studio включает эффективные инструменты для статического анализа и анализа во время выполнения. Инструменты статического анализа помогут выявить потенциальные ошибки проектирования, глобализации, взаимодействия, производительности, безопасности и других категорий. Тестирование производительности (или профилирование) включает измерение выполнения программы.

Visual Studio включает платформу модульного тестирования для управляемого кода (.NET) и для машинного кода C++.

Так же в Visual Studio присутствует конструктор позволяющий создавать интерфейс без написания кода.



5 Реализация

В главном окне программы предлагается выбрать тематику лабораторной работы (рисунок).

Рисунок 16 – Главное окно программы

Кнопки привязаны к слотам on_But1_clicked() и on_But2_clicked().

void MainWindow::on_But1_clicked()

{

f1 = new Form;

f1->show();

}

void MainWindow::on_But2_clicked()

{

f2 = new Form2;

f2->show();

}

Переменные f1 и f2 объявляются как переменные классов Form и Form2, которые используются для вызова окон для выбора лабораторных работ.

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

Рисунок 17 – Окно выбора типа цепи

Выбор лабораторной работы происходит с помощью класса QMouseEvcnt. При нажатии на кнопку мыши определяется находится ли курсор над объектом и в положительном случае открывается соответствующая лабораторная работа.

void Form::mousePressEvent(QMouseEvent *eventPress){

if(aitem1->isUnderMouse()){

win = new Posl;

win->show();

}

if(aitem1->isUnderMouse()){

win1 = new Posl1;

win1->show();

}

if(aitem1->isUnderMouse()){

win2 = new Posl2;

win2->show();

}

}

Классы лабораторных работ имеют переменные для хранения значений силы тока, напряжения и сопротивления каждого элемента. Конструктор класса создает сцену и устанавливает ее в объект graphicsView, загружает в переменные QPixmap изображения используемые в лабораторной работе, затем передает их в объекты QGraphicsPixmapItem и с помощью функции setPos устанавливаются в соответствующие места рабочего поля.

Posl::Posl(QWidget *parent) :

QWidget(parent),

ui(new Ui::Posl)

{

ui->setupUi(this);

scene = new QGraphicsScene();

k1.load("C:/Users/User/Desktop/kur/k1.png");

aicon.load("C:/Users/User/Desktop/kur/aicon.png");

vicon.load("C:/Users/User/Desktop/kur/vicon.png");

r1.load("C:/Users/User/Desktop/kur/res.png");

doticon.load("C:/Users/User/Desktop/kur/dot.png");

ui->graphicsView->setScene(scene);

akk = scene->addPixmap(k1);

akk->setPos(150,350);

aitem1 = scene->addPixmap(aicon);

aitem1->setPos(100,0);

vitem[0] = scene->addPixmap(vicon);

vitem[0]->setPos(50,200);

vitem[1] = scene->addPixmap(vicon);

vitem[1]->setPos(200,200);

vitem[2] = scene->addPixmap(vicon);

vitem[2]->setPos(350,200);

ritem[0] =scene->addPixmap(r1);

ritem[0]->setPos(0,50);

ritem[1] =scene->addPixmap(r1);

ritem[1]->setPos(150,50);

ritem[2] =scene->addPixmap(r1);

ritem[2]->setPos(300,50);

for(int i=0; i<20;i++){

dots[i]=scene->addPixmap(doticon);

}

dots[0]->setPos(45,18);

dots[1]->setPos(139,18);

dots[2]->setPos(3,235);

dots[3]->setPos(65,235);

dots[4]->setPos(3,335);

dots[5]->setPos(65,335);

dots[6]->setPos(3,435);

dots[7]->setPos(65,435);

dots[8]->setPos(103,235);

dots[9]->setPos(165,235);

dots[10]->setPos(103,335);

dots[11]->setPos(165,335);

dots[12]->setPos(103,435);

dots[13]->setPos(165,435);

dots[14]->setPos(326,120);

dots[15]->setPos(425,115);

dots[16]->setPos(326,220);

dots[17]->setPos(425,215);

dots[18]->setPos(326,320);

dots[19]->setPos(425,315);

}

Объект akk описывает источник тока, aitem1 – амперметр, массив vitem описывает положение всех вольтметров, а массив ritem положение всех резисторов. Массив dots описывает точки соединения для каждого из элементов.

Рисунок 18 – Рабочее поле

Слот on_pushButton_clicked() вызывается при нажатии кнопки "Пуск". Он проверяет правильность введенных данных и соединений элементов. Также он вносит в переменные значения силы тока и напряжения, которые затем передаются в классы измерительных приборов.

void MainWindow::on_pushButton_clicked()

{

if(l[0]&&(l[1]||(l[4]&&l[5]))&&l[2]&&l[3]){

QString b;

b=ui->lineEdit->text();

rm[0]=b.toFloat();

b=ui->lineEdit_2->text();

rm[1]=b.toFloat();

b=ui->lineEdit_3->text();

rm[2]=b.toFloat();

b=ui->lineEdit_4->text();

vm[3]=b.toFloat();

rm[3]=rm[0]+rm[1]+rm[2];

am[3]=vm[3]/rm[3];

am[0]=am[3];

am[1]=am[3];

am[2]=am[3];

vm[0]=rm[0]*am[0];

vm[1]=rm[1]*am[1];

vm[2]=rm[2]*am[2];}

else{

QMessage::warning(this,"Проверьте верность введенных данных или правильность подключения элементов",str);

}

}

В массиве l хранится информация о существовании соединений, в массивах am, vm, rm хранится информация об общем сопротивленни, силе тока и напряжении, а также на каждом из элементов.

Взаимодействие с элементами производится с помощью класса QMouseEvent.

if(dots[0]->isUnderMouse()){

if(sw==-1){

sw=0;

}

else{

switch(sw){

case 19:

l[0].setLine(xx[0],yy[0],xx[sw],yy[sw]);

scene->addLine(l[0]);

lines[0]=1;

scene->update();

sw=-1;

}

}

}

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

При нажатии на иконку измерительного устройства вызывается функция проверяющая подключение его к цепи:

if(aitem1->isUnderMouse()&&(dots[2]->isUnderMouse()==0)&&(dots[3]->isUnderMouse()==0)){

win = new amper;

if((l[4]==1)&&(l[5]==1))

win->senddata(am[0]);

else QMessage::warning(this,"Амперметр не подключен к цепи",str);

win->show();

}

Если устройство не подключено к цепи, то приложение предупреждает об этом, окно с измерительным устройством открывается и стрелка прибора будет указывать на 0.

Конструктор амперметра:

amper::amper(QWidget *parent) :

QWidget(parent),

ui(new Ui::amper)

{

ui->setupUi(this);

a1.load("C:/Users/User/Desktop/kur/Ampermetr2.jpg");

a2.load("C:/Users/User/Desktop/kur/Ampermetr3.jpg");

a3.load("C:/Users/User/Desktop/kur/Ampermetr4.png");

scene = new QGraphicsScene();

ui->graphicsView->setScene(scene);

item1 = scene->addPixmap(a1);

item3 = scene->addPixmap(a3);

item3->setPos(32,94);

item3->setTransformOriginPoint(223,222);

item2 = scene->addPixmap(a2);

item2->setPos(0,294);

}

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

Функция senddata() отправляет необходимые прибору данные и изменяет положение стрелки:

float amper::senddata(float x){

A=x;

if(A<5){

item3->setRotation(-15);

}

if(A>30){

item3->setRotation(75);

}

if((A>=5)&&(A<=30)){

item3->setRotation((A-5)*3.48-12);

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5285
Авторов
на СтудИзбе
418
Средний доход
с одного платного файла
Обучение Подробнее