16.06.2019

Esc pos команды. Набор команд Epson. Примерные возможности принтеров


Основа протокола

Стандартная задача любого чекового принтера - это печать текста. Дополнительно можно создать индивидуальные параметры шрифта, размера, плотности и других параметров устройства. Вся информация (полезная и управляющая) передается в виде текста, принтер "улавливает" команды управления, отделяет их, и печатает только текстовую часть. Таким образом, управление содержится в самом тексте. Для отделения служебной от информационной части используются специальные символы, которые не печатаются и не могут вводиться с клавиатуры компьютера. Пример такого символа - “ESC” или символ десятичного кода 27. Отправка данного символа на принтер означает, что после него идет краткая команда управления печати. Описание команд ESC/POS протокола обычно идет вместе с устройством и является частью документации принтера.

Примерные возможности принтеров

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

  • Увеличение и уменьшение размера шрифта;
  • Активация инверсного шрифта (белые буквы на черном фоне)
  • Печать штрих-кода;
  • Активация звукового сигнала принтера;
  • Подача электрического сигнала для открытия денежного ящика;
  • Активация ножа на принтере для отрезания бумаги.

В зависимости от модели и возможностей принтера, указанные действия активируются с помощью ESC/POS команд. При этом принтер следит за каждой командой и выполняет ее незамедлительно.

Когда можно использовать ESC/POS команды

Использование ESC/POS команд возможно всегда, когда принтер их поддерживает (почти все принтеры) и когда работа осуществляется напрямую с принтером, без использования промежуточного Windows драйвера. Microinvest Склад Pro Light управляет устройством напрямую, отправляя необходимые команды на принтер. Они работают безупречно и при использовании USB принтера без промежуточного драйвера и USB к COM эмуляции.

Когда невозможно использовать ESC/POS команды

Существуют 3 случая, когда использование ESC/POS команд невозможно в принципе: 1. Фискальные регистраторы. Фискальные принтеры используют сложный протокол коммуникации, который абсолютно не совместим с ESC/POS протоколом. В результате чего принтер никак не реагирует на ESC/POS команды; 2. При управлении принтером через установленный Windows драйвер. В таком случае драйвер сам выполняет ESC/POS команды, и категорично отбрасывает такие команды, отправляемые программным обеспечением. В результате чего нет никакого воздействия на принтер; 3. Когда используются промежуточные звенья в печати, например, сервер печати или другие аналогичные технологии. В таком случае ESC/POS команды фильтруются, и теряются во время коммуникации, даже не доходя до принтера. При построении системы необходимо правильно планировать управление принтерами. Мы рекомендуем, чтобы каждый принтер был привязан напрямую к управляющему компьютеру, и работал непосредственно по протоколу, без драйвера.

Кодирование команд

ESC/POS команды кодируются через один или несколько специальных символов и параметров команды. Все это описывается в соответствующем разделе (Header, Details, Totals или Footer) в настройках принтеров в Microinvest Склад Pro Light или Microinvest Device Manager. Основными командами управления являются:

Их действия описаны в документации принтеров и стандартизировано ESC/POS протоколом.

Популярные команды

Примерный список самых популярных команд ESC/POS протокола:

  • ! - Активирует шрифт A;
  • ! - Активирует шрифт B;
  • ! - Шрифт с двойной высотой;
  • ! - Шрифт с двойной шириной;
  • ! - Шрифт А с нормальной высотой;
  • Е - Включает полужирный шрифт;
  • Е - Выключает полужирный шрифт;
  • B - Включает инверсную печать;
  • B - Выключает инверсную печать;
  • i – Активирует нож на принтере.

Несмотря на то, что перечисленные команды стандартизированы согласно выдержкам из ESC/POS протоколов разных принтеров, но у каждого из них есть своя технология исполнения команд и результаты могут различаться, в зависимости от производителя или модели. Для достижения необходимого эффекта нужно протестировать и подобрать команды, которые выполняются принтерами.

Другая информация

ESC/POS - очень мощная технология управления принтерами. Через данный протокол можно получить превосходные результаты на практически каждом современном принтере. К сожалению, не существует 100% совместимости между разными устройствами, поэтому каждую команду нужно проверить на реальном конкретном устройстве. Часть команд зависят от времени исполнения. Так, например, активация ножа может опередить печать с содержанием и отрезать чек в неподходящем месте. Поэтому использование ESC/POS команд требует тестирования в реальных условиях и внимательной настройки, в зависимости от модели принтера.

Некоторые полезные ресурсы

  • Документация по всем продуктам;
  • Форум технической поддержки Microinvest , где Вы сможете быстро получить ответ на интересующий вопрос;

Фирма Epson разработала для своих матричных принтеров набор команд ESC/P, фактически ставший впоследствии международным стандартом - фирмы, выпускающие матричные принтеры, в обязательном порядке включают в свои изделия поддержку набора команд ESC/P.

В набор ESC/P входят команды для печати в текстовом режиме и режиме битового образа. В усовершенствованный вариант этого командного языка, получивший название ESC/P2, были включены также команды для печати в растровом режиме. На основе ESC/P2 в свою очередь был разработан набор команд для струйных принтеров «Epson raster», специально ориентированный на использование растрового режима - команды для печати в текстовом режиме и режиме битового образа из него изъяты, зато добавлены новые растровые команды.

Группа команд общего назначения

Существует несколько универсальных команд, входящих во все командные языки и доступных в любых режимах печати. Эти команды стали стандартными, поскольку происходят от самых первых периферийных устройств, предназначенных для вывода текстовой информации, то есть от электрических пишущих машинок (см. табл. 1.1 в главе 1 «Работа с клавиатурой»), В универсальную группу входят следующие команды:

Перевод строки (CR), код ODh;

Возврат каретки (LF), код OAh;

Перевод формата (FF), код OCh.

По команде «перевод строки» печатающее устройство перемещает лист бумаги (поперек направления печати) на расстояние, равное высоте одной строки (это расстояние регулируется при помощи специальной подгруппы команд принтера). При поступлении команды «возврат каретки» печатающее устройство устанавливает свой пишущий элемент в начало строки. Команда «перевод формата» позволяет извлечь из принтера отпечатанную страницу.

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

По команде «Инициализаця» встроенный микропроцессор принтера переустанавливает все параметры печати в состояние, принятое по умолчанию. Команда инициализации имеет следующий формат:

. ‘0’

ПРИМЕЧАНИЕ

Если команда состоит из нескольких байтов, то первым байтом в командной последовательности является символ Escape, которому соответствует шестнадцатеричный код 1Bh, поэтому многобайтные команды в литературе часто именуют Esc-последовательностями.

Команда «Установить абсолютное значения координаты по горизонтали» задает смещение позиции печати по горизонтали от левого края области печати. Команда имеет следующий формат:

, ‘$’, nL, nH

Параметр п в данной команде задает (в двоичном коде) абсолютную координату по X в единицах перемещения (nL - младший байт параметра, пН - старший байт).

Команды Epson для печати в режиме битового образа

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

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

Таблица 7.4. Команды Epson для печати в режиме битового образа

Название команды

Евс-последова-

тельность

Установить межстрочное расстояние п/72 дюйма

‘А’ п

Установить межстрочное расстояние п/216 дюйма

‘3’ п

Установить межстрочное расстояние п/360 дюйма

‘+’ п

Напечатать графическую строку

‘*’ m nLnH dljdk

Для 9-игольчатых принтеров используется команда «Установить межстрочное расстояние п/72 дюйма» с параметром 8, которая воспроизводится следующей Esc-последователыюстью:

. ‘А’, 8

В шестнадцатеричном коде указанная последовательность будет выглядеть следующим образом: lBh, 41h, 08h.

Другая команда, дающая совершенно аналогичный результат - «Установить межстрочное расстояние п/216 дюйма» с параметром 24: , ‘З’. 24

В шестнадцатеричном коде эта команда будет выглядеть так: lBh, 33h, 18h.

Для 24-игольчатых и струйных принтеров с той же целью нужно использовать команду «Установить межстрочное расстояние п/360 дюйма» с параметром 48:

