Справочник программиста на персональном компьютере фирмы IBM. Принтер
Страница 7. Установка текстового и графического режимов


     6.2.1 Установка текстового и графического режимов.


   Принтер  всегда находится в текстовом режиме, до тех пор  пока
он специально не переведен в графический режим. Команда, устанав-
ливающая  графический  режим, должна сообщать какое число  байтов
графических данных будет  передано  (но не больше одной строки) и
после  того, как это число байтов будет интерпретировано как гра-
фическое изображение, принтер вернется в текстовый режим. По этой
причине нет команды, которая переводит принтер в текстовый режим.
   Число  графических режимов у разных принтеров разное.  Во всех
случаях, за  кодом  устанавливающим  графический  режим следуют 2
байта,  указывающие какое число графических байтов будет передано
(сначала младший байт).  Чтобы  вычислить значение этих двух бай-
тов,  разделите число байтов данных на 256 и поместите  результат
во второй байт, а остаток - в первый байт. За этими двумя байтами
должны сразу следовать байты данных.
   Каждый  байт определяет цепочку битов, соответствующих  восьми
вертикальным точкам одной позиции в строке. Младший бит (1) соот-
ветствует  низу колонки, а старший бит (128) - верху.   Например,
чтобы напечатать пирамиду, пошлите сначала байт, у которого уста-
новлен  только  нижний бит, затем байт у которого  установлены  2
нижних бита и т.д. После восьмого байта расположите те же байты в
обратном  порядке.   Значение первого байта будет 1, второго -  3
(1+2), затем 7 (1+2+4), затем 15 (1+2+4+8)  и т.д. На рисунке 6-1
изображена вся картина.
   Для  печати  пирамиды в Бейсике на  графическом  принтере  IBM
напишите следующий код:

100 LPRINT CHR$(27);CHR$(75);CHR$(15);CHR$(0);CHR$(1);CHR$(3);
        CHR$(7);CHR$(15);CHR$(31);CHR$(63);CHR$(127);CHR$(255);
        CHR$(127);CHR$(63);CHR$(31);CHR$(15);CHR$(3);CHR$(1);

Первые два  байта  переводят  принтер  в  графический режим с 480
точками,  следующие два - сообщают, что будет передано 15  байтов
графических данных, а затем  идет  последовательность байтов дан-
ных. Конечно то же самое можно запрограммировать умнее, организо-
вав цикл, в котором будут передаваться байты данных. Отметим, что
все проблемы в этом случае возникают, если указанное число байтов
не соответствует числу  посылаемых  байтов.  Чтобы создать пробел
между  графическими фигурами выведите несколько байтов с  нулевым
значением.  В Бейсике, когда в  одной  строке выводится больше 80
байтов графических данных, не забудьте предварительно  установить
"бесконечную"  ширину  принтера.  Для  этого  надо ввести команду
WIDTH "LPT1:",255.
   Графический  принтер  IBM  имеет четырек  графических  режима,
которые более или менее "стандартны". Они такие:

27,75  480 точек в строке. Нормальный режим. Максимум 480 байтов
       данных на оператор.
27,76  960 точек в строке. Удвоенное горизонтальное разрешение,
       но печать вдвое медленнее (двойная плотность). Максимум
       960 байтов данных на оператор.

27,89  960 точек в строке, печать с нормальной скоростью (двой-
       ная плотность с высокой скоростью). Две точки, прилегаю-
       щие по горизонтали, не могут быть напечатаны, поскольку
       не будут успевать иголки печатающей головки. Если делается
       попытка их напечатать, то вторая точка будет игнорировать-
       ся. Максимум 960 байтов данных на оператор.
27,90  1920 точек в строке, печать вдвое медленнее (четверная
       плотность). Соседние точки по горизонтали должны отстоять
       по крайней мере на 3 точки (т.е. 1 печатаем, 2 пропуска-
       ем). Максимум 1920 байтов данных на оператор.

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

  Коды         Графический  Цветной  Компактный  Пропринтер

 27,75          480 точек     1108      560          480
 27,76          960 точек     2216       -           960
 27,89          960 точек     2216       -           960
 27,90         1920 точек     4432       -          1920

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

 
« Предыдущая статья   Следующая статья »