Служба спасения студентов
Служба спасения для студентов

СибГУТИ Лабораторная работа 1 Операционные системы скачать бесплатно

Скачать бесплатно
Задание
Написать программу, которая должна “озвучивать” клавиатуру, т.е. после запуска этой программы нажатие любой клавиши на клавиатуре будет сопровождаться звуковым сигналом. Клавиатура при этом должна оставаться работоспособной, т.е. продолжать выполнять свои основные функции в нормальном темпе. 
Программа должна быть резидентной, т.е. оставаться в памяти после своего завершения.
В качестве пробного варианта длительность звукового сигнала и частоту задать константами в программе. Когда будет получена устойчивая работа программы, изменить её таким образом, чтобы длительность звукового сигнала и его частота задавались в качестве параметров при запуске программы. 
Необходимо предоставить пользователю возможность “выключать” и “включать” заново звуковое сопровождение работы клавиш. Использовать для “выключения/включения” звука нестандартную комбинацию клавиш: сочетание нажатой клавиши <Shift> с какой-либо ещё, например, <Shift>+<Esc> …
Описание входных данных
Программа принимает два параметра: частоту и длительность звукового сигнала. 
Параметры должны быть целочисленного типа и иметь неотрицательные значения.
Описание основных переменных и подпрограмм
    Handler0 - переменная процедурного типа для запуска старой процедуры обработки прерывания клавиатуры.
    chast - частота звукового сигнала.
    dlit - длительность звукового сигнала.
    b - указывает, надо ли озвучивать нажатие клавиш.
    keys - хранит статусы специальных клавиш.
Handler – процедура для обработки прерываний клавиатуры. 
Алгоритм решения
Прием и анализ входных параметров;
Если озвучивание включено, то при нажатии клавиш выдается звуковой сигнал.
Если  нажата левая клавиша Shift и F4, то озвучивание клавиш включается, если было отключено или отключается, если было включено.
Текст программы
...
 
Копия экрана программы
Ответы на контрольные вопросы
1) Как поведёт себя Ваша программа, если в качестве параметров командной строки вместо требуемых по заданию длительности и частоты будут заданы неверные значения, например, символы, строки символов, отрицательные или дробные числа?
Если заданы неверные значения входных параметров, то программа выдает сообщения об ошибках и завершается.
2) Как будет работать программа, если задавать величину длительности звукового сигнала очень большой? Почему?
При этом клавиатура перестает быть работоспособной. Поэтому в программе величина длительности звукового сигнала ограничена числом 1000.
3) Как можно определить скан-коды требуемых клавиш?
 Необходимо читать скан-коды из порта $60.
4) В каком случае при нажатии и отпускании клавиши может раздаваться “двойной” сигнал?
Если нажаты некоторые специальные клавиши, такие как Page Up, Page Down, Home, End и другие.
5) Проверьте, что произойдет, если нажать клавишу и удерживать её в нажатом состоянии? Варианты – раздаётся многократно повторяемый звуковой сигнал, сигнал прозвучал один раз. Что нужно изменить в программе, чтобы она изменила свой вариант поведения на альтернативный?
В этом случае раздаётся многократно повторяемый звуковой сигнал. Для того, чтобы сигнал прозвучал один раз в начало кода процедуры Handler надо внести изменения, сохраняя скан-код предыдущей нажатой клавиши. И  если генерируется один и тот же скан-код, то программа не выдает звуковой сигнал.
...
6) Видоизменить программу для того, чтобы при нажатии любой клавиши раздавался звук, соответствующий заданной в качестве параметра частоте сигнала, а отпускание клавиши сопровождал звук более высокий (выше на 50% от заданной частоты).
В начало кода процедуры Handler надо внести изменения:
...
7) Для некоторых специальных клавиш установить длительность звукового сигнала большей в 2–3 раза (например, для <Esc>, <Shift> или <Enter>) – сделать в программе соответствующие изменения.
Для клавиш Esc и Enter при нажатии и отпускании длительность звучания увеличим в 3 раза.
В код процедуры Handler внесем изменения:
...
Заявка на расчет