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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Разработка программы для управления внешними устройствами с помощью звукового адаптера персонального компьютера

Информация:

Тип работы: курсовая работа. Добавлен: 03.07.2012. Сдан: 2011. Страниц: 8. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Федеральное агентство по образованию
ГОУ ВПО  “Кемеровский Государственный Университет”
Физический  факультет
Кафедра экспериментальной физики 
 
 
 
 
 
 
 
 
 
 
 
 

КУРСОВАЯ  РАБОТА 

Тема: “Разработка программы  для управления внешними устройствами с помощью звукового адаптера персонального компьютера” 
 
 
 
 
 
 
 
 

Выполнил:  

Научный руководитель: 
 
 
 
 
 
 
 
 
 
 
 
 
 

Кемерово 2005
     Содержание 

     Введение………………………………………………………………...2
     Краткие сведения об устройстве звукового адаптера………….…3
     Основные  понятия и возможности  звукового интерфейса………5
     Потоковая модель…………………...…………………………………………....5
     Звуковой  буфер……………………………………………………………………5
         Синхронные и асинхронные устройства……………………………………....6
         Полу- и полнодуплексные звуковые  устройства……………………………...6
         Уведомление о завершении обработки буфера………………………………..7
         Подготовка буферов……………………………………………………………..7
         Способы кодирования цифрового  звука……………………………………….7
         Формат потока…………………………………………………………………...8
         Структура потока………………………………………………………………..9
         Паузы, сброс и зацикливание………………………………………………….10
         Поддержка нескольких процессов…………………………………………....10
        Служба переназначения устройств  и форматов………………………………11
         Номера звуковых устройств…………………………………………………...11
         Идентификаторы (ключи) открытых  устройств……………………………...12
     Низкоуровневое  программирование звука  в Windows……………………..13
     Общая схема взаимодействия программы и звуковой подсистемы……...14
     Структуры, используемые в звуковом интерфейсе………………………...16
         Структура WAVEFORMATEX………………………………………………..16
         Структуры WAVEINCAPS и WAVEOUTCAPS………………………….….18
         Структура WAVEHDR………………………………………………………...19
      Заключение…………………………………………………………………...….21 
 
 
 
 

    Введение

    В последнее время наблюдаются  тенденции к внедрению информационных технологий к широкому применению персональных компьютеров в различных сферах деятельности человека. Одной из таких сфер является радиоэлектроника. Характеристики персональных компьютеров по обработке информации достаточно высоки, поэтому они предоставляют широкие возможности их использования. Возможна автоматизация экспериментальных работ с использованием ПК (примером может служить снятие характеристик различных радиоэлектронных компонентов).
    Программы и приспособления для такого рода использования ПК уже существуют, но они недоступны широкому кругу  пользователей вследствие своей дороговизны. Она образуется из-за применения в этих устройствах сложных (и, как следствие, дорогих) контроллеров, содержащих в себе аналого-цифровые (АЦП) и цифро-аналоговые преобразователи (ЦАП). Например, цифровой измерительный комплекс, способный работать в качестве осциллографа и построить вольтамперную характеристику, в дополнение к которому нужен еще и ПК, оценивается в $350, а за осциллограф, способный построить вольтамперную характеристику (и больше ничего!) придется заплатить как минимум $1000.
    Альтернатива  этому - использование возможностей звуковой карты, в которой есть свои АЦП и ЦАП. Применять звуковую карту можно в тех случаях, когда частотный диапазон звуковой карты удовлетворяет условиям эксперимента. Примеры: построение вольтамперных (ВАХ) и амплитудно-частотных характеристик (АЧХ), изучение зависимости коэффициента усиления транзистора от тока коллектора, и т. п.
    Целью моей работы является программирование в среде Windows XP АЦП и ЦАП стандартного звукового адаптера. Обе задачи реализуются на языке Borland Delphi 7.0 Enterprise в одной программе, алгоритмы и блоки которой в дальнейшем могут быть использованы в качестве основы для написания программы цифрового осциллографа либо обмена данными между ПК и радиотехническим прибором.

    Краткие сведения об устройстве звукового адаптера

    Типовой звуковой адаптер содержит стереофонические АЦП и ЦАП (аналого-цифровой и  цифро-аналоговый преобразователи), микшер и управляющий цифровой процессор DSP (Digital Signal Processor), координирующий работу всех узлов адаптера.
    Микшер  расположен в аналоговой части адаптера. В его задачу входят: регулировка  входных уровней различных источников звука - микрофона, линейного входа, компакт-диска, модема и т.п., сведение всех источников в единый звуковой сигнал, поступающий на АЦП, а также регулировка выходного сигнала адаптера, снимаемого с ЦАП.
    В режиме записи схема АЦП через  равные интервалы времени опрашивает входной сигнал и формирует последовательность мгновенных значений амплитуды, называемых отсчетами. В зависимости от заданного режима, разрядность отсчета (sample width) может быть разной: 8 или 16 бит — для простых адаптеров и от 18 до 24 - для сложных и качественных. Чем больше разрядность отсчета, тем выше точность цифрового представления сигнала и ниже уровень шумов и помех, вносимых АЦП при оцифровке.
    Частота, с которой АЦП опрашивает входной  сигнал, называется частотой дискретизации (sample rate). Для точного цифрового представления сигнала частота дискретизации должна быть как минимум вдвое выше максимальной частоты сигнала; на практике обычно выбирается небольшой запас для компенсации погрешностей. Например, для представления сигналов с полосой частот до 10 кГц выбирается частота около 22 кГц.
    Последовательность  отсчетов, сформированная АЦП, передается управляющим процессором в основную память компьютера при помощи внепроцессорного доступа к памяти (DMA - на шине ISA, Bus Mastering - на шине PCI). После заполнения части (обычно половины) выделенной для обмена области памяти адаптер подает сигнал аппаратного прерывания, по которому драйвер адаптера извлекает накопленные в памяти данные и переносит их в буфер программы, которая запросила запись звука. После заполнения буфера программы драйвер подает ей программный сигнал, по которому программа переносит данные в нужное ей место: в другую область памяти для обработки, на диск, отображает на экране и т.п.
    При воспроизведении звука происходит обратный процесс: программа записывает последовательность звуковых отсчетов в буфер и передает его драйверу, который по частям переносит данные в область памяти для DMA. Управляющий процессор адаптера последовательно извлекает из памяти отсчеты и направляет их на ЦАП, где они преобразуются в обычный электрический звуковой сигнал, который, пройдя через регуляторы микшера, попадает на выходной разъем адаптера.
    Для удобства буфер обмена между процессором  и звуковым адаптером делается циклическим (кольцевым). Это означает, что пока одна сторона (адаптер или ЦП) ведет  запись первой половины буфера, другая сторона должна успеть прочитать данные из второй половины, и наоборот. Если быстродействия ЦП или драйвера не хватает, или нарушается правильная работа системы аппаратных прерываний, то записываемый звук теряется, а воспроизводимый — зацикливается. Зацикливание короткого фрагмента воспроизводимого звука — типичный признак неверного выбора линии прерывания для адаптера или неисправности в системе прерываний.
    Как правило, звуковая карта имеет два сдвоенных (стереофонических) входа и два таких же выхода. Первый (линейный) вход рассчитан на входные сигналы с амплитудой около 1 В, второй - микрофонный, для более слабых сигналов. При использовании звуковой карты в качестве аналого-цифрового преобразователя можно использовать любой из этих входов - в зависимости от уровня обрабатываемого сигнала

