
РАБОТА С ОСНОВНЫМИ ГРАФИЧЕСКИМИ УСТРОЙСТВАМИ
30
24)игольчатые (LQ) принтеры
Язык управления для большинства 24игольчатых принтеров является надмножеством над
языком для 9игольчатых принтеров, поэтому все приведенные ранее команды будут
работать и с LQпринтерами (используя только 8 игл, а не 24). Для использования всех 24 игл
предусмотрены дополнительные режимы в команде Esc '*'.
Значение m Режим Плотность (точек на дюйм)
32 Обычная плотность 60
33 Двойная плотность 120
38 CRT III 90
39 Тройная плотность 180
При этом количество столбцов пикселов, как и раньше, равно n1 + 256*n2, но для
каждого столбца задается уже 3 байта.
Большинство струйных принтеров на уровне языка управления совместимы с LQ
принтерами.
Лазерные принтеры
Одним из наиболее распространенных классов лазерных принтеров являются лазерные
принтеры серии HP LaserJet фирмы Hewlett Packard. Все они управляются языком PCL.
Отметим, что большое количество лазерных принтеров других фирм также поддерживают
язык PCL. Ниже приводится краткая сводка основных команд этого языка, используемых при
выводе графики.
Мнемоника Десятичный код Комментарии
Esc * t 75 R 27, 42, 116, 55, 53, 82 Установка плотности печати 75 точек на дюйм
Esc * t 100 R 27,42, 116,49, 48,48, 82 Установка плотности печати 100 точек на дюйм
Esc * t 150 R 27, 42, 116, 49, 53,48, 82 Установка плотности печати 150 точек на дюйм
Esc * t 300 R 27,42, 116, 51,48,48,82 Установка плотности печати 300 точек на дюйм
Esc & a # R 27, 38, 97, #...#, 82 Вертикальное позиционирование
Esc & a # С 27, 38, 97, #...#, 67 Горизонтальное позиционирование
Esc * r 1 A 27,42, 114,49, 65 Начать вывод графики
Esc * b # W data 27, 42, 98, #...#, 87, data Передать графические данные
Esc * r В 27, 42, 114, 66 Закончить вывод графики
Здесь символ # означает, что в этом месте выводятся цифры, задающие десятичное
значение числа. Пикселы собираются в байты по горизонтали, то есть за одну команду Esc * b
передается сразу целая строка пикселов.
Ниже представлена программа, копирующая содержимое экрана на лазерный принтер,
поддерживающий язык PCL.
!// File Example3.cpp
#include <bios.h>
#include <conio.h>
#include <graphics.h>
#include <process.h>
#include <stdio.h>
int Port = 0; // use LPT1:
inline int Print ( char byte )
{
return biosprint ( 0, byte, Port );
}
int PrintStr ( char * str )