diff --git a/03-cryptographic-protocols-and-standards.tex b/03-cryptographic-protocols-and-standards.tex index af30ddb..743a27c 100644 --- a/03-cryptographic-protocols-and-standards.tex +++ b/03-cryptographic-protocols-and-standards.tex @@ -468,6 +468,72 @@ R.Merkle - Secure communication over insecure channel изложил прото Расшифрование \[ E_K^{-1} (C_i) = M_i\oplus C_{i-1} \to E_K^{-1}(C_i)\oplus C_{i-1} = M_i \] +\section{Однонаправленные функции и их применение} +One-way functions and applications + +Data origin authentication - подлинность происхождения данных (сообщения). +например, +\[y=GOST_x(m_0)\] + +\[y=a^x(vbpn); Z_p^*\] + +\[y=x\cdot A; A=EI(F_p)\] + +S/Key Bellure Corp + +А - клиент S-сервер + +Entity authentication (аутентификация сущности). Подлинность чего мы определяем? это может быть объект, субъект, ПО. Identification protocols. +Сначала выбирается однонаправленная функция и строится цепочка из значений этой однонаправленной функции $x_0, x_1=f(x_0), ..., x_{100}=f(x_{99})$. после этого передаётся пользователю с обязательной подлинностью и целостностью, но не секретностью. Когда нужно авторизоваться клиент отправляет $x_{99}$ который может попасть злоумышленнику. Сервер вычисляет, что $x_{99}$ является праобразом $x_{100}$ и подтверждается подлинность пользователя. В следующий раз, поскольку $x_{99}$ уже перехвачен, клиент посылает $x_{98}$ и сравнение на сервере происходит с $x_{99}$. Если злоумышленник желает выдать себя за клиента, он должен найти праобраз от перехваченной им $x_{99}$, но по определению однонаправленной функции это вычислительно невозможно. Клиент действует до тех пор, пока он не исчерпает всю цепочку $x_{0} .. x_{99}$. + +\textbf{Применение однонаправленных функций для микроплатежей.} +Здесь не нужна надёжность и сложность полноценной ЭЦП. Payward, Micromint, etc. Вся структура простой аутентификации остаётся. \circled{А} - клиент, S - провайдер услуг. Система является системой предоплаты. А передаёт заранее некоторую сумму, выстраивается цепочка и договариваются, что если клиент хочет получить услуги на 10 рублей, он высылает одно значение из цепочки. на 20р - два значения, и так далее. + +Клиент провайдера обмануть не может, а провайдер может обмануть клиента. нужна третья сторона. Для доказательства нужно, чтобы провайдер предоставил всю цепочку, чтобы доказать, что клиент переслал её всю. Если у провайдера она не вся, нужно как злоумышленнику восстановить функцию, что вычислительно невозможно. + +One time signature (одноразовая подпись, схема Lamport). +Подлинность, целостность, неотказуемость. +\begin{enumerate} +\item алгоритм выработки параметров +\item алгортим выработки ЦП +\item алгроитм проверки ЦП +\end{enumerate} + +Лампорт предложил ЦП на однонаправленной функции. + +А - подписываюший, B - проверяющий. + +\begin{enumerate} +\item договариваются о выборе ОФ (или можно выбирать хэш-функцию). и вырабатывают секретные ключи. СК - это значения из области определения функции. также генерируются открытые ключи. В справочник помещается ОК и всё готово для подписания. +\item подписание - документ, строка длины М. ЦП - это цепочка $[X_{\gamma_1}^{(1)}, X_{\gamma_2}^{(2)}, X_{\gamma_m}^{(m)}]$. +\item Для проверки подписи нужен сам документ, подпись, ОК. Проверка заключается в том, что подписи - это праобразы ОК. +\end{enumerate} + +УЦ содержит ОК, и именно он удостоверяет что ключи принадлежат подписывающему А. Одноразовая подпись, потому что передав сообщение с ОК мы израсходовали и соответствующий ему (праобраз) СК. + +\begin{itemize} +\item [-] одноразовость +\item [-] размер (если рассматриваем ГОСТ, то размер ЦП при подписании 10 бит информации $256*10$) +\item [+] одноразовость (есть технология, которая позволяет ОК строить в виде дерева Меркля) +\item [+] очень быстрая подпись +\item [+] такие схемы подписи стойкие против квантового компьютера. Нахождение праобраза от функции хэширования не поддаются квантовому компьютеру. +\end{itemize} + +На этом принципе построена hash-based post-quantum crypto systems. + +Что нужно, чтобы подделать эту схему подписи? +Допустим есть документ из трёх подписей и положим какое-то гамма = 0б значит чему равен в подписи соответствующий х? также нулю. а что нужно сделать чтобы заменить гамму на 1? для этого нужно чтобы в этой подписи появился х1 (являющийся праобразом у1). + +One time signature Winternitz (1979 в работе Merkle). +\begin{enumerate} +\item Берём хэш-функцию, М-документ (подписанный Д - это число из интервала от нуля до W-1 где W это параметр метода). СК - это случайная строка K (вход в ХФ). ОК - это $H^W(K)$. ОК легко получить из строки К. W - это число применений ХФ к К. Размер исходного текста М тоже ограничен. +\item ЦП будет являться $Q = H^M(K)$. +\item для проверки нужен ОТ, ЦП и ОК. Проверка заключается в том, что нужно проверить $H^{W-M}(Q) = H^W(K) = PK$. Так если подпись верна, то только обладатель СК мог её вычислить. +\end{enumerate} +Стойкость основана на том, что невозможно вычислить праобраз от ХФ. Некоторые минусы в том, что если есть подпись Q к документу M, то возможно легко создать подпись к документу M+1. Чтобы бороться с этим нужно ещё раз подписать документ, но выбрать для этого другую строку, в этом случае подпись будет $Q'=H^{W-M}(K')$. + +В качестве праобраза ЦП которая применяется международным сообществом используются именно эти подписи, основанные на трудности нахождения. + \end{document} diff --git a/03-mmt-lab-02-report.tex b/03-mmt-lab-02-report.tex index b9b3485..98e9adf 100644 --- a/03-mmt-lab-02-report.tex +++ b/03-mmt-lab-02-report.tex @@ -11,7 +11,7 @@ \thispagestyle{empty} \makeBMSTUHeader -\makeReportTitle{лабораторной}{2}{Мультимедийная веб-презентация}{Мультимедиа технологии}{}{Д.А. Видьманов} +\makeReportTitle{лабораторной}{3}{Разработка мультимедийного приложения}{Мультимедиа технологии}{}{Д.А. Видьманов} \newpage \thispagestyle{empty} \tableofcontents @@ -19,277 +19,365 @@ \pagestyle{fancy} \sloppy \section{Цель} -Целью работы является приобретение навыков создания мультимедийной веб-презентации, ознакомление с основными правилами и требованиями к созданию веб-презентаций. Создать мультимедийную веб-презентацию в соответствии с изученными требованиями по заданной теме. +Целью работы является приобретение навыков создания мультимедийных приложений. Создать мультимедийное приложение. \section{Задачи} \begin{enumerate} -\item Установить \code{node.js}; -\item Создать мультимедиа веб-презентацию, используя инструкции и рекомендации методического указания; -\item Проверить ещё раз все требовании к презентации и создать отчет. +\item Установить среду разработки; +\item Описать критерии создания приложения; +\item Написать код и отладить работу приложения. \end{enumerate} -\section{Методика и порядок выполнения} -Технология создания мультимедийной веб-презентации к состоит из трёх этапов: -\textbf{Первый этап.} Планирование презентации. Планирование включает: -\begin{enumerate} -\item подготовку инструментария; -\item определение цели; -\item определение задач презентации; -\item подбор необходимой информации; -\item планирование выступления и определение необходимого времени; -\item формирование структуры презентации; -\item проверку логики подачи материала; -\item подготовку заключения. -\end{enumerate} - -\textbf{Второй этап.} Разработка презентации. Разработка презентации включает: -\begin{enumerate} -\item поиск соответствия методологических требований подготовки слайдов с проектируемыми слайдами презентации; -\item обеспечение вертикальной и горизонтальной логики содержания; -\item разработку дизайна; -\item Выбор оптимального соотношения текста и графической информации. -\end{enumerate} - -\textbf{Третий этап.} Отладка и проверка презентации. - \section{Выполнение работы} -\subsection{Создание основной презентации} -В редакторе файлов гипертекстовой разметки создадим презентацию по теме «Мультимедиа технологии в корпоративных информационных системах», подберем оформление слайдов в соответствии с темой презентации. Первым слайдом презентации должен быть титульный слайд, на который выносятся тема и имя автора. В случае, если авторов несколько, имя докладчика подчеркивается. Слайд с содержанием представлен на рис. \hrf{pic:title}. +Для написания мультимедйного приложения был выбран Qt Framework версии 5.12, и язык C++. Разрабатываемое приложение - это единый мультимедийный просмотрщик файлов (офисные документы, pdf, видео). Для реализации мультимедийности были выбраны несколько компонентов и создан экран, основной частью которого является область просмотра. -\begin{figure}[H] - \centering - \includegraphics[width=12cm]{03-mmt-lab-02-title.png} - \caption{Титульный слайд} - \label{pic:title} -\end{figure} +\subsection{Функции. Открытие MPEG} +Для открытия, воспроизведения и перемотки видеофайлов используются компоненты \code{QMediaPlayer} и \code{QVideoWidget}. Для работы с компонентами были описаны следующие слоты и функции: +\begin{itemize} +\item \code{void openMPEG(QString&)}. Достраивает в главном окне необходимые области, добавляет кнопки, инициализирует слайдеры, связывает слоты. +\item \code{void closeMPEG()}. Отвязывает слоты, удаляет динамические объекты, очищает окно от элементов управления. +\item \code{void playVideo()}. Начинает/продолжает проигрывание медиафайла. +\item \code{void stopVideo()}. Завершает проигрывание файла. Позиция проигрывания перемещается в начало. Если после вызова этой функции вызвать \code{playVideo()}, то видео начнется сначала. +\item \code{void pauseVideo()}. Приостанавливает проигрывание медиа. Позиция сохраняется. Если после вызова этой вызвать \code{playVideo()}, то видео продолжится с момента приостановки видео. +\item \code{void changeVolume(int)}. Изменяет громкость звука. Слот вызывается сигналом \code{&QSlider::valueChanged} с передачей значения из компонента. +\item \code{void changePosition()}. Принудительно перематывает видео ползунком. При вызове слота позиции видео присваивается значение с ползунка, отвечающего за перемотку видео. +\item \code{void updatePosition(qint64)}. Слот реагирует на текущее положение курсора в проигрывателе и передает относительное положение ползунку перемотки видео, чтобы положение ползунка менялось в ходе проигрывания видео. +\item \code{void updateDuration(qint64)}. При старте видеопотока общая продолжительность видео считается некоторое время, поэтому сразу идентифицировать не удастся. Слот привязан к сигналу о том, что для данного видеофайла изменилось (вычислилось) значение продолжительности. +\item \code{void updateState(int)}. Справочный слот. Реагирует на Старт, Стоп и Паузу видео. Если необходимо в процессе работы выдавать еще какие-то команды - слот «узнаёт», в каком состоянии проигрывания медиафайл. +\end{itemize} -На втором слайде приводится краткий план презентации (рис. \hrf{pic:toc}). -\begin{figure}[H] - \centering - \includegraphics[width=12cm]{03-mmt-lab-02-toc.png} - \caption{Содержание презентации} - \label{pic:toc} -\end{figure} +\subsection{Функции. Открытие офисных документов (XLSX, DOCX, PPTX)} +Функции офиса используют компонент ActiveX и отображают содержимое, фактически открытое в приложениях офисного пакета. -\subsection{Использование мультимедиа} -Подбор материала для слайда необходимо вести таким образом, чтобы не перегружать его: один слайд, как правило, не должен оставаться на экране дольше одной минуты. Также не следует стремиться к слишком частой смене слайдов (рис. \hrf{pic:pic}). -\begin{figure}[H] - \centering - \includegraphics[width=12cm]{03-mmt-lab-02-pic.png} - \caption{Изображения в презентации} - \label{pic:pic} -\end{figure} +\begin{itemize} +\item \code{void openXLSX(QString&)}. Открывает XLSX файл и передает управление файлом приложению MS Excel. Отображение размещается внутри виджета. +\item \code{void openDOCX(QString&)}. Открывает DOCX файл и передает управление файлом приложению MS Word. Отображение размещается внутри виджета. +\item \code{void openPPTX(QString&)}. Открывает PPTX файл и передает управление файлом приложению MS PowerPoint. Отображение размещается внутри виджета. Дополнительно, здесь происходит подключение к слоту, вызывющему проигрывание в режиме презентации. +\end{itemize} +\subsection{Функции. Открытие документов PDF} +\code{void openPDF(QString&)}. Открывает PDF файл и передает управление файлом приложению Adobe Acrobat. Отображение размещается внутри виджета. + +\subsection{Закрытие документа} +\code{void closeFile()} - Закрывает открытый документ. -Использование эффектов анимации (звука, видео) должно быть направлено исключительно на акцентирование внимания зрителя на каких-либо моментах доклада (например, рис. \hrf{pic:vid}). -\begin{figure}[H] - \centering - \includegraphics[width=12cm]{03-mmt-lab-02-vid.png} - \caption{Видео в презентации} - \label{pic:vid} -\end{figure} - -\section{Контрольные вопросы} -\begin{enumerate} -\item \textbf{Для чего использовался npm? Что это такое и какие команды вы знаете?} Для запуска интерактивности веб-страницы с презентацией. npm - это пакетный менеджер и проектов для node.js. -\item \textbf{Что такое git? Кратко объясните его суть?} Это система контроля версий. Его суть в распределении хранения исходных кодов проекта. -\item \textbf{Для чего в проекте нужен git?} Для версионирования исходной презентации. -\item \textbf{В чём преимущество веб-презентации в сравнении с простой презентацией Powerpoint?} В отсутствии необходимости использовать локальный инструмент и возможности распределения работы над презентацией среди множества исполнителей. -\item \textbf{Какие есть недостатки веб-презентаций?} Необходимость устанавливать дополнительное нестандартное программное обеспечение и изучать язык разметки. -\item \textbf{Какие трудности возникают в процессе разработки веб-презентаций?} Не обнаружено. -\end{enumerate} \section{Выводы} -В ходе выполнения лабораторной работы были приобретены навыки создания мультимедийной веб-презентации, произошло ознакомление с основными правилами и требованиями к созданию веб-презентаций а также инструментарием по созданию веб-презентаций Shower. Была создана мультимедийная презентацию в соответствии с изученными требованиями по заданной теме. +Для разработки мультимедийного приложения необходимо изучить разнообразный инструментарий, позволяющий манипулировать мультимедийными данными. Написание мультимедийнх приложений тесно связано с обработкой больших объёмов данных или использованием внешних библиотек и приложений. Мультимедийные приложения возможно написать для любых платформ и внедрить для любых категорий пользователей. \newpage \appendix \setcounter{secnumdepth}{0} -\section*{Приложения} -\addcontentsline{toc}{section}{Приложения} +\section{Приложения} \renewcommand{\thesubsection}{\Asbuk{subsection}} -\subsection{Полный листинг разметки презентации} -\begin{lstlisting}[language=HTML,style=CCodeStyle] - - - - МТвКИС - - - - - - -
-

