ВВЕДЕНИЕ

Зачем нужны Esc последовательности

В те далекие годы, когда не было матричных, струйных и лазерных принтеров, когда не было в ходу слова принтер, а печатающее устройство называлось АЦПУ, не было и Esc (Эскейп) последовательностей. Процесс печати осуществлялся достаточно просто. Для печати, на устройство выдавались символы, и ими в АЦПУ заполнялся небольшой буфер, размером 80 (или 132, ну максимум 256) символов. Когда буфер заполнялся целиком, строка печаталась. А если надо было отпечатать раньше, чем был заполнен буфер, выдавалась команда LF (Line Feed Перевод строки). Для окончания печати листа соответственно выдавалась команда FF (Form Feed Прогон Формата). И еще, была команда CR (Carrige Return Возврат Каретки) по которой производилась очистка буфера. Все эти команды выдавались как обычные символы. Вот этими–то тремя командами и осуществлялось управление печатью.

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

Esc имеет десятичный код 27 (Hex код 1В). Этот код выдается как обычный символ, но он не печатается, а переводит принтер в режим приёма команды. Символы, следующие за ним, воспринимаются принтером как команда управления. Принтер пытается распознать их как команду, входящую в его набор команд и если это ему удается, то он ее выполняет. Следующие за командой символы воспринимаются как обычный текст, предназначенный для печати (конечно, если это не следующая Esc последовательность).

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

Получение информации о Esc последовательностях

Получить информацию о Esc последовательностях можно либо из Технического описания на принтер (например с LQ-100+ поставляется ТО в котором они есть), либо зайдя на сервер соответствующей фирмы (например www.hp.com фирма Hewlett-Packard). Информация, впрочем, и там и там на английском.

Посмотреть команды можно и таким способом (ноу хау автора):

Последовательность выдаваемых команд является существенной. Так модель HP Deskjet 350 PC, с которой я работаю, похоже, целиком формирует страницу для печати и затем по команде Plain Paper ее печатает.

Далее приводится перевод для Esc последовательностей с моими комментариями. Комментарии даются для тех команд, которые я проверил. Команды приведены для модели HP Deskjet 350 PC. Просто потому, что она стоит на моем рабочем столе. Дополнительную информацию мне пока не удалось получить на сервере.

Выдадим букву А в латинском регистре. И обнаружим массу интересного.

  1. Файл начинается с большого количества 0, которые, как мы знаем, принтером не воспринимаются.
  2. Текст начинается с Последовательности ¬ %-12345X и ей же заканчивается. Такой команды я не нашел в наборе PCL команд, но вот следующая строка дает очень интересную информацию.
  3. @PJL ENTER LANGUAGE=PCL3GUI(0A) Для не знакомых с английским, поясняю ENTER LANGUAGE означает-входной язык. А он не просто PCL, а PCL 3GUI. Когда я более внимательно посмотрел документацию на принтер, то обнаружил там ссылку, что используется язык PCL 3го уровня. Теперь придется искать на него информацию.
  4. Далее идут несколько команд, которых нет в документации, а затем идет команда ¬ *g8W… а это не что иное, как передача в графическом режиме. Т.е. всю страницу Word формирует в графике.
  5. ¬ *b2M кодирование методом 2, вот если бы еще объяснили, что это за метод, правда, кое что можно увидеть и из файла.
  6. После того, как информация выдана, идет набор символов 112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y112y50y0Y как я понимаю -вертикальное смещение кодируется последовательностями из 112y а 0Y завершает команду.
  7. *rC
  8. Символ 0С после команды завершения графики приводит к выдаче страницы на печать. Проверил - работает, а в документации этого не было.

¬

¬

 

ВВЕДЕНИЕ.