. ‘+", 48

В шестнадцатеричном коде эта команда имеет следующий вид: lBh, 28h, 30h.

Смещение изображения от левого края поля печати задается командой «Установить абсолютное значения координаты по горизонтали», которую следует подавать перед началом печати каждой строки изображения. Величина единицы перемещения (шаг перемещения) для режима битового образа равна 1 /60 дюйма. Например, чтобы сместить строку на один дюйм от левого края, нужно подать команду: . $’, 60. 0

В шестнадцатеричном коде эта команда имеет следующий вид: lBh, 24h, 3Ch, OOh.

Печать строки битового образа осуществляется по команде «Печатать графическую строку», которая имеет следующий формат:

. ‘*’. m, nL, nH, dl, dk

Команда имеет следующие параметры:

M - код режима печати (см. табл. 7.5);

NL - младший байт числа колонок в строке;

ПН - старший байт числа колонок в строке;

Dl-dk - байты данных строки изображения.

Число передаваемых байтов данных равно количеству колонок в строке изображения, а разрешение, с которым будет отпечатано изображение, определяется значением параметра т. В сводной табл. 7.5 перечислены коды режимов печати битового образа для принтеров EPSON и совместимых с ними (то есть поддерживающих набор команд ESC/P или ESC/P2) принтеров производства других фирм. Некоторые режимы матричных принтеров имеют в документации Epson индивидуальные названия, список которых приведен в табл. 7.6.

Таблица 7.5. Режимы растровой печати Epson-совместимых матричных принтеров

Горизон

Вертикальная плотность

Печать

Точек

Байтов

тальная

сосед

плотность

них точек

лонке

лонке

9 игл

24 иглы

48 игл

Таблица 7.6. Специфические наименования режимов печати Epson, встречающиеся в документации

Режим печати

Обычный 8-игольчатый

8-игольчатый с удвоенной плотностью

8-игольчатый ускоренный с удвоенной плотностью

8-игольчатый с учетверенной плотностью

Режим печати

Плоттер с удвоенной плотностью

24-игольчатый обычный,

24-игольчатый с удвоенной плотностью

24-игольчатый с утроенной плотностью

24-игольчатый с шестикратной плотностью

Предельная ширина области печати для принтеров формата А4 равна 8 дюймам, а для принтеров формата A3 - 11 дюймам. Максимально возможное число точек в растровой строке определяется произведением ширины области печати на горизонтальную плотность печати. Например, в режиме 0 на принтере формата А4 предельное число точек в строке равно 480.

ВНИМАНИЕ

В некоторых режимах невозможна печать соседних черных точек, то есть вывод данных осуществляется через одну точку - если две точки изображения идут по горизонтали подряд, друг за другом, то печатается только первая их них. Такие режимы в табл. 7.5 помечены знаком «минус» в колонке «Печать соседних точек».

Плотность печати по вертикали для 9-игольчатых матричных принтеров составляет 72 точки на дюйм, а для 24-игольчатых и струйных - 60, 180 или 360 точек на дюйм. Следовательно, в режимах с одинаковыми кодовыми номерами коэффициенты деформации изображения струйных принтеров отличаются от коэффициентов 9-игольчатых. Например, для 9-игольчатых пропорциональная печать 1:1 возможна в режиме 5, а для струйных - в режимах 0,39,73. Поскольку плотность печати 9-игольчатых принтеров не совпадает с плотностью 24-игольчатых и струйных, при использовании старого программного обеспечения для печати на новых принтерах наблюдается искажение масштабов изображения.

Рассмотрим в качестве примера команду для печати в режиме 0 верхнего изображения, показанного на рис. 7.7. В шестнадцатеричном коде команда будет выглядеть следующим образом (курсивом отмечены байты данных):

lBh, 2Ah, OOh. 12h. OOh. lOh, IFh. 21h. 2Dh. 4Dh. Clh. 4Fh. 2Fh. 21h. lFh, lOh. OOh. OOh. 38h, 44h, 47h. 44h. 38h

Здесь передается 18 байт данных, а следовательно nL = 12h, nH = 0.

В конце каждой графической строки должны передаваться команды «возврат каретки» и «перевод строки» (ODh, OAh). Пйсле завершения печати изображения нужно подать команду «перевод формата» (OCh), чтобы извлечь из принтера отпечатанную страницу.

ПРИМЕЧАНИЕ

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

Листинг 7.4 содержит две вспомогательные процедуры, которые мы будем использовать в приводимых ниже тестовых примерах для различных способов печати: процедуру захвата русского шрифта Grab- RusFont и процедуру рисования графического изображения шрифта в режиме VGA 320×200 ShowRusFont.

Листинг 7.4. Процедуры для захвата русского шрифта и отображения его в режиме 320×200

; Буфер для сохранения шрифта (16×256 байт) Font8xl6

; Позиция отображаемого символа FontString DW ? ;номер строки шрифта FontColumn DW ? ;номер колонки шрифта ENDS

;* СЧИТЫВАНИЕ "РУССКОГО" ШРИФТА ИЗ ВИДЕОКОНТРОЛЛЕРА *

PROC GrabRusFont near pushad

; Перепрограммировать синхронизатор cli

: Установить последовательную адресацию

; ячеек видеопамяти

: Перепрограммировать графический контроллер

; Выбрать для считывания плоскость 2

; Запретить четную-нечетную адресацию

mov AX,0005h out DX.AX

; Установить окно доступа по адресу AOOOOh

mov AX,0006h out DX.AX

; Скопировать шрифт в буфер Font8xl6

mov BX.offset FontBxl6

mov DX,256 №H0:

inc SI loop 00M1

ENDP GrabRusFont

;* ОТОБРАЗИТЬ ШРИФТ НА ЭКРАНЕ В РЕЖИМЕ 320X200 *

PROC ShowRusFont near pusha

mov SI,offset Font8xl6 xor DI.DI

mov .0 РвпО:

mov ,0

; Отобразить очередной символ

mov АН,16 ;число строк в маске символа @вл2:

; Отобразить строку изображения символа

lodsbзагрузить очередной байт маски

; вывести на экран очередную точку изображения rol AL.1 jne @ftn4

mov ,15 Рйп4:

Листинг 7.4 (продолжение)

@@m2 sub DI,320*16-8-2

inc cmp . 32 jb

add DI,320*(16+4)

cmp ,8

ENDP ShowRusFont ENDS

В листинге 7.5 приведен тест на совместимость принтера с набором команд Epson ESC/P2. Программа Test Matn x_0n_LPTl осуществляет печать графического изображения набора символов шрифта 8×16 в режиме битового образа. Программа использует универсальные процедуры ввода-вывода из главы 1 «Работа с клавиатурой», процедуры захвата шрифта и рисования его изображения в режиме VGA 320×200 из листинга 7.4, а также процедуры вывода команд и данных на принтер из листинга 7.1.

Листинг 7.5. Тест для матричных и струйных принтеров на совместимость с режимом печати битового образа EPSON

; Подключить файл мнемонических обозначений

; кодов управляющих клавиш и цветовых кодов

Include "listl_03.inc"

; Подключить файл макросов

Include "listi._04.inc"

; Номер печатаемой строки изображения PrintingString DW ?

; Номер печатаемого байта PrintingByte DW ?

; Текстовые сообщения

DB LIGHTCYAN.0.19

DB "ПЕЧАТЬ КОДОВОЙ ТАБЛИЦЫ РУССКОГО ШРИФТА DOS",О

DB LIGHTCYAN.2.20

DB "НА МАТРИЧНОМ EPSON-СОВМЕСТИМОМ ПРИНТЕРЕ",0

DB LIGHTGREEN,12,И

DB "Включите принтер, вставьте "

DB "бумагу, установите режим ON-LINE".О

DB LIGHTGREEN.14,17

DB "(будет произведен переход в графический режим)",О

DB YELLOW.24,14,"Нажмите любую клавишу и "

DB "ждите завершения печати",0 Txt2

DB LIGHTGREEN,12.28,"Печать шрифта завершена",О

