Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia_16_Standartnye_podprogrammy_DOS_System.doc
Скачиваний:
3
Добавлен:
03.12.2018
Размер:
141.82 Кб
Скачать

Управление клавиатурой и звуком

Клавиатура компьютера состоит из клавиш алфавитно-цифровых, функциональных и специальных. При нажатии клавиши или комбинации клавиш генерируется их код. Коды алфавитно-цифровых клавиш и ряда специальных клавиш обычно состоят из одного байта, а функциональных клавиш, их комбинаций с клавишами Ctrl, Shift, Alt, а также алфавитно-цифровые клавиши в комбинации с клавишей Alt – из двух байт. Код из двух байт называют расширенным, первый символ в нем нуль (#0), а второй ASCII-код.

Некоторые коды клавиш или коды комбинаций клавиш представлены в таблице 2.

Таблица 2.

Код клавиши или комбинации клавиш

Клавиши

Код клавиши или комбинации клавиш

Клавиши

#0#119

Ctrl+Home

#0#71

Home

#0#133

F11

#0#134

F12

#0#80

#0#59

F1

#0#72

#0#68

F10

#0#75

#27

Esc

#0#77

#13

Enter

#0#83

Del

#0#82

Insert

При нажатии большинства клавиш их коды размещаются в буфере клавиатуры, содержание буфера может быть проанализировано. Для управления клавиатурой в модуле CRT представлены функции KeyPressed и ReadKey.

Функция KeyPressed:boolean; - принимает значение True (истина), если на клавиатуре была нажата какая-нибудь клавиша, в противном случае - False (ложь). Коды клавиш клавиатуры при этом сохраняются в ее специальном буфере и могут использоваться для анализа и обработки.

Функция ReadKey:Char; - читает код клавиши (один байт) из буфера клавиатуры. Этот код на экран компьютера не выводится. Если перед этой функцией выполнялась функция KeyPressed, и она приняла значение True (истина), то код клавиши читается сразу. В противном случае функция ReadKey ожидает нажатия клавиши. Для расширенных кодов клавиш данную функцию требуется выполнять дважды.

Для проверки нажатия клавиши в период выполнения цикла часто применяется функция KeyPressed в сочетании с оператором цикла с последующим условием Repeat …until.

Пример 4.

Repeat

until Keypressed;

Для работы со звуком в модуле CRT используются две процедуры Sound и NoSound.

Процедура Sound(Sig:word); - обеспечивает доступ к встроенному динамику компьютера и генерирует звуковой сигнал определенного частотного тона в герцах.

Таблица 3. Значения частот музыкальных звуков

Первая октава

Вторая октава

До

Ре

Ми

Фа

Соль

Ля

Си

До

Ре

Ми

Фа

Соль

Ля

Си

523

587

659

698

783

880

998

1046

1175

1319

1397

1568

1760

1976

Большая октава

Малая октава

До

Ре

Ми

Фа

Соль

Ля

Си

До

Ре

Ми

Фа

Соль

Ля

Си

130

147

165

175

196

220

246

262

294

330

349

392

440

494

Для завершения выдачи динамиком звукового сигнала используется процедура NoSound.

При работе со звуком часто используется процедура задержки выполнения программы на определенное число миллисекунд Delay(Msek:word);.

Пример 5. Сгенерируем последовательность звуков, представляющих гамму.

Uses CRT;

Const GAMMA : array[1..8] of integer=(262,294,330,349,392,440,494,524);

Var j:byte;

BEGIN{Проигрываем гамму}

j:=1;

Repeat

Sound(GAMMA[j]); {запускаем звук}

Delay(400); {задержка}

Nosound; {выключаем звук}

if j=8 then begin j:=1; delay(1000); end;

Inc(j)

Until KeyPressed {завершаем цикл при нажатии клавиши }

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]