Мультимедиа технологии в корпоративных информационных системах

-

[ИУ3-31М] И.И.Овчинников

-
+ if (m_filename.endsWith(".pdf")) { + openPDF(m_filename); + } else if (m_filename.endsWith(".pptx")) { + openPPTX(m_filename); + } else if (m_filename.endsWith(".docx")) { + openDOCX(m_filename); + } else if (m_filename.endsWith(".xlsx")) { + openXLSX(m_filename); + } else if (m_filename.endsWith(".mpeg")) { + openMPEG(m_filename); + } + } +} -
-

Мультимедиа технологии в корпоративных информационных системах

-

[ИУ3-31М] И.И.Овчинников

-
- Background - -
- -
- -
-

В ближайшие 15 минут

- -
+void MainWindow::closeFile() { + if (axObj != nullptr) { + QProcess process; + QString strCmd; + strCmd = "taskkill /im winword.exe /f"; + process.execute(strCmd); + strCmd = "taskkill /im EXCEL.exe /f"; + process.execute(strCmd); + strCmd = "taskkill /im POWERPNT.exe /f"; + process.execute(strCmd); + strCmd = "taskkill /im AcroRd32.exe /f"; + process.execute(strCmd); + process.close(); + axObj->close(); + axObj->clear(); + delete axObj; + axObj = nullptr; + qDebug() << "file closed!"; + } +} -
-