DB YELLOW,24,29,"Нажмите любую клавишу".О

; КОМАНДЫ ДЛЯ ПРИНТЕРА

; Установить межстрочное расстояние 8 точек SetLineSpacing

DB 3, lBh.’A".8: Вывести 320 точек по горизонтали (256+64) SendBitlmageData

DB 5. lBh,’*’.1,64.1 ENDS

SEGMENT sseg para stack ‘STACK’

;* Основной модуль программы * ;*****************************

PROC TestMatri x On LPTl

cal1 GrabRusFont

; Установить текстовый режим и очистить экран

mov АХ.З int 10h

; Скрыть курсор – убрать зэ нижнюю границу экрана

mov .25

mov ,0 call SetCursorPosition

; Вывести текстовые сообщения на экран MShowColorText 5,Txtl call GetChar

; Установить видеорежии VGA 320×200, 256 цветов

mov AX,13h int lOh: Отобразить шрифт

Листинг 7.5 (продолжение)

cal1 ShowRusFont: Установить межстрочное расстояние 8 точек

mov SI,offset SetLineSpacing cal1 OutCommandToLPTl: Настроить пару регистров ES:SI на видеопамять

xor SI,SI:обнулить SI

; Сбросить счетчик строк

mov ,0

: ОСНОВНОЙ ЦИКЛ (ПО ПЕЧАТАЕМЫМ СТРОКАМ)

; Печать осуществляется в инверсной форме (светлые точки

; экрана при печати отображаются черными и наоборот).

; Вывод изображения на матричный принтер выполняется: слева направо, сверху вниз, строками шириной по

; восемь точек.*

; Запомнить начало очередной строки в видеопамяти

; Включить графический режим печати push SI

mov SI.offset SendBitlmageOata cal1 OutCommandToLPTl pop SI

; Сбросить счетчик байтов

mov ,0: Цикл по печатаемым байтам GHapi: push SI

mov CX.8 ;счетчик точек в байте хог AL.AL ;обнулить байт

; Цикл по печатаемый точкам 00Р2: shl AL,1 ;сдвинуть разряды влево cmp ,0 ;цвет точки?

@@РЗ пропустить черную точку or AL.1 ;"поставить" точку

; Перейти на следующую строку изображения

: Вывести байт на принтер call OutCharToLPTl: Перейти к следующему байту pop SI

inc cmp .320 jl @PP1: Перейти на следующую строку

; Послать на принтер коды возврата

: каретки и перевода строки

mov AL,ODh ;возврат каретки

call OutCharToLPTl

mov AL.OAh ;перевод строки

call OutCharToLPTl

; Вычислить начало следующей группы из

; восьми строк в видеопамяти

; Увеличить счетчик отпечатанных строк

inc cmp ,160/8 jl @

; Послать на принтер коды завершения страницы

mov AL.OCh ;перевод формата call OutCharToLPTl

mov ах,3 int 10h

; Скрыть курсор – убрать за нижнюю границу экрана

call SetCursorPosition

; Вывести сообщение о завершении печати MShowColorString Txtl MShowColorText 2,Txt2 cal1 GetChar

; Переустановить текстовый режим

mov ax,3 int lOh: Выход в DOS *

mov AH,4Ch int 21h ENDP Test_Matrix_On_LPTl ENDS

; Подключить процедуры вывода данных на экран

Include "1istl02.inc" ‘

; Подключить процедуры вывода синвола и посылки

; команды на принтер

Include "list7_01.inc" :

; Подключить процедуры для захвата русского шрифта и

; отображения его в режиме 320×200

Include "list7_04.inc"

ПРИМЕЧАНИЕ

Для запуска теста пригоден любой АТ-совместимый компьютер. Принтер с Epson-совместимым набором команд должен быть подключен к порту LPT1.

СОВЕТ

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

5.11.2. Управление принтером

В качестве примера для рассмотрения выберем 9-игольчатый точечно-матричный принтер среднего класса EPSON LX-800 японской корпорации Seiko Epson, который поставляется с ПЭВМ серии ЕС, а также с другими IBM-совместимыми машинами. Многие производители печатающих устройств обеспечивают совместимость своих изделий с принтерами фирмы Epson.

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

Общая характеристика принтера EPSON LX-800

Печатающее устройство EPSON LX-800 обладает следующими техническими характеристиками:

Метод печати (принцип действия):точечно-матричный;

Цвет печати :черный;

Режимы работы :текстовый и графический;

Градации качества печати в текстовом режиме:

Draft (черновая печать);

NLQ (печать с качеством, близким к типографскому);

Максимальная высота печатного символа : 3,1 мм;

Ширина символа :2,1 или 1,05 мм с возможностью увеличения вдвое;

Плотность печати :10,12,17 или 20 символ/дюйм с возможностью уменьшения вдвое;

Число символов в строке :80, 96, 132 или 160 (узкая каретка) с возможностью уменьшения вдвое;

Межстрочный интервал : 1/6 дюйма (4,233 мм) или программируется с дискретностью 1/216 дюйма (0,118 мм);

Скорость печати:

180 символ/с при печати с плотностью 12 символ/дюйм и качеством Draft;

150 символ/с при печати с плотностью 10 символ/дюйм и качеством Draft;

25 символ/с при печати с плотностью 10 символ/дюйм и качеством NLQ;

Разрешающая способность в графическом режиме (плотность печати):

по вертикали - 72 точка/дюйм (2,835 точка/мм);

по горизонтали - до 240 точка/дюйм (9,449 точка/мм);

Направление печати :двунаправленное в текстовом режиме;

однонаправленное в графическом режиме;

Число копий (под копирку):до 3 при условии, что толщина пакета не превышает 0,25 мм;

Ширина бумаги :рулонная: 4-10 дюймов (102 - 254 мм);

листовая: 7,15 - 8,5 дюймов (182 - 216 мм);

Срок службы печатающей головки :200 млн. символов при 14 точках в символе;

Габариты :399x308x91 мм;

Масса : 5,1 кг,

Напряжение :220 В переменного тока;

Потребляемая мощность :70 В*А.

В текстовом режиме обеспечивается печать с использованием различных стилей. Под стилем будем понимать совокупность характеристик печатаемых символов и их расположения в строке. Стиль определяется:

1) шрифтом (формой символов);

2) шагом (плотностью размещения символов в строке);

3) выделением символов;

4) качеством печати.

Принтер EPSON LX-800 поддерживает один шрифт (без названия) в режиме Draft и два шрифта (Roman и Sans Serif) в режиме NLQ. Шрифт Roman является прямым шрифтом, аналогичным шрифту пишущей машинки. Шрифт Sans Serif - это так называемый рубленый шрифт (символы угловаты, т.е. менее округлы, чем в предыдущем шрифте). Шрифты могут задаваться как аппараты о (переключателями или клавишами), так и посредством управляющих последовательностей.

Следующие две составляющие стиля являются по сути модификаторами шрифта, видоизменяя его тем или иным образом. Поэтому можно считать, что EPSON LX-800 обеспечивает печать гораздо большим количеством шрифтов.

Поддерживаются следующие модификаторы шрифта, определяющие шаг:

Нормальный (Pica);

Полусжатый (Elite);

Сжатый (compressed, или condenced);

Растянутый (expanded, или double-width).

Нормальный шрифт соответствует французскому типографскому стандарту, распространенному в Европе (в английской системе ему соответствует «цицеро»).

Полусжатый шрифт отличается от нормального только уменьшенным интервалом между символами.

Модификатор «сжатый» используется совместно с нормальным или полусжатым шрифтами, увеличивая плотность размещения символов примерно на 70% (см. табл. 5.20).

Таблица5.20

Влияниемодификаторовшаганаплотность размещениясимволов

Модификаторы

Ширина символа, мм

Плотность, символ/дюйм

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

нормальный

полусжатый

нормальный, сжатый

полусжатый, сжатый

Модификатор «растянутый» совместим со всеми представленными в табл. 5.20 комбинациями и приводит к увеличению ширины символов, а также промежутков между ними вдвое. Поэтому плотность символов и максимальное число символов в строке уменьшаются ровно в два раза.

