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

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Python
  • 22 22 страницы
  • 8 + 8 источников
  • Добавлена 25.08.2023
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
Введение…………………………………………………………………………..2
1. Анализ способов передачи информации………………………………….….3
2. Передача информации по аудио каналу ……………………………………..7
2.1 Методы преобразования цифровой информации в аналоговую и обратно используемые в аудиотехнике…….……………………………………………..7
2.2 Методики восстановления ошибок и потерь в пакетах данных………….12
2.3 Разработка алгоритма программы передачи данных по аудиоканалу…...13
3. Программная реализация……………………………………………………..15
4. Тестирование …………………………………………………………………18
4.1 Разработка тестов……………………………………………………………18
4.2 Выполнение тестирования …………………………………………………18
4.3 Анализ результатов тестирования………………………………………….20
Заключение………………………………………………………………………21
Список литературы……………………………………………………………...22
Фрагмент для ознакомления

Повторяя эту процедуру длякаждого фрагментадлиной 256 символов, с контролей передачи с помощью CRC32, дает исходный передаваемый файл.2.3 Разработка алгоритма программы передачи данных по аудиоканалу Рисунок 1 Блок-схема алгоритма работы приемникаСначала указывается частота исходного аудиосигнала. Возможно также автоопределение несущей частоты, это требует усложнения алгоритма и значительных вычислительных ресурсов. Затем на этой частоте при зафиксированной передаче(превышение уровня сигнала над уровнем шума) происходит обучение работы фильтра приемника, и попытка применения этого фильтра к передаваемым данным. Если правильно выполняется декодирование то полученный CRCблока данных должен совпасть с вычисленным.Алгоритм работы передатчика.Рисунок 2 Блок-схема алгоритма работы передатчикаВ текущей реализации передатчика не предусмотрен протокол подтверждения успешного принятия блока и пересылки его заново, в тестовых проверках было обнаружено что это значительно замедляет скорость передачи данных, поскольку требует периода паузы для фиксации отдельных блоков передачи. Предполагается дальнейшая доработка с целью начальной проверки качества передачи на заранее известных данных и частоте для начальной регулировки микрофона и динамика.3. ПРОГРАММНАЯРЕАЛИЗАЦИЯПередачу данных о файле выполним следующим образом:#./exhaudiosend -idata.txtПрием данных в формате #./exhaudiorecv -odata.txtгдеf – параметримяпредаваемогофайлаТакже в средеWindows, требуется указание пути к библиотекеPortAudio, для работы со звуковым оборудованием,cпомощью параметра -l, например:#./exhaudiosend -idata.txt-l<путь к файлу библиотеки>PortAudio — это бесплатная кроссплатформенная библиотека аудио ввода-вывода с открытым исходным кодом. Он позволяет писать простые звуковые программы на «C» или C++, которые будут компилироваться и работать на многих платформах, включая Windows, Macintosh OS X и Unix (OSS/ALSA).PortAudio предоставляет очень простой API для записи и/или воспроизведения звука с использованием простой функции обратного вызова или блокирующего интерфейса чтения/записи. Включены примеры программ, которые воспроизводят синусоидальные волны, обрабатывают аудиовход (гитарный фузз), записывают и воспроизводят звук, составляют список доступных аудиоустройств и т. д.Для работы передатчика создадим класс Sendercследующими методами:classSender:def __init__(self, fd, config, gain=1.0): - инициализацияdefwrite(self, sym): - записьблокаданных размера sym, использует метод класса writeиз класса для работы с низкоуровневым интерфейсом аудиоустройств Interface.defstart(self): - формированиеи запись участка данных для обучения эквалайзера приемника, для этого формируется участок тишины, потом передается блок данных длины необходимой для настройки, затем снова передается участок тишиныdefmodulate(self, bits): - выполнениемодуляциифайла данных, функция разбивает данные на блоки и передает каждый вызовом функции write.Для работы с аудиоданными используется библиотека стандартная библиотека audioвходящая в библиотеку Python, на ее основе разработан класс Stream.class Stream:classParameters(ctypes.Structure): - def __init__(self, interface, config, read=False, write=False):настраиваетприемданныхпоумолчаниюна 16 битное представление, моноdefclose(self): - завершаетработу с аудиоустройством defread(self, size): - чтениеизаудиустройства данных def write(self, data): - передачаданныхДля приемника создадим класс Receiver со следующими методами:classReceiver:def _train(self, sampler, order, lookahead): - обучениеэквалайзерапринятойпоследовательностьюданных, передается приемником с паузами при начале передачиdef _verify_training(self, equalized, train_symbols): - производитпроверкукачестваполученногофильтрана данных, на предмет не приводит ли применение фильтра не только к удалению помех но к потере исходных данныхdef _demodulate(self, sampler, symbols): - выполняетдемодуляциюблока данных, с применением ранее полученного эквалайзераdefrun(self, sampler, output): - функцияпередачиисходногофайла, выполняет вызов функций модуляции и последующей передачи по блокам.4. ТЕСТИРОВАНИЕ4.1 Разработка тестовДля проверки качества передачи следует выделить два вида тестирования, передача коротких фрагментов данных, и передача файлов большого размера. Поскольку в разработанной программе используется симплексная передача, при передаче большого размера файла повышается вероятность прерывания получения данных случайной помехой.В качестве первого теста используется передача короткого текстового файла со словом hello.Второй тест передает звуковой файл в формате mp3 размером 3Мб.4.2 Выполнение тестированияТест 1: передача текстового файла, частота 2КГц.Рисунок 3 Тестирование, передатчикРисунок 4 Тестирование, приемникКак видим, данные успешно переданы, что подтверждается содержимымпринятого файла в виде строки «hello».Тест 2передача звукового файлаРисунок 5 Тестирование, передатчикРисунок 6 Тестирование, приемникКак видим данные успешно передаются, но по результата целиком файл получилось передать только при соединении аудиокабелем.4.3 Анализ результатов тестированияПо результатам тестирования можно сделать вывод что программа работоспособна, но требует дальнейшей доработки для возможности передачи больших файлов.ЗАКЛЮЧЕНИЕВ первой главе был произведён анализ задания, способов передачи информации, обоснована актуальность выбора аудиоканала для передачи данных, такжевыполнен выбор технологии, языка и среды разработки. В результате для применения в данной работевыбираются следующее технологии и методы: среда программирования PyCarm язык программирования Python.Во второй главе были проанализированы и предложена структура, разработаны схемы и алгоритмы работы отдельных модулей. В третьей главе было выполненаразработка программной реализации этих алгоритмов с выбором стандартных библиотек Python.В четвертой главе было выполнено тестирование приложения.По результатам тестирования приложение выполняет функции поставленные в задании на разработку. СПИСОКЛИТЕРАТУРЫ1 Audio Signal Processing- Understanding Digital & Analog Audio Signal Processing URL: https://www.pathpartnertech.com/audio-signal-processing-understanding-digital-analog-audio-signal-processing/2 What is data transmission | Everything you need to know about itURL :https://gcore.com/learning/data-transmission-guide-everything-you-need-to-know/3 Бэрри, Пол Изучаем программирование на Python / Пол Бэрри. - М.: Эксмо, 2016. - 332 c.4 Гуриков, С.Р. Основы алгоритмизации и программирования на Python / С.Р. Гуриков. - М.: Форум, 2018. - 991 c.5 Златопольский, Д. М. Основы программирования на языке Python / Д.М. Златопольский. - М.: ДМК Пресс, 2017. - 277 c.6 Эрик, Мэтиз Изучаем Python. Программирование игр, визуализация данных, веб-приложения / Мэтиз Эрик. - М.: Питер, 2018. - 760 c.7 Гэддис Т. Начинаем программировать на Python. – 4-е изд.: Пер. с англ. – СПб.: БХВ-Петербург, 2019. – 768 с.8 Нефедов, В. И. Общая теория связи : учебник для вузов / В. И. Нефедов, А. С. Сигов ; под редакцией В. И. Нефедова. — Москва : Издательство Юрайт, 2023. — 495 с.

