metod_15.03.04_atppp_oaip_ump_2016 (1016599), страница 42
Текст из файла (страница 42)
Если среди элементов списка данных разместить символыуправления принтером, они будут выполнены. С помощью этих символов можнопроизводить выбор шрифтов и управлять перемещением бумаги, например, настраиватьпринтер на разные межстрочные интервалы, устанавливать длину страницы и т. п.Примеры символов управления шрифтами и перемещением бумаги даны в таблице.193В таблице имена ESC, SO, SI и т. д. - общеприняты для различных типов принтеров.Их значения даны для EPSON-совместимых принтеров. Для EPSON-несовместимыхпринтеров значения ESC, SO, SI и другие можно задать в разделе CONST.Пример программы, иллюстрирующий шрифтовые возможности принтера (выводтекста широким, узким, утолщенным шрифтами; двойную печать; печать сподчеркиванием и вывод индексов и показателей степени):PROGRAM TYPEDEMO;CONST ESC = #27; SO = #14; DC4 = #20;SI = #15; DC2 = #18;BEGINASSIGN (OUTPUT, 'PRN'); REWRITE (OUTPUT);WRITELN ( ' демонстрация шрифтовых возможностей принтера ' ) ;WRITELN (SO, 'это широкий шрифт,', DC4, ', а это - стандартный');WRITELN (SI, 'это узкий шрифт', DC2) ;WRITELN (ESC, 'E', 'это утолщенный шрифт', ESC,'F'); WRITELN (ESC, 'G', 'двойная печать', ESC, 'H');WRITELN (ESC, '-', #1, 'печать с подчеркиванием', SI, ESC, '-', 10);WRITELN (' печать индексов: (Н1, ESC, 'S', #1, SI, '2',DC2, ESC, 'Т1, 'SO', ESC, 'S1, #1, SI,'4', DC2, ESC, 'Т', ')', ESC, 'S1, #0, SI,'3', DC2, ESC, 'T'); CLOSE (OUTPUT);END.Для использования символов управления шрифтами, перемещением бумаги ивывода русского текста надо, чтобы принтер был схемно "русифицирован" (настроен наработу с русским шрифтом).Управление звуковым устройствомВ ПК есть одноканальный звукогенератор, вырабатывающий электромагнитныеколебания заданной звуковой частоты, которые подаются на встроенный динамик.
Дляуправления динамиком используются процедуры SOUND, NOSOUND И DELAY.Процедура SOUND позволяет выдать звук заданной частоты. Обращение кпроцедуре:SOUND ( частота ) ;где частота - выражение типа Word, определяющее частоту звука в герцах;частота может быть F = 20 .. 10000.Процедура NOSOUND выключает динамик.Процедура DELAY обеспечивает задержку выполнения программы на заданныйинтервал времени, например на время выдачи звука, до отключения динамикапроцедурой NOSOUND. Обращение к процедуре DELAY:DELAY ( время ) ;где время - выражение типа Word, задающее интервал времени в миллисекундах.Например:SOUND (554); { включение звука } DELAY (200); { задержка } NOSOUND; {выключение звука }Короткий звуковой сигнал можно выдать с помощью процедуры194Write (#7);Пример программы для вывода простой музыкальной гаммы (массив частот Fсодержит частоты всех полутонов основной октавы - при переходе от одной октавы кдругой частоты изменяются в 2 раза):Исполнение простой музыкальной гаммы.PROGRAM SoundDemo;Uses CRT;Const F : ARRAY [1..13] of Word =( 330, 349, 370, 392, 415, 440, 466, 494, 523, 554, 588,.622, 660 ) ;VAR i, j : byte ;BEGINFor j := 1 TO 2 DO{ - перебор октав }For i := 1 TO 13 DO{ - перебор частот }BeginSOUND (j * F [ i ] ) ; { - выдача звука }DELAY (100) ;NOSOUND { - задержка и )End;{ - отключение звука )For j := 2 DownTO 1 DO{ - перебор октав и }For i := 13 DownTO 1 DO{ частот в обратном }BeginSOUND (j * F[i] );{ направлении }DELAY (100) ;{ - задержка }NOSOUND{ - отключение звука }End;END.Работа с модулем GRAPHМодуль GRAPH содержит процедуры и функции, которые предоставляютпользователю разнообразные возможности управления графическим экраном, в томчисле рисование дуг, окружностей, прямых и ломаных линий, прямоугольников,многоугольников, закраску фигур требуемым цветом, их штриховку и вывод текстов.Основные сведения о графическом режимеВ ПК принят растровый способ формирования изображений: любая информация наэкране представляет собой совокупность светящихся точек — пикселей (PIxEL - PictureELement - элемент растра).
Каждый пиксель размещается в соответствии скоординатами, определяющими его положение относительно левого верхнего углаэкрана, который имеет координаты 0,0.С помощью средств модуля GRAPH можно управлять яркостью и (или) цветомлюбого пикселя и таким образом формировать на экране любые изображения, в томчисле рисунки, графики, чертежи, символы.Наиболее важные электронные компоненты видеодисплея: контроллер (схемауправления), электронно-лучевая трубка, программируемые порты ввода-вывода,195матричное постоянное запоминающее устройство с таблицей знакогенератора ибуферная видеопамять. Все схемы названных компонентов размещаются на однойпечатной плате, которая называется дисплейным адаптером. Фирма IBM разработала ивыпускает несколько вариантов плат дисплейного адаптера. В том числе графическийадаптер CGA (от англ.
Color Graf ics Adapter - цветной графический адаптер). Онпозволяет формировать изображение из 160 х 100 пикселей. В более совершенныхадаптерах EGA (от Enchanced Graphics Adapter - улучшенный графический адаптер) иVGA (video Gate Array - видеографическая матрица) объем видеопамяти увеличен, чтопозволяет разместить на экране 640 х 350 пикселей.
Для формирования цветныхизображений дисплей Должен быть оснащен цветной электронно-лучевой трубкой.Средства модуля GRAPH позволяют получить на экране изображение, содержащее до256 цветов одновременно.Настройка графических процедур модуля GRAPH на работу с конкретнымадаптером достигается путем подключения соответствующего драйвера. Драйвер - этоспециальная программа, осуществляющая управление техническими средствами ПК.Графический драйвер управляет графическим адаптером.
Каждый драйвер работает сопределенным типом адаптера. Графические драйверы разработаны фирмой Borlandпрактически для всех типов адаптеров. Обычно они располагаются на диске вотдельном каталоге BGI в виде файлов с расширением .bgi (от англ. Borland GraphicsInterface - графический интерфейс фирмы Borland).Для адаптеров EGA и VGA координаты графического экрана могут изменяться пооси X от 0 до 639 и по оси Y от 0 до 349. Таким образом, всего по вертикали 350 точек,а по горизонтали 640 точек. Схематично координаты графического экранапредставлены на рисунке.Координаты графического экрана для EGA (VGAJ-адаптера в режиме высокогоразрешенияПолученное на экране изображение можно считать с экрана и запомнить, а затемснова воспроизвести на экран.
Его можно отпечатать после запуска программы,обеспечивающей эту возможность.Многие графические процедуры и функции используют внутренний указательтекущей позиции на экране, который в отличие от текстового курсора невидим.Положение этого .указателя, как и любые координаты на графическом экране, задаетсяотносительно левого верхнего угла, который имеет координаты 0,0. Горизонтальная196координата увеличивается слева направо, а вертикальная -сверху вниз. Количестводопустимых точек на экране определяется режимом работы графического адаптера,который является одним из параметров процедуры INITGRAPH.Для рисования изображений на экране можно использовать процедуры построенияфигур:1) из точек и линий: PutPixel, DrawPoly, Line, LineRel, LineTo;2) из линий:Bar - закрашенный прямоугольник; ВагЗВ - закрашенный параллелепипед; RectAngle- прямоугольник;3) криволинейных:Arc - дуга окружности;pieSlice - закрашенный секторкруга; Ellipse - дуга эллипса;Sector - закрашенный сектор эллипса.Рассмотрим несколько процедур и функций модуля GRAPH, позволяющих выводитьна экран изображения текстов, точек, линий и многоугольников.Переход в графический режим и обратноПосле включения ПК к моменту запуска программы из среды Паскаля состояние ПКсоответствует работе экрана в текстовом режиме.
Программа, которая используетграфические средства ПК, должна инициировать графический режим работы адаптера спомощью INITGRAPH - процедуры модуля GRAPH. По завершении выполненияпрограммы в графическом режиме ПК надо возвратить в текстовый режим с помощьюпроцедуры CLOSEGRAPH.Процедура INITGRAPH инициирует графическую систему и графический режимаппаратуры.
Формат обращения к процедуре INITGRAPH: INITGRAPH ( драйвер,режим, путь );гдедрайвер - параметр-переменная типа INTEGER, определяющая тип графического драйвера и адаптера;режим — параметр-переменная типа INTEGER, определяющая режим работыграфического адаптера;путь - выражение типа STRING, содержащее путь (маршрут) к каталогу, в которомнаходятся графические драйверы; по умолчанию (если параметр -пустая строка)подразумевается, что драйверы находятся в текущем каталоге.
Если параметр драйверравен нулю (Detect), то при выполнении процедуры INITGRAPH вызывается процедураDetectGraph, загружается соответствующий драйвер и выбирается графический режим,т. е. параметр режим получит соответствующее значение. Если первый параметр неравен нулю, то значение этого параметра рассматривается как номер драйвера, которыйи загружается.Для указания типа драйвера в модуле GRAPH предопределен ряд констант.Например:CONSTDetect =0; { Режим автоопределения типа драйвера } CGA= 1;MCGA= 2; EGA= 3; ...
VGA= 9;Автоматическое определение типа драйвера и адаптера используется, если тип197адаптера неизвестен или если программа рассчитана на работу с любым адаптером.Например:VAR Ga, Gm : INTEGER;... Ga := Detect;INITGRAPH ( Ga, Gm, " );INITGRAPH ( Ga, Gm,'D:\BP\BGI1 );где Ga - тип драйвера;Gm - тип режима, результат, возвращаемый INITGRAPH.Большинство адаптеров могут работать в различных режимах.
Чтобы указатьадаптеру требуемый режим работы, используется переменная режим, значениемкоторой может быть одна из предопределенных констант, определяющих количествопикселей на странице (экране) и палитру. Примеры констант режима работы адаптера:CONST CGACO= 0; { 320 х 200, 1 страница, 4 цвета, палитра 0:черный, ярко-зеленый, ярко-красный, желтый } CGAC1= 1; { 320 х 200, 1страница, 4 цвета, палитра 1:черный, ярко-голубой, малиновый, белый }EGALo= 0; { 640 х 200, 4 страницы, 16 цветов }EGAHi=1; { 640 х 350, 2 страницы, 16 цветов }VGALo= 0; { 640 х 200, 4 страницы, 16 цветов }VGAMed=1; { 640 х 350, 2 страницы, 16 цветов }VGAHi= 2; { 640 х 480, 1 страница, 16 цветов }РС3270Н1 =5; { 720 х 350, 1 страница, 1 цвет }IBM8514LO = 0; { 640 х 480, 256 цветов )IBM8514H1 = 1; { 1024х 768, 256 цветов }Функция GraphResult возвращает значение типа INTEGER, в котором содержитсякод ошибки (успешности) выполнения инициализации графического режима спомощью процедуры INITGRAPH.
Значение GraphResult = 0 (или GrOk) определяетуспешную инициализацию графического режима. После обращения к функцииGraphResult значение кода ошибки сбрасывается. Для многократного использования егонадо переслать в переменную целого типа.После обращения к процедуре INITGRAPH необходим анализ успеха инициализации. Процедуры и функции графического режима надо выполнять только в случаезначения GraphResult = 0.Функция GraphErrorMsg возвращает значение типа String, в котором по указанномукоду ошибки выдается соответствующее текстовое сообщение об ошибке. Форматобращения: GraphErrorMsg ( код );гдекод - переменная типа Integer, содержащая значение кода ошибки, определенное с помощью функции GraphResult.Например, с помощью операторов:Error := GraphResult;Writeln ( GraphErrorMsg(Error)); - можно отпечатать: 'Device driver not found' (ненайден драйвер устройства ) вместо: 'error code -3' (код ошибки-3),-без этих операторов.Чаще всего причиной ошибки при обращении к процедуре INITGRAPH являетсянеправильное указание места файла graph.tpu, содержащего библиотеку графическихподпрограмм, или файла с драйвером графического адаптера, например файлаegavga.bgi для адаптера VGA.