В принтере EPSON LX-800 реализованы следующие возможности выделения символов (т.е. текста):

Полужирная печать (символ выводится два раза с небольшим смещением печатающей головки вправо при повторной печати);

Двухпроходная печать (каждая строка выводится два раза с незначительной протяжкой бумаги перед вторым проходом печатающей головки);

Печать курсивом (с наклоном);

Печать с подчеркиванием.

Двухпроходная печать аналогична режиму NLQ, и поэтому в NLQ она игнорируется, хотя и может специфицироваться.

За некоторым исключением перечисленные модификаторы совместимы между собой и с мо­дификаторами, определяющими шаг. Информация по совместимости модификаторов шрифта и способам их задания (установки) представлена в табл. 5.21. В ней приняты следующие обозначения:

Т - переключатели (тумблеры), расположенные на задней стенке принтера;

К - клавиши на пульте управления, размещенного в правом ближнем углу крышки печатающего устройства;

П - управляющие последовательности;

D - режим Draft;

Q - режим NLQ.

В колонке «Способы установки» указаны альтернативные способы задания модификаторов, а в других клетках определяется совместимость модификаторов, которая зависит от выбранного

Таблица 521

Способы установки исовместимость модификаторовшрифта

Модификатор

Способы установки

Шаг

Выделение

нор­маль­ный

по­лу­сжа­тый

сжа­тый

рас­тя­ну­тый

по­лу­жир­ный

двух­про­ход­ный

кур­сив

под­чёр­ки­ва­ние

Шаг

нормальный

К, П

полусжатый

К, П

сжатый

Т, К, П

растянутый

Вы­де­ле­ние

полужирный

К, П

двухпроходной

К, П

курсив

Т, П

подчёркивание

качества печати. Если специфицировано D, то модификаторы совместимы только в режиме Draft, а если D&Q - то как в режиме Draft, так и в режиме NLQ. Автономно могут использоваться только два взаимно исключающих друг друга модификатора: «нормальный» и «полусжатый».

Принтер EPSON LX-800 снабжен СП ПЗУ, в котором записаны четыре пары (аппаратных) кодовых страниц:

1) две кодовые страницы, соответствующие основной кодировке кириллицы;

2) две кодовые страницы для курсива;

3) две кодовые страницы, соответствующие кодовой странице 437 (см. табл. 53 в подразделе 53);

4) две кодовые страницы, соответствующие альтернативной кодировке (см. табл. 5.5 в под­разделе 53).

Кодовые страницы в каждой паре различаются тем, что в первой из них кодами 80Н - 9FH представляются те же символы, что и кодами ООН - 1FH, т.е. осуществлено дублирование двух колонок кодовой таблицы. Вторая кодовая страница пары совпадает с соответствующим ей оригиналом (прототипом). Кодовые страницы для курсива содержат в первой половине символы прямого, а во второй - наклонного начертания. Русские буквы в них не входят.

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

Дополнительно к поддержке различных кодовых страниц принтер EPSON LX-800 обеспечивает смену символов с кодами 23Н, 24Н, 40Н, 5ВН, 5СН, 5DH, 5ЕН, 60Н, 7ВН, 7СН, 7DH и 7ЕН в зависимости от выбранного набора национальных символов. Требуемый набор (один из восьми) устанавливается переключателями или управляющей последовательностью. Дополнительно к этому можно задействовать еще пять наборов, но только путем посылки на принтер управляющей последовательности. С целью полной поддержки кодовой страницы 437, основной и альтерна­тивной кодировки следует выбрать набор национальных символов для США.

Кодовые таблицы и наборы национальных символов хранятся в СППЗУ в виде совокупностей матриц символов. Матрицы описывают порядок вычерчивания соответствующих символов по точкам, а требуемая матрица во время печати выбирается в соответствии с кодом символа и установленной кодовой страницей (с учетом набора национальных символов). Поэтому часть СППЗУ, хранящую матрицы символов, называют знакогенератором. Матрицы символов раз­личаются не только в зависимости от кодовой страницы, но и от уровня качества печати. В принципе знакогенератор можно перепрограммировать, но для этого требуется специальное оборудование.

Матрицы для модифицированных шрифтов в СППЗУ отсутствуют. Требуемые символы в этих условиях формируются из матриц для режима Draft (или NLQ) при помощи микропрограмм, записанных в СППЗУ.

Рассматриваемый принтер вместе с тем позволяет заменить до шести стандартных символов специально разработанными. Чтобы произвести замену, нужно подготовить матрицы символов и записать их в предназначенное для этого ОЗУ небольшого объема, находящееся в принтере. Режимы Draft и NLQ снабжаются отдельными матрицами.

Возможности принтера EPSON LX-800 по форматированию текста сводятся к следующему:

Задание межстрочного интервала;

Автоматическое разбиение текста на страницы (даже при отсутствии в выводимых данных команд на перевод страницы) или печать текста непрерывным потоком (с возможностью перевода страницы по командам в выводимой информации);

Печать надстрочных и подстрочных индексов;

Выключка (выравнивание текста) по левой или правой границе, а также центрирование;

Горизонтальная и вертикальная табуляция.

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

Управляющие последовательности (команды принтера) реализуют все его возможности и позволяют печатать фрагменты текста различными стилями, так как сами команды могут быть помещены в выводимый текст. Этот способ управления принтером доступен только квалифи­цированным пользователям.

Команды DOS и различные программные продукты используют команды принтера, но в общем случае - ограниченное их подмножество. Программы, способные управлять принтерами, учитывают их особенности, как правило, предлагая задать пользователю модель устройства. Если принтер EPSON LX-800 программным продуктом не поддерживается, то следует выбрать одну из следующих моделей, которые перечислены в порядке уменьшения предпочтения: FX-800, ЕХ-800, LX-80, FX-85, FX-80, RX-80, принтер EPSON или принтер для черновика.

Все установки, сделанные любыми способами, за исключением переключателей, при отклю­чении питания сбрасываются.

Использование переключателей и клавиш

Принтер EPSON LX-800 имеет двенадцать переключателей, расположенных на задней стенке устройства и разбитых на группы. 8 переключателей первой группы обозначаются как 1-1 - 1-8, а 4 тумблера второй группы - как 2-1 - 2-4. Положение переключателя можно изменить тонким острым предметом, например отверткой или шариковой ручкой. Состояние «Включен» (ON) соответствует верхнему положению переключателя.

Состояние переключателей определяет режимы работы, в которые устанавливается принтер при включении питания или при получении команды ESC @. Затем режимы могут быть изменены клавишами и/или управляющими последовательностями.

Смену положения переключателей нужно производить только при отключенном питании принтера

Функции переключателей сведены в табл. 5.22 - 5.24. При выборе режима NLQ переклю­чателем 1-5 (табл. 5.22) устанавливается шрифт Roman. Для использования в СНГ нужно включить переключатели 1-3, 1-4, 1-6, 1-7 и 1-8 (табл. 5.23 и 5.24). При этом будет выбрана альтернативная кодовая таблица (никакая дополнительная команда не требуется). Вот почему драйвер, поддер­живающий на принтере русский шрифт, подключать нет никакой необходимости.

Включение питания осуществляется выключателем, расположенным на левой стенке принтера.

После подачи питания выбор режимов работы принтера может быть осуществлен при помощи пульта управления, на котором расположены четыре индикаторные лампочки и три клавиши (рис. 5.15).

Индикаторные лампочки информируют о состоянии печатающего устройства:

POWER (ПИТАНИЕ) - загорается при включении питания;

READY (ГОТОВО) - горит, когда принтер готов к приему данных (во время печати мигает);

PAPER OUT (КОНЕЦ БУМАГИ)- загорается, когда в принтере заканчивается лист (рулон) бумаги или бумага неправильно установлена;

ON LINE (НЕАВТОНОМНЫЙ)- горит, когда принтер находится в логической связи с ПЭВМ, т.е. может принимать данные (эта лампочка со­вмещена с клавишей ON/ OFF LINE).