Мультимедиа

-
-
-

Мультимедиа (англ. multimedia) — данные, или содержание, которые представляются одновременно в разных формах: звук, анимированная компьютерная графика, видеоряд.

-
-
-
+void MainWindow::openPDF(QString &filename) { + axObj = new QAxWidget(this); + setCentralWidget(axObj); + if(!axObj->setControl("Adobe PDF Reader")) + QMessageBox::critical(this, "Error", "Make sure you have Adobe Reader (and its ActiveX) installed!"); + axObj->dynamicCall("LoadFile(QString)", filename); +} -
-

Корпоративная Информационная Система

-
-
-

Корпоративная Информационная Система — это автоматизированная система, предназначенная для комплексной автоматизации всех видов хозяйственной деятельности компаний, а также корпораций, требующих единого управления EMS, CMS, LMS, CRM, PLM, etc...

-
-
-
+/* run slideshow */ +void MainWindow::playPPTX() { + // Open parameter + QList param_list; + axObj->setControl("PowerPoint.Application"); + param_list.append(m_filename); + param_list.append(1); + param_list.append(1); + param_list.append(0); + // Open a template file + QAxObject *presentations = axObj->querySubObject("Presentations"); + QAxObject *presentation = presentations->querySubObject("Open(const QString&,int,int,int)", param_list); + // Start the slides + QAxObject *slideshow = presentation->querySubObject("SlideShowSettings"); + slideshow->setProperty("RangeType", "ppShowAll"); + slideshow->dynamicCall("run()"); -
-

Системы ведения электронных архивов EDMS (Electronic Document Management System)

-
- EDMS example -
-
+} -
-

