Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив2 / курсовая docx200 / Kursovaya_OSiO_Kostousov.docx
Скачиваний:
51
Добавлен:
07.08.2013
Размер:
255.45 Кб
Скачать

Запуск программы 1led.C

sudo ./led 1

Программа работает в режиме «1» - поочерёдное мигание каждого из светодиодов создает эффект гирлянды. Для этого реализован цикл из 3 итераций для того, чтобы функции ioctl(fd,KDSETLED,LED[j])в качестве параметра передавать поочерёдно из массива идентификатор каждого из светодиодов. Мигание представляет собой включение и отключение (ioctl(fd,KDSETLED,0)) светодиодов через некоторые интервалы времени. Программа совершает 25 итераций, после чего мы вновь можем обращаться к терминалу.

sudo ./led 2

Программа работает в режиме «2» - случайное мигание одного из светодиодов. Генерация случайного значение происходит таким образом: ioctl(fd,KDSETLED,LED[rand()%3]). Программа совершает 25 итераций, после чего мы вновь можем обращаться к терминалу.

sudo ./1keydoardLED ???

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

Запуск программы 2cd.C

sudo ./cd

В данном случае запуск производится без параметров. Благодаря функциям открытия дисковода (ioctl(fd,CDROMEJECT,0)) и его закрытия (ioctl(fd,CDROMCLOSETRAY,0)) реализуется подобие «танца» под саундтрек к фильму «Звездные Войны».

Запуск программы 3musicbox.C

sudo modprobe pcspkr

sudo ./ music

Перед запуском программы необходимо включить pcspkr – спикер персонального компьютера. После запуска программы воспроизводятся мелодии, определяемые параметрами:

1 – эффект сирены (нарастание и убывание частоты звучание спикера)

2 – эффект барабанной дроби

3 – воспроизведение композиции «В лесу родилась ёлочка».

Изначально мы тестировали мелодии в WindowsMVSс помощью функцииbeep. Затем мы преобразовали из 10-ой системы (с которой работаетbeep) счисления в 16-ую (в ней формируются системные вызовы) с помощью такой операции: 1193180/frequency. Где было возможно, мы явно преобразовывали в 16-ую систему счисления. Также продолжительность для вызовов терминала пришлось увеличить, умножив на 1000. Подобное решение было взято, после прочтения следующего форума:http://ubuntuforums.org/showthread.php?t=873679.

Тестирование

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

Также использовался трассировщик:

sudo strace program_name

Рис. 2. Часть данных, полученных после трассировки первой программы.

Как мы видим, в ходе исполнения первой программы, сначала открывается файловый дескриптор1, значение которого равно 3, то есть неотрицательно, а значит корректно. Далееstrcmp– проверка параметров,ioctl– системные вызовы функций с идентификатором 19250 и параметром в 16-ой системе счисления. Все описанные функции вернули 0, что гарантирует корректность их работы.

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

Третья программа также корректно работает во всех 3-х режимах.

Для эксперимента программа также запускалась на компьютере, без функции закрытия cdлотка и без драйвера для спикера. Были получены следующие результаты:

Рис. 3. Часть данных, полученных после трассировки второй программы на компьютере, без функции закрытия cd лотка и без драйвера для спикера.

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

Соседние файлы в папке курсовая docx200