Сенсорные клавиши имеют следующее назначение:

ON/OFF LINE (НЕАВТОНОМНЫЙ/АВТОНОМНЫЙ) - переключает принтер попеременно в неавтономное и автономное состояние;

NLQ/FORM FEED (РЕЖИМ NLQ/ПЕРЕВОД СТРАНИЦЫ) - в автономном состоянии при­водит к прогону рулонной бумаги до начала следующей страницы, а в неавтономном - к выбору режима печати NLQ. Дополнительные нажатия этой клавиши в неавтономном со­стоянии принтера обеспечивают попеременный выбор шрифта Roman или Sans Serif (звуковая сигнализация срабатывает два или три раза соответственно);

Таблица5.22

Функции переключателей

Номер переклю­чателя

Функции

ВКЛ (ON)

ВЫКЛ (OFF)

Заводская уста­новка

нормальный

Вид символа "нуль"

Кодовая страница

см. табл. 5.23

Качество печати

национальных символов

см. табл. 5.24

Длина страницы

Устройство подачи листовой бумаги

действует

не действует

Разбиение на страницы при печати на рулонную бумагу

действует

не действует

Автоматический перевод строки по символу СR

действует

зависит от наличия сим­вола LF

Таблица5.23

Выбор пары кодовых страниц

Номер пары ко­довых страниц

Номер переключателя

Таблица5.24

Установканабора национальных символов

Номер переключателя

Германия

Великобритания

DRAFT/LINE FEED (РЕЖИМ DRAFT/ПЕРЕВОД СТРОКИ) - в автономном состоянии приводит к протяжке бумаги на одну строку, а в неавтономном - к выбору режима печати Draft (звуковая сигнализация срабатывает один раз). Эта кнопка управляет также автоматической загрузкой в принтер следующего листа бумаги (AUTO LOAD) в автономном состоянии, если бумага не заправлена

С целью проверки работоспособности принтера и получения образцов шрифтов можно осуществить его автономное тестирование. Для этого следует:

2) отключить питание и затем снова его включить, удерживая кнопку DRAFT нажатой. Принтер начинает печать различных символов с тем качеством и тем шрифтом, которые установлены переключателем 1-5. Удерживать клавишу DRAFT далее нет необходимости. Тес­тирование прекращается при отключении питания или окончании бумаги.

Если в соответствии с п. 2 удерживать не клавишу DRAFT, а клавишу NLQ, то независимо от положения переключателя 1-5 тестирование будет осуществляться в режиме NLQ (шрифты Roman и Sans Serif будут чередоваться).

Рис. 5.15. Пульт управления

Клавиши могут использоваться также для выбора одного или нескольких модификаторов шрифтов (см. табл. 5.21). Чтобы сделать это, следует включить режим выбора модификатора и затем установить требуемый модификатор (или несколько модификаторов).

Для включения режима выбора модификатора требуется:

1) перевести устройство в неавтономное состояние;

2) удерживая клавишу ON/OFF LINE нажатой, нажать и клавишу FORM FEED.

В результате этих действий вырабатывается короткий звуковой сигнал и лампочка ON LINE начинает мигать. В этом режиме клавиши выполняют следующие функции:

ON/OFF LINE- осуществляет указание модификатора, который требуется задать;

FORM FEED- осуществляет фиксацию указанного модификатора;

LINE FEED - отменяет режим выбора модификатора шрифта.

Для установки модификатора шрифта после включения режима его выбора следует:

1) определить номер п требуемого модификатора в соответствии со следующим:

1 - полужирный шрифт;

2 - двухпроходный шрифт,

3 - сжатый шрифт,

4 - полусжатый шрифт;

2) нажать клавишу ON/OFF LINE п раз для указания требуемого модификатора;

3) нажать клавишу FORM FEED для фиксации модификатора;

4) нажать клавишу LINE FEED для отмены режима выбора модификатора;

5) нажать клавишу ON/OFF LINE для перевода принтера в неавтономное состояние.

Если требуется установить два совместимых модификатора с номерами п и т , причем п < т , то следует выполнить пункты 1 - 3 для п , а затем - пункты 2 и 3 для m - п . Задание трех совместимых модификаторов с номерами п , m и k при условии, что nп , затем - m - п и, наконец,k - т .

Например, для установки модификаторов «сжатый» и «полусжатый» следует:

1) нажатьклавишу ON/OFF LINE 3 раза;

2) нажатьклавишу FORM FEED;

3) нажатьклавишу ON/OFF LINE 1 раз;

4) нажатьклавишу FORM FEED;

5) нажатьклавишу LINE FEED;

6) нажатьклавишу ON/OFF LINE.

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

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

Для печати дампа следует, удерживая клавиши FORM FEED и LINE FEED в нажатом состоянии, включить питание. На бумаге отпечатается сообщение «Data Dump Mode». После этого клавиши можно отпустить. В таком режиме выдача данных на принтер приводит к печати строк, каждая из которых состоит из трех полей - номера строки, шестнадцатеричных кодов и их символьной интерпретации. Если код во втором поле не имеет графического представления (является для принтера управляющим), то в третьем поле он представляется точкой в соответствующей позиции. В режиме дампирования принтер на управляющие последовательности больше никак не реагирует. Для печати последней строки полученных принтером данных нужно нажать клавишу ON/OFF LINE. После этого режим печати дампа отменяется.

Команды принтера

Все модели принтеров фирмы Seiko Epson, а также многие другие печатающие устройства управляются командами (управляющими последовательностями) ESC/P (Epson Standard Code for Printer - стандартный код фирмы Epson для принтера). Эти команды пересылаются в принтер вперемежку с текстом, который требуется отпечатать. Принтер выделяет их из информационного потока и выполняет предписанные командами действия. В печатаемом документе команды никак не отображаются, но приводят к изменению стиля документа и к его форматированию.

Команда состоит из кода операции, за которым могут следовать несколько операндов (аргу­ментов). Код операции однозначно определяет команду и представляется либо управляющим символом ASCII, либо (так как управляющих символов всего 33) двумя символами - ESC и еще каким-либо, в том числе цифрой (но не числом, а символом). Операнды модифицируют (уточняют) действие команды или поставляют необходимую для ее выполнения информацию. Каждый операнд размещается в одном байте.

Некоторые команды допускают два альтернативных способа задания операнда я, где п - число 0 или 1: один из них состоит в спецификации операнда его двоичным кодом (ООН или 01Н), а другой - как символа (ЗОН или 31Н - см. табл. 5.3 в подразделе 5.3). Такие возможности мы будем обозначать через <n >.

Команды будем записывать последовательностью обозначений входящих в них символов (графические представления давать нецелесообразно из-за того, что получить их для управляющих символов совсем не просто). Шестнадцатеричную и десятичную кодировки можно узнать, ис­пользуя табл. 5.3 и 5.4 из подраздела 5.3. Числовые операнды (все они должны представляться двоичными кодами) будут обозначаться одиночными строчными латинскими буквами, набранными курсивом. Возможно приписывание справа номера операнда. Символьные операнды обозначаются так же, но для них делаются соответствующие оговорки.

Если не отмечено противное, символ О представляет букву, а не цифру.

Принтер EPSON LX-800 воспринимает команды следующих функциональных групп:

1) команды подготовки принтера к работе:

Инициализация принтера (как при включении питания). Текущая выдача не­медленно отменяется;

Выбор принтера (перевод в неавтономное состояние), если он был переведен в автономное состояние командой DC3. Устройство, установленное в автономное состояние клавишей ON/OFF LINE, не выбирается;

Невыбор принтера (перевод в автономное состояние до приема команды DC1). При этом устройство не может быть выбрано нажатием клавиши ON/ OFF LINE;

ESC s <п >

Включение (п -1) или выключение (п -0) режима пониженной скорости для уменьшения уровня шума;

Установка режима однонаправленной печати для текущей строки (отменяется возвратом каретки) с целью более точного позиционирования печатающей головки;

ESCU <п >

Включение (n = 1) или выключение (п =0) режима однонаправленной печати для более точного позиционирования печатающей головки;