HP предоставляет язык PCL, который стандартизирует доступ к возможностям принтера. Язык PCL предоставляет наивысший уровень обмена между системой и принтером. Он не зависит от системы, драйвера , интерфейса и сетевых коммуникаций. Этот документ описывает команды HP Deskjet PCL для форматирования и выбора шрифтов. Если требуется дальнейшая информация, пожалуйста зайдите на Web сайт www.hp.com/ solutions.

Об использовании PCL команд.

В PCL имеется два основных типа команд:

Управляющие коды - это символы вызывающие функции принтера (например возврат каретки (CR) Перевод Строки (LF) Прогон Формате (FF) и т.д.

Esc последовательности начинаются с кода Esc (десятичное значение 27) и следующим за ним, по крайней мере, одним иным символом. Устройство получившее Esc код пытается интерпретировать дальнейшие символы как команду PCL до того как данные будут отпечатаны. Если устройство не распознает команду, оно возвращается в режим текста: синтаксически правильная, но нераспознанная последовательность игнорируется; синтаксически некорректная последовательность игнорируется и печатается.

Синтаксис Esc последовательностей.

Имеется два типа PCL Esc последовательностей.

Двух - символьные последовательности.

Двух - символьные Esc последовательности имеют следующий вид: Esc X, где “Х” любой другой символ определяющий операцию, которая будет выполняться.

Замечание: Х может быть любым символом таблицы ASCII в диапазоне 48-126 (десятичн.) [“0” до “~”].

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

Параметрические Esc последовательности имеют следующий вид:

Соответствие между ASCII, Hex, и десятичными значениями.

значение

десятичное

Hex формат

 

0

48

30

 

1

49

31

 

2

50

32

 

3

51

33

 

4

52

34

 

5

53

35

 

6

54

36

 

7

55

37

 

8

56

38

 

9

57

39

 

.

46

2E

 

 

Сводная таблица команд PCL принтера.

Замечание: Команды принтера отмеченные * описываются в том порядке, в котором они должны передаваться. Символ # означает значение числового параметра.

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

 

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

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Сброс

Reset

Esc E

1B 45

Авто-тест

Self-test

Esc z

1B 7A

 

 

Управление вводом бумаги

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Выбросить бумагу

Eject Page

Esc & / 0 H

1B 26 6C 30 48

 

Portable Sheet Feeder

Esc & / 1 H

1B 26 6C 31 48

 

Manual Feed

Esc & / 2 H

1B 26 6C 32 48

Подчеркивание

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

По умолчанию

Default

Esc & d 0 D

1B 26 64 30 44

Одна сплошная

Single fixed

Esc & d 1 D

1B 26 64 31 44

Двойная сплошная

Double fixed

Esc & d 2 D

1B 26 64 32 44

 

Single floating

Esc & d 3 D

1B 26 64 33 44

 

Double floating

Esc & d 4 D

1B 26 64 34 44

Выключено

Turn off

Esc & d @

1B 26 64 40

Разницы между командами Default и Single floating, а также Single fixed и Double floating я не обнаружил.

Line termination Окончание строки

Команда (рус)

Команда (англ.)

Последов.

Hex формат

 

CR=CR; LF=LF;
FF=FF

Esc & k 0 G

1B 26 6B 30 47

 

CR=CR+LF; LF= LF;
FF=FF

Esc & k 1 G

1B 26 6B 31 47

 

CR=CR; LF= CR+LF;
FF= CR+FF

Esc & k 2 G

1B 26 6B 32 47

 

CR= CR+ LF; LF=CR+LF;
FF= CR+FF

Esc & k 3 G

1B 26 6B 33 47

End of line wrap

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Включить

Tern on

Esc & k 0 C

1B 26 73 30 43

Выключить

Tern off

Esc & k 1 C

1B 26 73 31 43

Не понял для чего.

Transparent print mode

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

# of bytes

Esc & p # [data]

1B 26 70 # 58
[data]

Не понял для чего.

Display functions mode

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

Tern on

Esc Y

1B 59

 

Tern off

Esc Z

1B 5A

Не понял для чего /возможно для двустороннего обмена данными/ после выдачи команды включения принтер вообще перестает воспринимать последовательности

Управление страницей Page control

Ориентация страницы Page orientation*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Книжная

Portrait

Esc & / 0 O

1B 26 6C 30 4F

Альбомная

Landscape

Esc & / 1 O

1B 26 6C 31 4F

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

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Низкое

Economy/Draft

Esc * o –1 M

1B 2A 6F 2E 31 4D

Обычное

Normal

Esc * o 0 M

1B 2A 6F 30 4D

Качественная

Best

Esc * o 1 M

1B 2A 6F 31 4D

Media type

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Печать текста

Plain Paper

Esc & / 0 M

1B 26 6C 30 4D

 

Bond Paper

Esc & / 1 M

1B 26 6C 31 4D

 

Special

Esc & / 2 M

1B 26 6C 32 4D

 

Glossy Paper

Esc & / 3 M

1B 26 6C 33 4D

 

Transparencies

Esc & / 4 M

1B 26 6C 34 4D

Выдача команды Plain Paper приводит к распечатке текста.

 

 

Размеры бумаги Paper sise*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

U.S. Executive

Esc & / 1 A

1B 26 6C 31 41

 

U.S. Letter

Esc & / 2 A

1B 26 6C 32 41

 

U.S. Legal

Esc & / 3 A

1B 26 6C 33 41

 

JIS A5

Esc & / 25 A

1B 26 6C 32 35 41

 

JIS A4

Esc & / 26 A

1B 26 6C 32 36 41

 

Hagaki Card

Esc & / 71 A

1B 26 6C 37 31 41

 

ISO A6 Card

Esc & / 73 A

1B 26 6C 37 33 41

 

U.S.- 4 x 6 Card

Esc & / 74 A

1B 26 6C 37 34 41

 

U.S.- 5 x 8 Card

Esc & / 75 A

1B 26 6C 37 35 41

 

Custom

Esc & / 101 A

1B 26 6C 31 30 31 41

 

 

Line spacing

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Линий на дюйм

Lines per inch
(# of lines)

Esc & / # D

1B 26 6C # 44

Длина страницы Page length*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

# of Lines, (5-128 are valid)

Esc & / # P

1B 26 6C # 50

Perforation skip mode*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

Off

Esc & / 0 L

1B 26 6C 30 4C

 

On

Esc & / 1 L

1B 26 6C 31 4C

Для печати на бумаге с перфорацией.

Отступы Margins*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Сверху

Top (# of lines)

Esc & / # E

1B 26 6C # 45

Сброс отступов

Clear Side Margins

Esc 9

1B 39

Слева

Left (column #)

Esc & a # L

1B 26 61 # 4C

Справа

Right (column #)

Esc & a # M

1B 26 61 # 4D

Длина текста Text length*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

# of Lines

Esc & / # F

1B 26 6B # 48

Позиционирование курсора Cursor positioning

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Горизонтальное перемещение в
1/120 дюйма

Horizontal motion index, # of 1/120th inch moves

Esc & k # H

1B 26 6B # 48

Горизонтальное перемещение
в колонках

Horizontal Move (to column #)

Esc & a # C

1B 26 61 # 43

Горизонтальное перемещение
в десятках точек

Horizontal Move (# of decipoints)

Esc & a # H

1B 26 61 # 48

Горизонтальное перемещение в
PCL единицах

Horizontal Move (# of PCL units)

Esc & / # X

1B 26 6C # 58

Вертикальное перемещение в
1/48 дюйма

Vertical motion index, # of 1/48th inch moves

Esc & / # C

1B 26 6C # 43

Вертикальное перемещение в
строках

Vertical Move
(to row #)

Esc & a # R

1B 26 61 # 52

Вертикальное перемещение
в десятках точек

Vertical Move
(# of decipoins)

Esc & a # V

1B 26 61 # 56

Вертикальное перемещение в
PCL единицах

Vertical Move
(# of PCL units)

Esc * p # Y

1B 2A 70 # 59

Эти команды у меня не работают.

 

Выбор шрифта Font selection

Установка шрифта Simbol set*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

HP Roman 9
( with Euro character support)

Esc ( 4 U

1B 28 34 55

 

HP Roman 8

Esc ( 8 U

1B 28 38 55

 

PC-8 (IBM-8)

Esc ( 10 U

1B 28 31 30 55

 

PC-8 Danish/Norv

Esc ( 11 U

1B 28 31 31 55

 

HP Legal

Esc ( 1U

1B 28 31 55

 

United Kingdom
(ISO 4)

Esc ( 1 E

1B 28 31 45

 

ANSI ASCII
(ISO 6)

Esc ( 0 U

1B 28 30 55

 

Swedish Names
(ISO 11)

Esc ( 0 S

1B 28 30 53

 

Italian (ISO 15)

Esc ( 0 I

1B 28 30 49

 

Spanish (ISO 17)

Esc ( 2 S

1B 28 32 53

 

German (ISO 21)

Esc ( 1 G

1B 28 31 47

 

Norwegian1
(ISO 60)

Esc ( 0 D

1B 28 30 44

 

French (ISO 69)

Esc ( 1 F

1B 28 31 46

 

ISO 8859/1 Latin-1
(ECMA 94)

Esc ( 0 N

1B 28 30 4E

 

ISO 8859/2 Latin-2

Esc ( 2 N

1B 28 32 4E

 

ISO 8859/15
Latin-9 (Euro)

Esc ( 9 N

1B 28 39 4E

 

ISO 8859/9 Latin-5

Esc ( 5 N

1B 28 35 4E

 

PC-852 Latin-2

Esc ( 17 U

1B 28 31 37 55

 

PC 858 Europe

Esc ( 13 U

1B 28 31 33 55

 

PC-8 Turkish

Esc ( 9 T

1B 28 39 54

 

Win 3.1 Latin 1

Esc ( 19 U

1B 28 31 39 55

 

Win 3.1 Latin 2

Esc ( 9 E

1B 28 39 45

 

Win 3.1 Latin 5

Esc ( 5 T

1B 28 35 54

А вот Русского языка я что-то не нашел. Не очень то они нас уважают.

 

 

Тип шрифта Spacing*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Пропорциональный

Proportional

Esc ( s 1 P

1B 28 73 31 50

Моноширинный

Fixed

Esc ( s 0 P

1B 28 73 30 50

Print pitch*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Размер в дюймах

# of character per inch

Esc ( s # H

1B 28 73 # 48

Point size (character height)*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Размер в пунктах

# 0f 1/72nd inch

Esc ( s # V

1B 28 73 # 56

Style*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Прямой

Upright (normal)

Esc ( s 0 S

1B 28 73 30 53

Наклонный

Italic

Esc ( s 1 S

1B 28 73 31 53

Stroke weight*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Узкий

Normal

Esc s 0 B

1B 28 73 30 42

Широкий

Bold

Esc s 3 B

1B 28 73 33 42

Typeface*

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

Courier

Esc ( s 3 T

1B 28 73 54

 

CG Veranda, Helvetica, Arial, san-serif

Esc ( s 4101 T

1B 28 73 34 31 30 31 54

 

Letter Gothic

Esc ( s 6 T

1B 28 73 36 54

 

Univers

Esc ( s 4148 T

1B 28 73 34 31 34 38 54

 

Графика

Запуск растровой графики Start raster grafics

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

С левой позиции

At left most position

Esc * r 0 A

1B 2A72 30 41

От курсора

Current Cursor Position

Esc * r 1 A

1B 2A72 30 41

Завершение растровой графики End raster grafics

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

End Grafics

Esc * r C

1B 2A 72 43

Разрешение Resolution

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

75 dots per inch

Esc * t 75 R

1B 2A 74 37 35 52

 

100 dots per inch

Esc * t 100 R

1B 2A 74 31 30 30 52

 

150 dots per inch

Esc * t 150 R

1B 2A 74 31 35 30 52

 

300 dots per inch

Esc * t 300 R

1B 2A 74 31 30 30 52

 

600 dots per inch
(black only)

Esc * t 600 R

1B 2A 74 36 30 30 52

Raster depletion

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

No Depletion

Esc * o 1 D

1B 2A 6F 31 44

Качество Raster Quality obsolete

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

Default

Esc * r 0 Q

1B 2A 72 30 51

 

Draft

Esc * r 1 Q

1B 2A 72 31 51

 

High

Esc * r 2 Q

1B 2A 72 32 51

 

 

Установка ширины графики Set raster grafics width

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Ограничение ширины графики

# of picsel

Esc * r # S

1B 2A 72 # 53

Метод сжатия Set raster graphics sompression

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

Noun (off)

Esc * b 0 M

1B 2A 62 30 4D

 

Method 1

Esc * b 1 M

1B 2A 62 31 4D

 

Method 2

Esc * b 2 M

1B 2A 62 32 4D

 

Method 3

Esc * b 3 M

1B 2A 62 33 4D

 

Method 9

Esc * b 9 M

1B 2A 62 39 4D

 

Seed Row Source

Esc * b # S

1B 2A 62 # 53

По предыдущим строкам Seed Row Source

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

Same plane of previos row

Esc * b 0 S

1B 2A 62 30 53

 

Previos plane

Esc * b 1 S

1B 2A 62 31 53

 

2nd previos

Esc * b 2 S

1B 2A 62 32 53

 

3nd previos

Esc * b 3 S

1B 2A 62 33 53

Передача графики Transfer raster graphics

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Печать по строкам

Transfer by row
(# of bytes)

Esc * b # W [data]

1B 2A 62 # 57 [data]

Не работает

Transfer by plane
(# of bytes)

Esc * b # V [data]

1B 2A 62 # 56 [data]

Relative vertical pixel movement (formerly known as Raster Y offset)

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

Вертикальное смещение

Relative # of dots

Esc * b # Y

1B 2A 62 # 59

Смещает вниз следующий фрагмент графики.

Set number of raster planes per row

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

3 planes, CMY palette

Esc * r –3 U

1B 2A 72 2D 33 55

 

K (black plane)

Esc * r 1 U

1B 2A 72 31 55

 

3 planes, RGB palette

Esc * r 3 U

1B 2A 72 33 55

Это только для цветной печати.

Text (Forground Color) Assumes KCMY 4-plane palette selected

Команда (рус)

Команда (англ.)

Последовательность

Hex формат

 

White

Esc * v 0 S

1B 2A 76 30 53

 

True Black

Esc * v 1 S

1B 2A 76 31 53

 

Cyan

Esc * v 2 S

1B 2A 76 32 53

 

Magenta

Esc * v 4 S

1B 2A 76 34 53

 

Blue

Esc * v 6 S

1B 2A 76 36 53

 

Yellow

Esc * v 8 S

1B 2A 76 38 53

 

Green

Esc * v 10 S

1B 2A 76 31 30 53

 

Red

Esc * v 12 S

1B 2A 76 31 32 53

 

CompositeBlack

Esc * v 14 S

1B 2A 76 31 34 53

Цвет текста (передний план).

 

 

 

 

Работа с графикой

Почему-то мне не удалось рисовать графику в промежуточном положении листа. Независимо от того, выдаю я команду At left most position или Current Cursor Position все равно графика рисует с самой левой позиции. Если выдавался текст, графика начнется с начала следующей строки.

Если выдать команду Set raster grafics width, то при передаче лишней информации, она будет потеряна.

ГЛАВНАЯ СТРАНИЦА |  НАЗАД;

Hosted by uCoz