1 Audio Signal Processing- Understanding Digital & Analog Audio Signal Processing URL: https://www.pathpartnertech.com/audio-signal-processing-understanding-digital-analog-audio-signal-processing/
2 What is data transmission | Everything you need to know about it URL :https://gcore.com/learning/data-transmission-guide-everything-you-need-to-know/
3 Бэрри, Пол Изучаем программирование на Python / Пол Бэрри. - М.: Эксмо, 2016. - 332 c.
4 Гуриков, С.Р. Основы алгоритмизации и программирования на Python / С.Р. Гуриков. - М.: Форум, 2018. - 991 c.
5 Златопольский, Д. М. Основы программирования на языке Python / Д.М. Златопольский. - М.: ДМК Пресс, 2017. - 277 c.
6 Эрик, Мэтиз Изучаем Python. Программирование игр, визуализация данных, веб-приложения / Мэтиз Эрик. - М.: Питер, 2018. - 760 c.
7 Гэддис Т. Начинаем программировать на Python. – 4-е изд.: Пер. с англ. – СПб.: БХВ-Петербург, 2019. – 768 с.
8 Нефедов, В. И. Общая теория связи : учебник для вузов / В. И. Нефедов, А. С. Сигов ; под редакцией В. И. Нефедова. — Москва : Издательство Юрайт, 2023. — 495 с.