Запрет срабатывания датчика конца бумаги с целью печати до конца листа;

Разрешение срабатывания датчика конца бумаги, в результате чего примерно за 30 мм до конца бумажного листа выдается звуковой сигнал и печать приостанавливается до заправки следующей страницы;

ESC ЕМ с

Включение (с - символ 4) или отключение (с - символ-цифра 0) устройства для подачи листовой бумаги, которое поставляется факультативно. Если его у Вас нет, то не пользуйтесь этой командой. Команда отменяет установку переключателя 2-2;

Звонок (вырабатывается короткий звуковой сигнал);

2) команды управления выводом данных:

Возврат каретки (печатается строка из буфера принтера и печатающая головка возвращается в крайнее левое положение). Если переключатель 2-4 включен, то дополнительно осуществляется перевод строки;

САN

Отмена строки (текущая строка не печатается, но команды воспринимаются);

DEL

Забой символа (предыдущий символ не печатается, но если он принадлежит команде, то принтером воспринимается);

3) команды вертикального/горизонтального перемещения:

ESC C n

ESC C NUL n

ESC N n

ESC O

ESC 0

ESC 1

ESC 2

ESC 3 n

ESC A n

ESC J n

ESC B n1 n2 … NUL

ESC b c n1 n2 … NUL

ESC / c

ESC I n

ESC Q n

ESC e n s

ESC f n s

ESC D n1 n2 … NUL

― перевод формата (данные из буфера принтера печатаются на бумаге, и рулонная бумага прогоняется до начала следующей страницы в соответствии с ее текущей длиной, а бумажный лист просто выталкивается из принтера);

― установка длины страницы (но не длины поля текста на странице) равной п строкам при текущем интервале между строками. Число п должно находиться в интервале 1 - 127. началом страницы считается текущая строка;

― установка длин страницы (но не длины поля текста на странице) равной п дюймам (1 22). Началом страницы считается текущая строка;

― установка межстраничного интервала равным п (1 - 127) строкам (если на странице помещается т строк, то поле текста будет состоять из т - п строк, за которым до начала следующей страницы будет пропущено п строк). Переключатель 2 – 3 выполняет аналогичную функцию, но задает стандартный интервал. Данная установка отменяется командами ESC O , ESC C и ESC C NUL ;

― отмена разбиения на страницы, сделанного командой ESC N . установка переключателя 2 – 3 также отменяется;

― перевод строки (печатается текущая строка из буфера принтера, и бумага перемещается вперед на одну строку с учетом текущего интервала между строками);

― установка 1/8-дюймового (3,175-мм) межстрочного интервала (0 – цифра в символьном виде);

― установка 7/72-дюймового (2,469-мм) межстрочного интервала;

― установка 1/6-дюймового (4,233-мм) межстрочного интервала;

― установка п /216-дюймового межстрочного интервала (п – число в интервале 0 - 255);

― установка п /72-дюймового межстрочного интервала (п число в интервале 0 - 85);

― перевод строки на п /216 дюйма (п – число в диапазоне 0 - 255); возврат каретки не производится, и действующая установка межстрочного интервала не отменяется;

― вертикальная табуляция (бумага прогоняется до позиции следующей вертикальной табуляции для канала, установленного командой ESC /; если никакой канал не установлен, то используется канал 0; когда позиции вертикальной табуляции не установлены, бумага перемещается на одну строку);

― установка до 16 позиций вертикальной табуляции в терминах текущего межстрочного интервала. Числа n 1, n 2 , … (в диапазоне 1 - 255) перечисляются в порядке возрастания и указывают позиции вертикальной табуляции. Все позиции запоминаются для канала 0 (см. команду ESC b ). Последующие изменения межстрочного интервала влияния на сделанную установку позиций вертикальной табуляции не оказывают. Команда ESC B NUL приводит к гашению текущей установки;

― установка позиций вертикальной табуляции для канала с (0 - 7). В остальном команда аналогична ESC B ;

― выбор канала вертикальной табуляции (0 -7). Все последующие команды VT используют этот канал табуляции;

― установка левого поля равным п колонкам в терминах текущего шага;

― установка правого поля равным п колонкам в терминах текущего шага;

― возврат на шаг (печатается текущая строка из буфера принтера, после чего печатающая головка перемещается на шаг назад и устанавливается тем самым на последний отпечатанный символ). Эта команда может быть выполнена несколько раз, вплоть до левого поля, после чего она игнорируется. Команда BS также игнорируется после команды ESC а 1, 2 или 3. если DS непосредственно следует за псевдографическим символом, то правильное положение печатающей головки при выводе последующих данных не гарантируется. BS можно использовать для комбинирования (наложения) символов;

― установка величины приращивания при горизонтальной или вертикальной табуляции. Если п = 0, то устанавливаются позиции горизонтальной табуляции с интервалом s пробелов. Максимальные значения s :

для нормального шага – 21;

для полусжатого шрифта – 25;

для сжатого шрифта – 36.

Если п = 1, то устанавливаются позиции вертикальной табуляции с интервалом s строк;

― горизонтальный/вертикальный пропуск. Если п = 0, то вставляются s пробелов (до 107). Если п = 1, то осуществляется перевод s строк;

― горизонтальная табуляция (печатающая головка перемещается вперед до следующей позиции горизонтальной табуляции). Стандартная установка соответствует приращению, равному 8 символам с нормальным шагом. Последующее изменение шага на позиции табуляции влияния не оказывает;

― установка до 32 позиций горизонтальной табуляции п1, п2, … (в порядке возрастания и в диапазоне 1- 137). Команда ESC D NUL отменяет все установки. Установка после включения питания или команды ESC @ соответствует каждому восьмому символу;

4) команды выбора печатного стиля:

ESC x<n >

ESC k <n >

ESC ! n

ESC P

ESC M

ESC SI

ESC SO

ESC W <n >

ESC E

ESC F

ESC G

ESC H

ESC S NUL

ESC S SOH

ESC T

ESC ― <n >

ESC a n

― выбор качества печати: режима Draft (n = 0) или NLQ (n = 1);

― выбор шрифта Roman (n = 0 ) или Sans Serif (n = 1) в режиме NLQ ;

― выбор модификаторов шрифта. Операндом п задается сумма номеров следующих устанавливаемых, совместимых между собой(см. табл. 5. 21) модификаторов:

0 – нормальный шаг;

1 – полусжатый шрифт;

4 – сжатый шрифт;

8 – полужирный шрифт;

16 – двухпроходной шрифт;

32 – растянутый шрифт;

64 – курсив;

128 – подчеркивание.

― выбор нормального шага;

― установка печати полусжатым шрифтом;

― установка печати сжатым шрифтом;

― отмена печати сжатым шрифтом, установленной командой SI (ESC SI ), клавишами или переключателем 1-1;

― установка печати растянутым шрифтом (только для текущей строки). Отменяется возвратом каретки или командой DC 4;

― отмена печати растянутым шрифтом, заданной командой SO (ESC SO ), однако действие команд ESC W и ESC ! не блокируется;

― установка (п = 1) или отмена (п = 0) печати растянутым шрифтом;

― установка печати полужирным шрифтом;

― отмена печати полужирным шрифтом;

― выбор двухпроходного режима печати;

― отмена двухпроходного режима печати;

― выбор режима верхнего индекса. Последующие символы при печати будут иметь высоту, составляющую 2/3 от нормальной высоты, и располагаться в верхней части строки. Вместо NUL можно использовать символ-цифру 0;

― выбор режима нижнего индекса. Последующие символы при печати будут иметь высоту, составляющую 2/3 от нормальной высоты, и размещаться в нижней части строки. Вместо SOH можно использовать символ 1;

― отмена режима верхнего (нижнего) индекса;

― включение (п = 1) или выключение (п = 0) режима подчеркивания;

― выключка (выравнивание) в режиме NLQ . Допустимы следующие значения п :

0 – установка выключки с левой стороны;

1 – установка центрирования;

2 - установка выключки с правой стороны;

3 – установка полной выключки.