Передача мультимедийных данных

-
- EDMS example -
-
- -
-

Системы видео-конференцсвязи

- -
+void MainWindow::openPPTX(QString &filename) { + /* инициализация окна виджетом */ + m_wideWidget = new QWidget; + setCentralWidget(m_wideWidget); + qDebug() << "1"; + /* здесь будут элементы управления и окно проигрывателя (выравнивание по горизонтали) */ + m_qvBoxLayout = new QVBoxLayout(m_wideWidget); -
-

Примеры приложений для ВКС

- -
+ axObj = new QAxWidget("PowerPoint.Application", m_wideWidget); + m_btnPlay = new QPushButton("Начать презентацию"); + qDebug() << "2"; + m_qvBoxLayout->addWidget(axObj); + m_qvBoxLayout->addWidget(m_btnPlay); -
-

Интерактивные и мультимедийные системы обучения

-
- EDMS example -
-
+ if (axObj == nullptr) { + return; + } + if (!axObj->setControl(filename)) { + return; + } + axObj->dynamicCall("LoadFile(const QString&)", filename); + axObj->dynamicCall("SetVisible (bool Visible)", "false"); + axObj->setProperty("DisplayAlerts", false); + axObj->setProperty("DisplayScrollBars", true); -
-

Величина рынка развития мультимедиа в корпоративном секторе

-
-
-

В ближайшие три года мы ожидаем взрывной рост объёма российского рынка ПО для бизнес-коммуникаций. Таким образом, общий объём рынка может достичь 100 млрд рублей

-
-
Генеральный директор tada.team Андрей Демин, в интерьвью журналу Forbes
-
-
+ delay(1); -
-

Применение AR/VR в КИС и медицине

-
- EDMS example - EDMS example - EDMS example -
-
+ axObj->show(); + axObj->raise(); + qDebug() << "3"; + connect(this->m_btnPlay, &QPushButton::clicked, this, &MainWindow::playPPTX); +} -
-

