41228

Восьмиточечная графика

Лекция

Информатика, кибернетика и программирование

Графика, выводимая с помощью матричных ПУ, представляется в виде отдельных точек, формирующих изображение. Графическое изображение ПУ выводит построчно, обычно строки графики расположены вплотную друг к другу. Графическая строка состоит из вертикальных колонок. Высота колонки может быть 8, 9 или 24 точки.

Русский

2013-10-23

1.09 MB

0 чел.

Графика

Графика, выводимая с помощью матричных ПУ, представляется в виде отдельных точек, формирующих изображение. Графическое изображение ПУ выводит построчно, обычно строки графики расположены вплотную друг к другу. Графическая строка состоит из вертикальных колонок. Высота колонки может быть 8, 9 или 24 точки.

Восьмиточечная графика

Восьмиточечная графика может печататься как на 9- так и на 24-точечных принтерах. В графических данных каждая колонка строки описывается одним байтом. В 9-точечном принтере каждому биту байта, описывающего колонку, соответствует одна игла: старшему биту — верхняя (первая), младшему — нижняя (восьмая). Если соответствующий бит равен единице, то печатается точка, в противном случае — нет. Десятичное значение байта графических данных, задающего колонку, можно получить суммируя "веса", приведенные в табл.

Таблица 5.5. Распределение игл в 9-точечных устройствах для 8-точечной графики

Номер иглы

Бит

«Вес»

Номер иглы

Бит

«Вес»

1

7

128

5

3

8

2

6

64

6

2

4

3

5

32

7

1

2

4

4

16

8

0

1

Рис.  Связь между точечными данными и задействованием иголок в печатающей головке

Если бит содержит " 1 ", то активизируется соответствующая иголка печатающей головки.

Имеются, например, следующие данные:

Поле с "." означает "1", а свободные поля - "0".

При эмуляции 24-игольчатыми принтерами режимов 8-точечной графики данные задаются точно так же, как и для 9-игольчатых принтеров. Распределение иголок (т.е. соответствие иголок битам) в этом случае в Epson-ориентированных принтеров и ПУ семейства Proprinter отличается. Первые используют каждую третью иглу, начиная с верхней, а вторые используют иглы по особой схеме, приведенной в табл. 5.6.

Таблица 5.6. Распределение игл в 24-точечных устройствах семейства Proprinter при эмуляции 8-точечной графики

Номер иглы

Бит байта данных

Номер иглы

Бит байта данных

1

2

3

4

5

6

7

8

9

Бит 7

Бит 7

Бит 7 & Бит 6 Бит 6

Бит 6

Бит 5

Бит 5

Бит 5 & Бит 4 Бит 4

11

12

13

14

15

16

17

18

9

Бит 3

Бит 3

Бит 3 & Бит 2 Бит 2

Бит 2

Бит 1

Бит 1

Бит 1 & Бит 0 Бит 0 Бит 0

10

Бит 4

20

Бит 0

   

В 8-точечной графике существует восемь режимов, отличающихся горизонтальной плотностью и скоростью печати (см. табл. 5.7).

Таблица .       Режимы 8-точечной графики

Режим

Максимальное число колонок в строке длиной

Код

Плотность, (точка/дюйм)

8 дюймов

13 дюймов

0

Одинарная (60)

480   

810

1

Двойная (120)

960

1620

2

Двойная с высокой скоростью (120)

960

1620

3

Четырехкратная (240)

 

1920

3240

4

Плотность ЭЛТ I (80)

640

1080

5

Одинарная плотность графопостроителя (72)

 576

972

6

Плотность ЭЛТ II (90)

     720

 990

7

Двойная плотность графопостроителя (144)

1152

1944

* В этих режимах печать соседних точек невозможна. Если эти точки встречаются в описании   графического изображения, то они исключаются автоматически.

Команды 8-точечной графики имеют следующий формат:

ESC <тип графики> n1 n2 <данные>

где <тип графики> — определяет горизонтальную плотность графического изображения и скорость печати; n1 и n2 число колонок графики, вычисляемое по формуле 256*n2 + n1; <данные> — байты, описывающие колонки в графической строке.