Стандартная установка соответствует п = 0. Полная выключка выполняется, когда буфер становится полным, или при получении команды CR , VT , LF илиFF . Команды HT иBS не действуют, если п не равно 0. При п = 3 в пределах параграфа не должно быть команды CR ;

5) команды выбора кодовой страницы:

ESC t n

ESC 4

ESC 5

ESC R n

ESC 6

ESC 7

― выбор пары кодовых страниц. Допустимые значения п :

0 – выбор пары кодовых страниц для курсива;

1 – выбор пары кодовых страниц, соответствующих кодовой странице 437.

Действие переключателей 1-3 и 1-4 отменяется;

― выбор режима курсива. Команда допустима даже при установке других кодовых страниц, однако псевдографические символы курсивом печататься не будут. В режиме Draft наклонные символы печатаются с пониженной скоростью;

― отмена режима курсива;

― выбор набора национальных символов. Допустимы следующие значения п :

0 – для США7 – для Испании(I )

1 – для Франции8 – для Японии(II )

2 – для Германии9 – для Норвегии

3 – для Великобритании10 – для Дании(II )

4 – для Дании(I )11 – для Испании(II )

5 – для Швеции12 – для Латинской Америки

6 – для Италии

― выбор второй кодовой страницы из пары;

― выбор первой кодовой страницы из пары;

6) команды определения символов (дополнительно см. следующий подпункт):

ESC & NUL n m d1 d2 … NUL NUL

ESC: NUL NUL NUL

ESC % n

― загрузка в принтер матриц определенных пользователем символов с кодами от п до т (в диапазоне 58 – 63, или ЗАН – 3FH ). Числа d 1, d 2, … определяют вид символов;

― копирование стандартных матриц символов с кодами 58 – 63 из СППЗУ в ОЗУ принтера с тем. Чтобы можно было определить новые символы;

― выбор стандартного (п = 0) или определенного пользователем (п = 1) набора символов. Используется совместно с командой RSC & (перед ней или после нее);

7) команды выбора графического режима (дополнительно см. соответствующий подпункт):

ESC K n1 n2

ESC L n1 n2

ESC Y n1 n2

ESC Z n1 n2

ESC * m n1 n2

ESC ? s m

ESC ^ m n1 n2

―выбор восьмиигольчатого режима с одинарной плотностью (60 точка/дюйм) с общим числом колонок п 1 + п 2*256;

― выбор восьмиигольчатого графического режима с двойной плотностью (120 точка/дюйм) с общим числом колонок п 1 + п 2*256;

―выбор высокоскоростного восьмиигольчатого графического режима с двойной плотностью (120 точка/дюйм) с общим числом колонок п 1 + п 2*256;

― выбор восьмиигольчатого графического режима с учетверенной плотностью (240 точка/дюйм) с общим числом колонок п 1 + п 2*256;

― выбор восьмиигольчатого графического режима с номером т и общим числом колонок п 1 + п 2*256;

― модификация восьмиигольчатого графического режима. Здесь s – одна из букв K , L , Y или Z , задающая модифицируемый восьмиигольчатый графический режим, а m – номер нового режима;

― выбор девятиигольчатого графического режима с одинарной (т = 0) или двойной (т = 1) плотностью и общим числом колонок п 1 + п 2*256. требуется два числа для каждой печатаемой колонки.

Для выдачи команды (последовательности команд) на принтер можно воспользоваться одним из следующих способов:

1) создать программным способом или в ряде случаев текстовым редактором файл с командами и вывести его на принтер DOS-командой COPY file PRN или TYPE file >PRN;

2) создать текстовым редактором командный файл с DOS-командой ECHO, в качестве аргумента которой указана последовательность команд, а стандартный вывод перенаправлен на принтер, и выполнить его. В ряде случаев можно выдать команду ECHO и в ответ на приглашение DOS. Например, для возврата на шаг достаточно задать DOS-команду

ECHO ◄Ctrl-Н >PRN

3) вывести команды на принтер непосредственно из программы.

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

Все установленные командами режимы при отключении питания сбрасываются.

Не забудьте после видимого окончания печати текста перевести принтер в режим OFF LINE (автономный), чтобы он смог отпечатать последнюю строку, если она не завершается символом CR.

Определение новых символов

Взамен имеющихся в выбранной кодовой странице символов с кодами 58 - 63 можно определить новые символы с произвольным графическим изображением. В результате этого стандартные символы становятся недоступными, а вместо них будут печататься новые символы. Для восстановления исходного состояния принтера нужно отключить и включить питание на нем либо выдать команду ESC % с нулевым операндом.

Определение нового символа включает следующие этапы:

1) конструирование символа ;

2) кодирование матрицы символа ;

3) загрузку матрицы символа в ОЗУ принтера .

Детали выполнения этих этапов зависят от того, для какого уровня качества печати определяется новый символ. Поэтому мы рассмотрим формирование нового символа отдельно для режимов Draft и NLQ.

Режим Draft . Этап конструирования сводится к представлению символа точками в матрице, состоящей из 11 колонок и 9 рядов (по ряду на иглу). Первая и последняя колонки не используются, так как служат для разделения символов. Кроме того, для каждого отдельного символа задействуются только восемь из девяти рядов, причем обычно - верхние. Другая возможность состоит в использовании восьми нижних рядов (для случая, когда символ или его часть требуется несколько опустить вниз). Исходя из сказанного типичная заготовка для матрицы имеет вид, показанный на рис. 5.16. Двойной линией отделен неиспользуемый ряд. Ряды и колонки пронумерованы.

Рис. 5.16. Сетка для конструирования символов (режим Draft)

Точки можно ставить на пересечении каждого ряда и колонки. Единственное ограничение состоит в том, что никакие две точки не могут размещаться на пересечениях одного ряда и соседних колонок. Однако если допущено случайное перекрытие точек, то это не приведет к ошибке: просто одна из точек не будет печататься. Пример матрицы символа представлен на рис. 5.17.

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

Рис. 5.17. Матрица символа для режима Draft

Затем каждое двоичное число переводится в десятичную систему счисления. Процесс представ­ления колонки десятичным числом можно упростить, если использовать веса рядов сетки, записанные справа от матрицы. При этом достаточно сложить веса, которым соответствует точка в данной колонке. Для нашего примера получится следующий код матрицы:

32, 64, 32, 192, 63, 192, 32, 64, 32

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

принтера производится путем выдачи команд ESC:, ESC % и ESC & при условии, что принтер находится в режиме Draft. Команда ESC & в этом случае должна иметь формат

ESC & NUL п т q cl с2 ... с9 NUL NUL

где п = т - код нового символа (выбирается разработчиком в диапазоне 58 - 63);

q- число 128, если не задействуется нижний ряд, или число 0, если не задействуется верхний ряд сетки;

cl с2 ... с9 - код матрицы символа.

Для рассматриваемого примера (если мы хотим новым символом заместить символ <, имеющий код 60) данная команда будет представлена следующим образом:

ESC & NUL 60 60 128 32 64 32 192 63 192 32 64 32 NUL NUL

Надо иметь в виду, что при выдаче команды числа должны быть закодированы в двоичной системе счисления, а не в ASCII.

Загрузить матрицу символа в ОЗУ принтера можно, в частности, следующей программой на языке Turbo Pascal:

Program LoadDraftUserSymbol;

Uses Printer,

Var

c:string;

Begin

Write(Lst, #27":"#0#0#0);{ выдачакоманды ESC:}

Write(Lst, #27,%"#1);{ выдачакоманды ESC %}

c:=#27"&"#0#60#60#128+{формирование команды ESC &}

#32#64#32#192#63#192#32#64#32#0#0;

Write(Lst, с) {выдача команды ESC &}

После выполнения этой программы вместо символа будет печататься символ .

Определить несколько новых символов можно одним из следующих способов:

1) для каждого символа выдать команду ESC & с уникальным кодом п = т ;

2) выдать единственную команду ESC &, в которой я не равно т, я задает первый код символа, т задает последний код символа, а последовательности q cl с2 ... с9 специфицируются подряд для каждого символа.