Основные  понятия и возможности звукового интерфейса

    Потоковая модель

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

    Звуковой буфер

    Звуковой  буфер служит для переноса потоков  между приложением и звуковым драйвером. Он представляет собой область  памяти, в которой хранится небольшой  фрагмент потока длительностью в  десятки-сотни миллисекунд. Звуковые буферы создаются приложением и затем передаются драйверу: пустые - для устройств ввода, заполненные звуковыми данными - для устройств вывода. Драйвер ставит полученные буферы в очередь в порядке поступления; воспроизведение или запись данных ведется с начала очереди.
    После завершения обработки каждого очередного буфера драйвер возвращает его приложению. С этого момента буфер доступен для повторного использования: он может быть заполнен новыми данными и снова передан этому же или другому звуковому устройству для постановки в очередь. Таким образом, между драйвером и приложением происходит циклическое “вращение” буферов, в которых переносятся звуковые потоки.
    Для каждого звукового буфера приложением  также создается заголовок (header) - структура-описатель, куда заносятся параметры буфера и режимы его обработки. Обмен буферами между приложением и драйвером происходит в виде обмена указателями их заголовков.
    Если  к моменту завершения обработки  буфера устройства вывода в очереди  не имеется следующего буфера, то в  выходном звуковом сигнале возникает пауза, но вывод потока не прерывается. Если программа не успевает передать драйверу очередной буфер для устройства записи, то фрагмент сигнала теряется.

    Синхронные  и асинхронные  устройства

    Звуковые  устройства делятся на синхронные и  асинхронные. Синхронному устройству для выполнения операций записи/воспроизведения требуются все ресурсы центрального процессора. Драйвер такого устройства, получив очередной буфер, не возвращает управления до тех пор, пока буфер не будет заполнен или проигран. В очереди драйвера синхронного устройства может находиться только один звуковой буфер.
    Асинхронное устройство работает независимо от центрального процессора, обрабатывая данные в  выделенной области памяти и лишь изредка (один раз в несколько  десятков миллисекунд) сообщая драйверу о завершении обработки очередного фрагмента потока. Драйвер асинхронного устройства возвращает управление сразу же после получения очередного буфера, и в его очереди может находиться сколь угодно большое количество буферов.

    Полу- и полнодуплексные звуковые устройства

    Звуковые  адаптеры, способные одновременно записывать и воспроизводить различные звуковые потоки, называются полнодуплексными (full duplex). Соответствующие устройства ввода и вывода в Windows могут быть открыты и использованы одновременно, и при этом встречные потоки никак не влияют друг на друга.
    Адаптеры, способные в каждый момент времени  работать только в одном режиме (либо на запись, либо на воспроизведение), называются полудуплексными (half duplex). Из соответствующей пары устройств в Windows одновременно может быть открыто только одно — либо устройство ввода, либо устройство вывода. При попытке открытия второго устройства возвращается ошибка “устройство занято”.
    Некоторые адаптеры обладают возможностью ограниченной полнодуплексной работы, например: только в монофоническом режиме (ряд адаптеров на микросхемах ESS), только в восьмиразрядном режиме (большинство моделей Sound Blaster 16, AWE32, SB 32, AWE64) и т.п. В остальных режимах такие адаптеры работают только в полудуплексе.

    Уведомление о завершении обработки  буфера

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

    Подготовка  буферов

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

    Способы кодирования цифрового звука

    При работе со звуковыми адаптерами чаще всего используется традиционный способ цифрового кодирования PCM (Pulse Code Modulation - импульсно-кодовая модуляция, ИКМ). Ряд мгновенных значений звуковой амплитуды, следующих друг за другом с частотой дискретизации, представляется рядом чисел выбранной разрядности, значения которых пропорциональны величине амплитуды. Именно в таком виде звуковой поток снимается с выхода АЦП или подается на вход ЦАП.
    Однако  наряду с предельной простотой PCM обладает существенной избыточностью, передавая звук настолько точно, насколько это возможно при выбранных параметрах оцифровки. Зачастую на первый план выходит задача минимизации скорости и объема звукового потока, в то время как отдельными параметрами точности и качества можно пренебречь. В таких случаях используются другие способы кодирования, когда звуковая информация представляется в виде относительных изменений амплитуды (ADPCM – adaptive differential PCM, адаптивная разностная ИКМ), мгновенных “снимков” спектра (Audio MPEG) и т.п.
    Обрабатывать  звук в PCM способен любой звуковой адаптер. Иные способы кодирования аппаратно  реализуются лишь в специализированных адаптерах.

    Формат  потока

    Совокупность основных параметров потока - способа кодирования, частоты дискретизации, количества каналов (стерео/моно) и разрядности отсчета - называется форматом потока (Wave Format). Желаемый формат указывается при открытии устройства; для смены формата требуется закрытие и повторное открытие устройства.
    Главным параметром формата является способ кодирования, который также называется еще признаком формата (format tag). Каждый способ кодирования порождает группу однотипных форматов, различающихся лишь точностью представления, а следовательно, и качеством передачи звука.
    Основные  частоты дискретизации (11025, 22050 и 44100 Гц) в сочетаниях с различным количеством  каналов (1 или 2) и различной разрядностью отсчета (8 или 16) при способе кодирования PCM образуют 12 типовых форматов. Частота 11025 Гц (полоса звуковых частот примерно до 5 кГц) приблизительно соответствует качеству телефонного сигнала, частота 22050 Гц (полоса до 10 кГц) - среднего радиоприемника, частота 44100 Гц (полоса до 20 кГц) - качественной звуковой аппаратуре.

    Структура потока

    Наименьшей  единицей звукового потока является блок. Соответственно, размер каждого буфера, передаваемого звуковой подсистеме, должен быть кратен размеру блока, а объем данных, возвращаемый устройством ввода, всегда будет кратен размеру блока.
    В PCM блоком считается набор отсчетов, передаваемых за один период частоты дискретизации, а именно: один отсчет - для монофонических потоков, два - для стереофонических, и т. д. Таким образом, блоки следуют друг за другом с частотой дискретизации, а отсчеты в блоках размещаются, начиная с левого (нулевого) канала.
    Восьмиразрядные отсчеты в PCM представляются в виде беззнаковых целых чисел; за нуль сигнала принято “центральное” значение 128 (шестнадцатеричное — 80). Итак, предельной отрицательно амплитуде сигнала соответствует нулевое значение отсчета, а предельной положительной - значение FF. Для пересчета значений отсчетов в знаковую двуполярную форму в диапазоне от -128 до +127 из них нужно вычитать 128 (0x80), или прибавлять то же самое смещение, вычисляя по модулю 256, что дает такой же результат.
    Отсчеты с разрядностью более восьми представляются в виде целых чисел со знаком в  стандартном формате Intel: за нуль сигнала принято нулевое значение отсчета. Здесь может без каких-либо ограничений применяться обычная целая арифметика, например над типами short (16-разрядный) и long (32-разрядный).
    Если  разрядность отсчета превышает 16, она может быть не кратна байту - современные звуковые адаптеры могут использовать 18-, 20- и 22-разрядные отсчеты. В таком случае отсчет выравнивается по старшей границе трех- или четырехбайтового слова, а лишние младшие разряды заполняются нулями. Подобное представление позволяет работать с отсчетами любой разрядности так же, как с 24- или 32-разрядными; от фактической разрядности отсчета зависит лишь точность полученного числа.
    24-разрядные  трехбайтовые слова - достаточно неудобная для современного компьютера единица данных, поэтому в целях оптимизации некоторые адаптеры и драйверы могут использовать четырехбайтовые 32-разрядные слова для отсчетов с разрядностью более 16. В любом случае фактическая разрядность отсчета задается параметром разрядности формата, а размер слова, в котором размещается отсчет, определяется из размера блока, путем деления его на количество каналов в потоке.
    В форматах других типов размер и структура  блока подчиняются собственным  правилам; зачастую блок сводится к  одному байту.

    Паузы, сброс и зацикливание

    Циклическое движение буферов может быть приостановлено и затем возобновлено с места  прерывания с сохранением позиции в потоке. Поток может быть уничтожен (сброшен) - в этом случае драйвер немедленно возвращает приложению все ждущие буферы и обнуляет позицию потока.
    Для устройств воспроизведения один или несколько идущих подряд буферов  могут быть зациклены (looped): в этом случае драйвер последовательно проигрывает их заданное количество раз, после чего возвращает приложению и переходит к воспроизведению следующих буферов из очереди.

    Поддержка нескольких процессов

    Звуковая  подсистема Windows допускает работу с устройством нескольких процессов (клиентов) одновременно. Многие современные и даже некоторые устаревшие звуковые устройства поддерживают более одного клиента; устройство вывода (или его драйвер) смешивает проигрываемые клиентами звуковые потоки, а устройство ввода размножает записываемый поток для всех подключенных клиентов.
    Устройство, драйвер которого поддерживает не более  одного клиента, не может быть повторно открыто до тех пор, пока клиент не закроет его. При попытке повторно открыть такое устройство звуковая подсистема возвращает сообщение об ошибке, сигнализирующее о том, что устройство занято.

    Служба  переназначения устройств  и форматов

    Для упрощения реализации основных операций со звуком Windows содержит службу переназначения - Wave Mapper. Поскольку в Windows может быть установлено более одного звукового устройства, существуют понятия стандартного системного устройства ввода и стандартного системного устройства вывода. Оба они задаются в закладке Audio формы свойств мультимедиа. Приложение может запросить работу с конкретным звуковым устройством либо со стандартным системным - в последнем случае служба переназначения определяет нужное устройство.
    Кроме трансляции запросов к нужному устройству, Wave Mapper может выполнять и поиск наиболее подходящего устройства, поддерживающего требуемый формат звука.

    Номера  звуковых устройств

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

    Идентификаторы (ключи) открытых устройств

    Как и в случае с файлами, при открытии каждого звукового устройства система  возвращает его идентификатор, или  ключ (handle), по которому затем происходит вся остальная работа с устройством. Формально идентификаторы устройств ввода и вывода имеют различные типы — HWAVEIN и HWAVEOUT, однако оба они эквивалентны типу HWAVE, который может использоваться для создания универсальных функций, не зависящих от типа устройства.
    Ключи звуковых устройств не имеют ничего общего с ключами файлов, событий, окон, задач и т.п. Системные функции DuplicateHandle, CloseHandle и прочие к ним не применимы.

    Низкоуровневое  программирование звука  в Windows

      В отличие от MS DOS, термин “низкоуровневое”  в Windows означает не манипуляцию  регистрами, прерываниями и каналами DMA, а просто элементарный уровень сервиса, обычно предоставляемого непосредственно драйвером устройства. В нашем случае таким устройством является звуковой адаптер (карта), хотя для Windows не имеет никакого значения, откуда драйвер берет вводимый звук и куда девает выводимый. Существует, например, драйвер для вывода произвольного звука на встроенный динамик (PC Speaker), а также виртуальные драйверы, которые просто перенаправляют звуковые потоки другим драйверам или программам.

    Звуковые  устройства в Windows относятся к классу Multimedia/Audio, в который входят два  типа устройств:

    1. Wave - устройства ввода/вывода цифрового звука, представленного в виде последовательности значений (отсчетов) амплитуды, следующих друг за другом с заданной частотой дискретизации;

    2. MIDI  - устройства ввода/вывода сообщений управления музыкальными инструментами в формате MIDI (Musical Instrument Digital Interface). Сами по себе MIDI - сообщения не содержат звука, а их последовательность представляет собой “электронную партитуру” исполняемого произведения.

    3. Aux - вспомогательные звуковые устройства (например, микшеры), при помощи которых реализуется управление параметрами звука, регулировки, настройки и т.п.

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

    Каждый  из типов включает устройства ввода (In) и вывода (Out). Первые служат для  записи звука от внешнего источника  в приложение, вторые — для воспроизведения звука, порожденного приложением, или извлеченного из звукового файла, или полученного иным способом.

    Общая схема взаимодействия программы и звуковой подсистемы

    Если  программе безразлично, с каким  конкретным устройством она будет работать, либо если работа ведется только со стандартным системным устройством, то программа может ориентироваться только на службу переназначения. В противном случае программа определяет количество имеющихся в системе устройств ввода и/или вывода при помощи функций GetNumDevs.
    При необходимости программа может  запросить параметры и имена  звуковых устройств при помощи функций GetDevCaps, чтобы, например, сформировать меню доступных устройств для пользователя или найти устройство, удовлетворяющее  заданным требованиям.
    Работа  программы с устройством начинается с его открытия функцией Open. При  этом программа указывает требуемый  формат звукового потока, а также  способ уведомления о выполнении запрошенных операций.
    Затем программа создает (обычно в динамической памяти) один или несколько звуковых буферов с заголовками и заполняет заголовки в соответствии с установленными правилами. Программа может также сразу подготовить все звуковые буферы к передаче драйверу функциями Prepare либо сделать это непосредственно перед передачей каждого очередного буфера.
    Цикл  записи начинается с накопления в  очереди драйвера нескольких буферов  при помощи функции AddBuffer. После накопления нужного количества буферов программа  запускает запись потока функцией Start. В этот момент драйвер запускает АЦП адаптера, и звуковые отсчеты начинают поступать в первый буфер из очереди.
    Дождавшись  завершения обработки очередного буфера или получив его в результате уведомления от драйвера, программа  обрабатывает записанные данные, определяя их размер по полю dwBytesRecorded в заголовке буфера. Затем освобожденный буфер может быть вновь передан драйверу функцией AddBuffer.
    Цикл  воспроизведения начинается с заполнения одного или нескольких буферов звуковыми  данными, после чего они передаются драйверу устройства вывода функцией Write. После получения первого же буфера драйвер запускает ЦАП адаптера, который начинает извлекать звуковые отсчеты. Драйвер всегда воспроизводит каждый буфер полностью, в соответствии со значением поля dwBufferLength в его заголовке. После возврата отработанных буферов приложению они вновь заполняются данными и опять передаются драйверу.
    При необходимости приостановить движение потока вызывается функция Stop/Pause. При  этом устройство ввода сразу же возвращает очередной буфер приложению (возможно, заполненный лишь частично). Не полностью проигранный буфер устройства вывода остается в очереди. Остальные буферы устройств обоих типов также остаются в очереди и включаются в работу только после перезапуска потока функциями Start/Restart.
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.