С помощью команды этого формата можно выбрать четыре типа графики, <тип графики> - { К | L | Y | Z }:

ESC К — графика одинарной плотности;

ESC L — графика двойной плотности;

ESC Y — графика двойной плотности на высокой скорости;

ESC Z — графика четырехкратной плотности.

Var

Graph_type  :  char;

Procedure  Print_Graph;

var  i,j  :  Integer;

begin

  write( Lst,   ‘--------------------------- ESC ',Graph_type);

writeln( Lst,   ‘---------------------------‘);

writeln( Lst);

for i:=l  to  5  do

begin

write(Lst, #27,  Graph_type,#80, #0):

for  j:=l  to 80 do write(Lst, #255);

writeln(Lst);

end;

for i:=l  to 3 do

begin

write(Lst,  #27, Graph_type, #240, #0):

for j:= 1 to 30 do

write(Lst, #$18, #$3C, #$7E, #&FF, #&FF, #&7E, #&3C, #&18);

writeln(lst);

end:

for i:=l  to 5 do

begin

write(Lst, #27, Graph_type, #10,#0,#34, #80, #138, #0);

write(Lst, #134,#0,#138,#80,#34,#0., ' ');

end;

writeln(Lst):

writeln(Lst, #0, #10):

end;

begin

Graph_type:='K';

Print_Graph:

Graph_type:='L':

Pr1nt_Graph;

Graph_type:='Y':

Pnnt_Graph:

Graph_type:='Z';

Print_Graph;

end;  


Точечный режим ESC К

Этот режим позволяет выводить на начать точечные данные с нормальной плотностью и числом позиций печати не более 480. Указанный режим устанавливается при вводе кодовой последовательности

ЕSС К n1 n2,

где К соответствует коду 7510, а n1 и n2 – коды, соответствующие количеству точечных данных (позиций) в строке. При заданном количестве N точечных данных (позиций) в строке n1=Nmod256, n2=Nint(N/256), т.е. n1 равно остатку, а n2 - целой части от деления N на 256. По окончании точечного режима принтер автоматически возвращается в текстовый режим.

Пример       N=240  или  128+64+32+16

n1=240,  n2=0;

N=480=224+256*1  ,    n1=480-256=224,  n2=1,  

Максимальное количество точечных позиций, печатаемых при нормальной плотности в одной строке, составляет 480. Когда общее количество точечных данных в строке больше 480, то все избыточные данные игнорируются.

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

В одной строке разрешается чередовать данные в текстовом и точечном режимах. Необходимо только принять во внимание максимальное количество печатных точек в строке. Установленные вид шрифта и ширина символов сохраняются.

В 24-игольчатых принтерах семейства Proprinter эти четыре режима реализуются командой формата:

ESC "[g" c1 c2 m <данные>,

где c1 и c2 — соответственно младший и старший байты счетчика, содержащего число байт графических данных плюс один, a m — код режима, О <= т <= 3 (см. табл. 5.7).

Для выбора всех режимов графики используется универсальная команда формата:

ESC "*" m n1 n2 <данные>

где m — код режима, 0 <= т <= 7 (см. табл. 5.7); n1, n2 — младший и старший байты числа колонок графики, вычисляемое по формуле 256*n2 + n1; <данные> — байты, описывающие колонки в графической строке.

const

Arr_Mode : array [0..7] of integer = (240.480,480,960,320.288,360.576);

var

i : byte;

Procedure Graph (Mode : byte; 1 : integer);

var i : Integer;

begin

write(Lst, ‘------------------------------- ESC * ',Mode);

writeln(Lst, ------------------------------- ‘);

writeln(Lst);

write(Lst, #27, '*', chr(Mode),chr(1 mod 256), chr(1 div 256));

for i:=l  to 1 do write(Lst, chr(i mod 128 +128));

writeln(Lst, #10, #10);

end;

begin

for i:=0 to 7 do Graph(i, Arr_Mode[i]);

end;

В устройствах RAVI-8010, D100-E, NR-15 режим двойной плотности графопостроителя не реализован. В устройствах ЕС7245 и ЕС7144 этот режим реализован на полускорости, поэтому печать соседних точек исключена. В принтерах фирмы Epson режим двойной плотности графопостроителя реализован на скорости меньшей, чем полускорость.

В 24-игольчатых принтерах (LQ-250+, Proprinter X24, Proprinter XL24) при эмуляции 8-точечной графики отсутствуют плотности графопостроителя (режимы 5 и 7, см. табл. 5.7).

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

ESC <тип графики> m

где <тип графики> - { 'К' | 'L' | 'Y' | 'V };   т — код режима, O <= m <=7.

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

var i,j : integer;

begin

for i:=0 to 7 do begin

write(Lst,  'Плотность К на ',i,'  ‘#27, '?K',  chr(i));

write(Lst,  #27, 'K' ,#240, #0);

for j:=l to 80 do write(Lst,  #255, #0, #0);

writeln (Lst);

end;

end:

Девятиточечная графика

В 9-игольчатых принтерах существует возможность использования всех 9 игл для печати графических изображений с помощью команды ESC "^". Формат команды:

ESC "^" т n1 n2 <данные>

где m определяет плотность печати (0 — одинарная, 1 — двойная); n1 и n2 определяют общее число колонок так же, как для 8-точечной графики.

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

var

i, j : integer;

с : char;

begin

for 1:=1 to 5 do begin

for j:=0 to 1 do begin

write(Lst, #27, ‘^’, chr(j), #10, #0, #0, #128, #l, #128);

write(Lst, #2, #l28, #4, #128, #8, #128, #16, #28, #32);

write(Lst, #128, #64, #128, #128, #128, #0, #0):

end;

end;

write1n(Lst, #10):

end:

5.2.3. Двадцатичетырехточечная графика

При работе с 24-точечной графикой число байт в графических данных равно числу колонок, умноженному на три. Для каждой колонки иглы с 1 по 8 описываются первым байтом, с 9 по 16 — вторым и с 17 по 24 — третьим (табл. 5.8).

Таблица 5.8. Распределение игл при печати 24-битовых графических образов

Номер иглы

Бит

Вес

Номер иглы

Бит

“Bec”

1, 9. 17

2, 10, 18

3, 11, 19

4, 12, 20

7

6

5

 4

128

64

32

16

5, 13, 21

6, 14, 22

7, 15, 19

8, 16, 24

3

2

1

0

8

4

2

1

В 24-игольчатых принтерах 8-точечная и 24-точечная графика реализуется одними и теми же командами: командой графики ESC "*" (Epson, IBM-G, IBM-P) или командой ESC "[g- (IBM-P).

В 24-игольчатых принтерах Proprinter X24 и Proprinter XL24 основным способом печати графических изображений является печать с адресацией всех точек — АРА-графика (АРА — All Point Adressable). Для перехода к этому способу печати необходимо поставить специальный микропереключатель устройства в положение, соответствующее АРА-графике. Восьмиточечная графика отображается с помощью 20 иголок печатающей головки по схеме, приведенной в табл. 5.6.

В табл. 5.9 приведены значения параметра m для режимов 24-точечной графики. При этом коды 8 — 12 соответствуют команде ESC "[g", а остальные — команде ESC "*".

В устройствах Proprinter X24 и Proprinter XL24 для доступа к режимам 4, б и 32 — 40 (см. табл. 5.9) необходимо поставить указанный микропереключатель в положение, соответствующее альтернативной графике (т.е. не АРА-графике, а графике, принятой в Epson-ориентированных системах).

Таблица 5.9. Режимы 24-битовой графики

Код Код

Плотность,

точка/дюйм

                            Название режима

8

9

11

12

32

33

38

39

40

60

120

180

360

60

120

90

180

360

Высокое разрешение для ESC "К"

Высокое разрешение для ESC "L"

Высокое разрешение для тройной плотности

Высокое разрешение для шестикратной плотности

Высокое разрешение для ESC "К"

Высокое разрешение для ESC "L"

ЭЛТ III

Высокое разрешение для тройной плотности

Высокое разрешение для шестикратной плотности

В цветном принтере фирмы IBM существует возможность устанавливать масштабный коэффициент для графических изображений. Допускается установка коэффициентов 1:1 и 5:6, при этом по умолчанию принтером используется коэффициент 5:6, который соответствует масштабному коэффициенту дисплея. Эта возможность позволяет копировать графический экран без искажения.

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


5.2.4. Сочетание команд программирования графического изображения с другими командами

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

Число посылаемых графических данных должно точно соответствовать числу данных, зарезервированному в используемой графической команде. Если графических данных послано больше, то избыточная часть их будет восприниматься принтером как коды символов. Если же графических данных послано меньше, то принтер остановится и будет ждать недостающие данные. В последней ситуации устройство ЕС7245 оказываются чувствительным к нажатию кнопок, a FX-800 — нет.

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

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

var

i, j : integer;

begin

write(Lst, #27, 'A'.#7);

for j : = 1 to 2 do

begin

write(Lst, #27, 'L', #55.M);

for i : = 1 to 44 do write(Lst,   #0);

for 1 : = 45 to 55 do write(Lst, #255);

writeln(Lst);

end;

write (Lst, #27,'L', #65, #0);

for i := 1 to 34 do write(Lst, #0);

for i : = 35  to 65 do write(Lst,  #170);

writeln(Lst);

for j := 1 to 2 do

begin

write(Lst, #27, 'L', #75, #0);

for i := 1 to 24 do write(Lst, #0);

for i := 25 to 75 do write(Lst, #255);

write(Lst, #l3);

end;

write1n(Lst);

write(Lst, #27, 'K', #43, #0);

for i := 1 to 7 do write(Lst,  #0);

for 1 := 8 to 25 do write(Lst,  #85, #170);

writeln(Lst);

for j := 1 to 2 do

begin

write(Lst, #27,'L', #100, #0);

for i := 1 to 100 do  write(Lst, #255);

write(Lst, #13);

end;

writeln(Lst);

write(Lst, #27, 'K', #50, #O};

for i := 1 to 50 do write(Lst, #255);

end;

В устройствах RAVI-8010, RAVI-8010M, ЕС7245, EC7144 печать графических изображений производится только в одном направлении — слева направо, что связано с точностью печати.

Сочетание графической и символьной информации в одной строке значительно снижает скорость печати в принтерах FX-800 и FX-1000, это снижение связано с тем, что при переключении с символьной информации на графическую и наоборот происходят торможение и разгон печатающей головки. В устройствах ЕС7245 и EC7144 такие переключения практически не снижают скорости печати.

Печатающие устройства FX-800 и FX-1000 игнорируют сочетания ряда управляющих команд принтера с командами графики.

var

1 : integer;

begin

write(Lst, 'abcdefghijkimn'); {символы}

write(Lst, #27,'K', #30, #O): {графика}

for i := 1 to 15 do write(Lst, #170, #74);

write(Lst, '1234567890'); {символы}

write(Lst, #24); {отмена строки}

write(Lst, #27,'K', #30, #0); {графика}

for i := 1 to 15 do write(Lst, #255,#74);

write(Lst, #24); {отмена строки} end;

При чередовании в строке символов с графическими изображениями выравнивание (кроме выравнивания по левому полю) в принтерах FX-800, FX-1000, LQ-2500+ может быть выполнено некорректно.

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

var

i, j: integer;

begin

write(Lst, #27,'A', #7);

for j := 1 to 5 do begin

write(Lst, #27,'IC', #30, #0);

for 1:= 1 to 30 do write(Lst, #170};

write(Lst, #27, 'L', #60, #0);

for i:= 1 to 60 do write(Lst,  #170);

write(Lst, #8);

write(Lst, #27,'K', #60, #0);

for i := 1 to 60 do write(Lst, #85);

writeln(Lst);

end;

end;


 

А также другие работы, которые могут Вас заинтересовать

28937. Отечественная война 1812 г. 43 KB
  Русская армия насчитывала около 240 тысяч человек и была разделена на три группы: первая армия командующий Барклай де Толли река Неман 120 тысяч человек; вторая армия командующий Багратион юг Литвы 49 тысяч человек; третья армия командующий А. Тормасов Волынь 44 тысячи человек. Великая армия Наполеона насчитывала 600 тысяч человек имела 1420 орудий. На главном направлении наступала группировка в 220 тысяч человек против 160 тысяч русских.
28938. Движение декабристов 36 KB
  Первые тайные общества появились после окончания заграничного похода русской армии. Членами общества были молодые гвардейские офицеры С. Главной целью общества было уничтожение крепостного права и установление конституционной монархии путем военного переворота. Слабость организации и разногласия между членами общества привели к его самороспуску.
28939. Внутренняя и внешняя политика России во второй четверти XIX в. 51 KB
  Внутренняя и внешняя политика России во второй четверти XIX в. Понимал неизбежность реформ но не решался отменить крепостное право укреплял самодержавие опираясь на армию и чиновничество жестоко преследовал любую крамолу в России и за рубежом за что получил прозвище жандарм Европы. внешний долг России достиг 102 млн. был заключен Туркманчайский договор по которому к России присоединялась Восточная Армения.
28940. Основные общественно-политические течения во второй четверти XIX в. 34.5 KB
  Следует отметить что за народность выступали представители всех направлений общественного движения в России но вкладывали в это понятие совершенно различное содержание. Западники и славянофилы Либеральнооппозиционное направление в русской общественной мысли в России второй четверти XIX в. Славянофилы выступали за отмену крепостного права сверху ратовали за развитие промышленности торговли просвещения сурово критиковали существовавшую в России политическую систему выступали за свободу слова и печати. Однако основной тезис...
28941. История как наука и ее роль в обществе 31.5 KB
  История как наука и ее роль в обществе. Пушкин История в целом изучает прошлое человечества а также отдельные стороны деятельности общества тенденции исторического процесса. Раздел История в том или ином виде присутствует во многих науках. Например: историческая география экономическая история социальная история гражданская и военная история идеология История подразделяется на Мировую Историю отдельных народов и Историю континентов.
28942. Античное наследие в эпоху Великого переселения народов 26 KB
  Античное наследие в эпоху Великого переселения народов. Настала беспокойная эпоха великого переселения народов в ходе которого Западная Римская империя была разгромлена многочисленными варварскими племенами готы гунны вандалы и т. Каковы же причины явления получившего название Великого переселения народов Качественные сдвиги в хозяйственной жизни германских и славянских племён накануне Великого переселения привели к росту общественного богатства и большого числа людей не занятых производительным трудом. Причины их переселения...
28943. Славянский мир. Процесс этногенеза у восточных славян 24 KB
  Славянский мир. Процесс этногенеза у восточных славян. Древнерусская народность явилась тем этническим образованием восточных славян которое возникло в период зарождения и утверждение феодализма в эпоху возникновения государства в процессе формирования расширявшим свою территорию включая в состав Руси неславянские этнические элементы. В ходе Великого переселения народов в Европу хлынули также славянские племена.
28944. Основные этапы становления государственности в Древней Руси и ее особенности 26 KB
  Были разгромлены Волжская Булгария и Хазарский каганат покорены мордовские племена отражен натиск печенегов но война с Византией закончилась неудачно: дружине Святослава с трудом удалось отступить. Святослав попал в засаду печенегов в районе днепровских порогов и был убит. Был укреплен государственный аппарат и решена задача обороны от печенегов.
28945. Принятие христианства и его роль в укреплении государства, духовном объединении древнерусского общества 28.5 KB
  Язычество приводило к изоляции Руси от христианского мира Европы тормозило развитие международных связей и торговли; 2. Язычество мешало стабилизации и укреплению феодального строя на Руси; 3. Монотеизм христианской религии укреплял авторитет княжеской власти способствовал единению Руси; 5. Появляющееся социальное неравенство на Руси требовало новой идеологии которая могла бы оправдать богатство одних и бедность других утешить людей попавших в зависимость от феодала обещая им лучшую жизнь в ином мире.