Страница 7 из 20
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.
|