Применение систем для контроля логистики

-
- EDMS example -
-
+void MainWindow::openXLSX(QString &filename) { + axObj = new QAxWidget("Excel.Application", this); + setCentralWidget(axObj); + if (axObj == nullptr) { + return; + } + axObj->dynamicCall("SetVisible (bool Visible)", "false"); + axObj->setProperty("DisplayAlerts", false); + axObj->setProperty("DisplayScrollBars", true); // Show scroll bar + axObj->setGeometry(this->geometry()); + axObj->setControl(filename); + axObj->show(); +} +void MainWindow::openDOCX(QString &filename) { + axObj = new QAxWidget("Word.Application", this); + setCentralWidget(axObj); + if (axObj == nullptr) { + return; + } + axObj->dynamicCall("SetVisible (bool Visible)", "false"); + axObj->setFocusPolicy(Qt::StrongFocus); + axObj->setProperty("DisplayAlerts", false); + axObj->setProperty("DisplayHorizontalScrollBar", true); // Show scroll bar + axObj->setGeometry(this->geometry()); + axObj->setControl(filename); + axObj->show(); +} -
-

Интеграция КИС и интернета вещей

-
- EDMS example -
-
+/* продолжить проигрывать видео */ +void MainWindow::playVideo() { + m_player->setPosition(m_position); + m_player->play(); +} -
-

Выводы

- -
+/* остановка видео */ +void MainWindow::stopVideo() { + m_player->stop(); +} -
-

Спасибо за внимание

-
- EDMS example -
-
+/* пауза видео */ +void MainWindow::pauseVideo() { + m_player->pause(); +} - +/* событие при изменении состояния видеопроигрывателя */ +void MainWindow::updateState(int state) { + switch (state) { + case QMediaPlayer::PlayingState: + /* media is played */ + break; -
+ case QMediaPlayer::PausedState: + /* media paused */ + break; - - + case QMediaPlayer::StoppedState: + /* media is stopped */ + break; + } +} - - +/* принудительно изменить время проигрывания */ +void MainWindow::changePosition() { + m_position = m_sliderVideo->value(); + m_player->setPosition(m_position); +} + +/* принудительно изменить время проигрывания */ +void MainWindow::updatePosition(qint64 position) { + m_position = position; + m_sliderVideo->setValue(m_position); +} + +/* изменить величину звука */ +void MainWindow::changeVolume(int volume) { + m_player->setVolume(volume); +} + +/* слот для иницализации значением слайдера видео */ +void MainWindow::updateDuration(qint64 duration) { + m_sliderVideo->setRange(0, m_player->duration()); + m_sliderVideo->setEnabled(duration > 0); + m_sliderVideo->setPageStep(duration / 10); +} + +/* инициализация медиа файла */ +void MainWindow::openMPEG(QString &filename) { + /* инициализация окна виджетом */ + m_wideWidget = new QWidget; + setCentralWidget(m_wideWidget); + + /* здесь будут элементы управления и окно проигрывателя (выравнивание по горизонтали) */ + m_qvBoxLayout = new QVBoxLayout(m_wideWidget); + + /* область для отображения видео */ + m_videoWidget = new QVideoWidget; + m_player = new QMediaPlayer(m_videoWidget); + m_player->setVideoOutput(m_videoWidget); + m_player->setMedia(QUrl::fromLocalFile(filename)); + + /* область размещения кнопок управления видео */ + m_hBtnsLayout = new QHBoxLayout; + m_play = new QPushButton("Play"); + m_stop = new QPushButton("Stop"); + m_pause = new QPushButton("Pause"); + m_sliderVolume = new QSlider(Qt::Horizontal); + m_sliderVolume->setRange(0, 100); // диапазон значений громкости + m_sliderVolume->setValue(50); // текущая громкость 50% + m_sliderVideo = new QSlider(Qt::Horizontal); + m_hBtnsLayout->addWidget(m_play, 1); + m_hBtnsLayout->addWidget(m_stop, 1); + m_hBtnsLayout->addWidget(m_pause, 1); + m_hBtnsLayout->addWidget(&m_labelVolume); + m_hBtnsLayout->addWidget(m_sliderVolume, 1); + m_hBtnsLayout->addWidget(&m_labelScroll); + m_hBtnsLayout->addWidget(m_sliderVideo, 5); + + /* поместить настроенные объекты в центральный виджет */ + m_qvBoxLayout->addWidget(m_videoWidget); + m_qvBoxLayout->addLayout(m_hBtnsLayout); + + /* связать слоты */ + connect(this->m_play, &QPushButton::clicked, this, &MainWindow::playVideo); + connect(this->m_stop, &QPushButton::clicked, this, &MainWindow::stopVideo); + connect(this->m_pause, &QPushButton::clicked, this, &MainWindow::pauseVideo); + connect(this->m_sliderVolume, &QSlider::sliderMoved, this, &MainWindow::changeVolume); + connect(this->m_sliderVideo, &QSlider::sliderMoved, this, &MainWindow::changePosition); + connect(this->m_sliderVideo, &QSlider::valueChanged, this, &MainWindow::changePosition); + connect(this->m_player, &QMediaPlayer::durationChanged, this, &MainWindow::updateDuration); + connect(this->m_player, &QMediaPlayer::positionChanged, this, &MainWindow::updatePosition); + connect(this->m_player, &QMediaPlayer::stateChanged, this, &MainWindow::updateState); + + /* начать проигрывать видео */ + playVideo(); +} + +void MainWindow::closeMPEG() { + /* отключение всех слотов */ + disconnect(this->m_play, &QPushButton::clicked, this, &MainWindow::playVideo); + disconnect(this->m_stop, &QPushButton::clicked, this, &MainWindow::stopVideo); + disconnect(this->m_pause, &QPushButton::clicked, this, &MainWindow::pauseVideo); + disconnect(this->m_sliderVolume, &QSlider::sliderMoved, this, &MainWindow::changeVolume); + disconnect(this->m_sliderVideo, &QSlider::sliderMoved, this, &MainWindow::changePosition); + disconnect(this->m_sliderVideo, &QSlider::sliderPressed, this, &MainWindow::changePosition); + disconnect(this->m_player, &QMediaPlayer::durationChanged, this, &MainWindow::updateDuration); + disconnect(this->m_player, &QMediaPlayer::positionChanged, this, &MainWindow::updatePosition); + disconnect(this->m_player, &QMediaPlayer::stateChanged, this, &MainWindow::updateState); + + /* удаление динамических объектов */ + delete m_sliderVideo; + delete m_sliderVolume; + delete m_play; + delete m_stop; + delete m_pause; + delete m_hBtnsLayout; + delete m_player; + delete m_videoWidget; + delete m_qvBoxLayout; +} \end{lstlisting} \end{document} diff --git a/03-wtis-lab-01-report.tex b/03-wtis-lab-01-report.tex new file mode 100644 index 0000000..ce77854 --- /dev/null +++ b/03-wtis-lab-01-report.tex @@ -0,0 +1,100 @@ +\documentclass[a4paper]{article} + +\input{../common-preamble} +\input{../bmstu-preamble} +\input{../fancy-listings-preamble} +\usepackage{icomma} + +\numerationTop + +\begin{document} +\fontsize{14pt}{14pt}\selectfont % Вполне очевидно, что мы хотим 14й шрифт, все его хотят +\thispagestyle{empty} +\makeBMSTUHeader + +\makeReportTitle{лабораторной}{1}{Исследование коллизий при множественном доступе к среде в +беспроводных сетях передачи информации}{Беспроводные технологии в информационных системах}{}{C.С. Баскаков} +\newpage +\thispagestyle{empty} +\tableofcontents +\newpage +\pagestyle{fancy} +\sloppy +\section{Цель} +Закрепление навыков работы с системой имитационного моделирования OMNeT++, построение имитационной модели беспроводной системы сбора данных и исследование ее характеристик при множественном доступе к среде передачи данных в условиях наличия коллизий. + +\section{Задачи} +\begin{enumerate} +\item Повторить описанные действия с исходным проектом, чтобы убедиться в повторяемости результатов. +\item В исходной имитационной модели системы заменить количество передатчиков $N_{TX}$, размер пакета $L_{app}$ и скорость передачи данных $R$ в соответствии с индивидуальным вариантом +\item Провести имитационный эксперимент с модифицированной моделью системы для исследования пропускной способности и вероятности коллизий. Построить графики. Сравнить теоретические значения с результатами моделирования, убедиться в корректности полученных значений. +\item Увеличить размер пакета $L_{app}$ и скорость передачи данных $R$ в 2 раза и повторить эксперимент. Сравнить полученный результат с предыдущими графиками и объяснить наблюдения. +\end{enumerate} + +\newpage +\section{Выполнение работы} +\subsection{Повторение моделирования} +На рисунке \hrf{pic:src} представлены графики, полученные в результате имитационного моделирования и расчёта в Matlab. Полученные графики идентичны представленным в методическом материале, что говорит о корректности воспроизведения имитационного моделирования с исходными данными. + +\begin{figure}[H] + \centering + \begin{subfigure}[b]{0.32\textwidth} + \centering + \includegraphics[width=\textwidth]{pics/03-wtis-Lab-1-Nrx-500.pdf} + \caption{Общее количество полученных пакетов} + \label{pic:nrx} + \end{subfigure} + \hfill + \begin{subfigure}[b]{0.32\textwidth} + \centering + \includegraphics[width=\textwidth]{pics/03-wtis-Lab-1-Kapp-500.pdf} + \caption{Общий коэффициент доставки пакетов} + \label{pic:kapp} + \end{subfigure} + \hfill + \begin{subfigure}[b]{0.32\textwidth} + \centering + \includegraphics[width=\textwidth]{pics/03-wtis-Lab-1-Ke-500.pdf} + \caption{Общий коэффициент энергопотребления} + \label{pic:ke} + \end{subfigure} + \begin{subfigure}[b]{0.32\textwidth} + \centering + \includegraphics[width=\textwidth]{pics/03-wtis-Lab-1-Ketx-500.pdf} + \caption{Коэффициент энергопотребления передатчиков} + \label{pic:ketx} + \end{subfigure} + \begin{subfigure}[b]{0.32\textwidth} + \centering + \includegraphics[width=\textwidth]{pics/03-wtis-Lab-1-Kphy-500.pdf} + \caption{Коэффициент надёжности доставки пакетов} + \label{pic:kphy} + \end{subfigure} + \caption{Графики исходного проекта} + \label{pic:src} +\end{figure} + +\subsection{Индивидуальное задание} +Для выполнения индивидуального задания был получен вариант № 10, параметры моделирования (значения переменных) которого представлены в таблице \hrf{tbl:var}. + +\begin{table}[H] + \centering + \begin{tabular}{|c|c|c|c|} + \hline + $N_{TX}$ (шт.) & $L_{app}$ (байт) & $R$ (кбит/с) & $k$ \\ [0.5ex] + \hline + 30 & 50 & 1500 & 30 \\ + \hline + \end{tabular} + \caption{Таблица значений для варианта} + \label{tbl:var} +\end{table} + +Для выполнения имитационного моделирования необходимо задать диапазон изменения среднего периода передачи пакетов ($T_s$) таким образом, чтобы полный нормированный трафик $G$ был в диапазоне $[0,05; 1]$ + +Поскольку $G=\frac{N_{TX}}{T_s}*\tau$, где $\tau=\frac{8*L_{phy}}{R}$, а $L_{phy} = L_{app} + 63$, то $T_s= \frac{N_{TX}\tau}{G}$. Для $G = 0,05; T_s \approx 361,6$, а для $G = 1; T_s \approx 18,08$ мсек. + + +\section{Выводы} + +\end{document}