Режим NLQ. При конструировании символа для этого режима можно задействовать 12 колонок и 18 рядов (рис. 5.18), так как печать будет осуществляться за два прохода печатающей головки. Точки на такой сетке можно представлять на каждом пересечении ряда и колонки без каких-либо ограничений, однако обычно слева и справа оставляют свободным один или два ряда для разграничения символов. В связи с тем что точки могут перекрываться, их принято обозначать

Рис. 5.18. Матрица символа для режима NLQ

незаштрихованными окружностями. В качестве примера на рисунке изображена матрица того же символа .

Очевидно, столбец матрицы символа для режима NLQ невозможно представить двоичным числом в формате байта (требуется 18 разрядов). Поэтому каждый столбец кодируется триадой. Необходимое для этого разбиение показано в левой части рисунка, а в правой его части проставлены веса разрядов. Кодом матрицы для рассматриваемого примера будет являться следующая последовательность 36 чисел:

16, 0, 0, 48, 0, 0, 112, 0, 0, 80, 0, 0, 176, 0, 0, 255,

255, 192, 176, 0, 0, 80, 0, 0, 112, 0, 0, 48, 0, 0, 16, 0, 0, 0, 0, 0

E SC & NUL п т NUL 12 NUL cl с2 ... c36

Здесь п и т имеют тот же смысл, что и раньше, число 12 указывает количество колонок, а числа cl с2 ... c36 являются кодом матрицы символа.

Требуемые команды могут быть выданы из программы на языке Turbo Pascal следующим образом:

Program LoadNLQUserSymbol;

Uses Printer;

Var

с: string;

Begin

Write(Lst, #27":"#0#0#0);

Write(Lst, #27"%"#1);

c: = #27\fc"#0" < < "#0#12#0 +

#16#0#0#48#0#0#112#0#0#80#0#0#176#0#0#255#255#192 +

#176#0#0#80#0#0#112#0#0#48#0#0#16#0#0#0#0#0;

Write (Lst , c )

Определенный описанным способом символ доступен как в шрифте Roman, так и в шрифте Sans Serif.

Имеется возможность определения (в том числе одних и тех же) символов как в режиме Draft, так и в режиме NLQ при одном и том же сеансе работы принтера.

Точечная графика

Графические команды принтера позволяют печатать на бумаге любое изображение, состоящее из расположенных в определенных местах точек. Оно формируется путем горизонтального перемещения печатающей головки и печати точек в нужных местах. В основном режиме задействуются только верхние 8 игл. Затем бумага протягивается на ширину строки (расстояние между девятой и второй иглами) и печатается следующая строка. Этот процесс может быть продолжен до тех пор, пока на бумаге -не получится требуемое изображение.

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

Разница между текстовым и графическим режимами состоит не в различных способах печати, а в том, как принтер управляется. В текстовом режиме определено соответствие между кодами символов и их представлением соответствующей матрицей. Поэтому прием кода символа при­нтером приводит к его вычерчиванию на бумаге. Для графического режима никакого аналогичного соответствия не вводится. Каждый полученный принтером однобайтовый код предписывает отпечатать очередную колонку определенной комбинацией точек. Колонки кодируются полностью аналогично режиму Draft (верхние 8 игл).

Разрешающая способность принтера по вертикали определяется расстоянием между соседними иглами, которое составляет 1/72 дюйма. Конечно, можно было бы ее повысить путем печати строки за несколько проходов, протягивая бумагу перед каждым последующим проходом на небольшое расстояние. Это привело бы к уменьшению скоростипечати (которая и так в графическом режиме мала) и к усложнению логики управления принтером. В модели EPSON LX-800 многопроходная печать в графическом режиме не реализована.

Разрешение принтера по горизонтали определяется только возможностями управления печа­тающей головкой и в принтере EPSON LX-800 может достигать 240 точка/дюйм.

В командах выбора графического режима указывается количество колонок, которые требуется отпечатать на данной строке. Коды колонок следуют непосредственно за командой. После отпечатывания заданного количества колонок принтер автоматически возвращается в текстовый режим. В каждой строке можно разместить почти 2000 колонок. Это число не может быть представлено в формате байта. Поэтому количество подлежащих печати колонок п задается двумя операндами nl и п2 , где п2 - целочисленное частное, a nl - остаток от деления п на 256.

Для перевода строки при печати изображений целесообразно использовать команду ESC А 8.

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

ESC К nl п2

ESC L nl п2

ESC Y nl п2

ESC Z nl п2

ESC * т nl п2

Каждый графический режим обеспечивает свое горизонтальное разрешение, или плотность печати (табл. 5.25).

Таблица5.25

Восьмиигольчатые графические режимы

Специализированная

Горизонтальное

разрешение

точка/дюйм

с одинарной плотность

с двойной плотность

высокоскоростной с

двойной плотность

с учетверенной плотностью

графопостроитель

Режимы 4 и 6 обеспечивают согласование печатаемого изображения с изображением на экране дисплея. В этом случае отношение горизонтальной плотности к вертикальной на экране дисплея и на принтере будет одинаковым, т.е. изображение может быть передано без сжатия (растяжения). Режим 5 устанавливает горизонтальное разрешение равным вертикальному. В режимах 2 и 3 печатающая головка не может печатать две последовательных точки (в соседних колонках) одной иглой.

Для оперативного (без модификации всей программы) изменения графического режима можно использовать команду ESC Ism. Она позволяет присвоить другой восьми игольчатый графический режим одной из специализированных графических команд, заданной посредством s (К, L, Y или Z). Это приводит к изменению ширины печатаемого изображения без модификации высоты. Конечно, команда ESC ? должна быть выдана до специализированной графической команды.

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

Подлежащий печати рисунок обычно конструируется на миллиметровой бумаге. Нужно оп­ределиться в выборе графического режима в зависимости от потребной скорости печати (чем выше разрешение, тем она ниже) и качества изображения.

При конструировании рисунка нужно придерживаться следующих правил:

1) независимо от режима никакие точки не могут размещаться на горизонтальных линиях, а только по одной между ними;

2) в режиме с одинарной плотностью никакие точки не могут находиться на вертикальных линиях, а только по одной между ними;

3) в высокоскоростном режиме с удвоенной плотностью точки могут находиться и на вертикальных линиях, но никакие две точки не должны располагаться по горизонтали рядом;

4) в режиме с удвоенной плотностью точки могут находиться на вертикальных линиях без каких-либо ограничений;

5) в режиме с учетверенной плотностью действует правило 3, но для рядов рисунка лучше использовать не каждую строку миллиметровой бумаги, а через одну, чтобы примерно выдержать отношение между вертикальной и горизонтальной плотностью.

В качестве примера на рис. 5.19 представлен результат конструирования стрелки для печати в высокоскоростном режиме с двойной плотностью. Очевидно, такую стрелку можно разместить только на двух строках (8 рядов в одной и 4 ряда в другой строке). В верхней части рисунка проставлены коды колонок первой, в нижней части рисунка - второй строки. Такая стрелка может быть отпечатана следующей программой, составленной на языке Turbo Pascal:

Program PrintPointer;

Uses Printer,

Var

c: string;

Begin

Write(Lst, #27,Y,#41#0);{установка режима}

с:*#64#32#80#8#69#2#64#0#64#0+{формирование первой строки}

#64#0#64#0#32#0#16#0#8#0#8#0#8#0#8#0 +

#8#0#8#0#8#0#8#0#184#64#32#16#8#5#2; Write(Lst, с);{печать первой строки}

Write(Lst, #27,А,#8);{установка межстрочного интервала}

Writeln(Lst);{переход к новой строке}

Write(Lst, #27,Y,#41#0);{установка режима}

с: = #16#32#80#128#16#0#16#0#16+{формирование второй строки}

#0#16#0#16#0#32#0#64#0#128#0#128#0#128#0#128#0 +

#128#0#128#0#128#0#128#0#232#16#32#64#128#0#0; Writeln(Lst, с) {печать второй строки}


Рис. 5.19. Конструирование стрелки

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