Печать растрового изображения на принтер ESC/POS

Я пытаюсь печатать на принтере, совместимом с ESC/POS, и никак не могу понять GS v 0. Я только что подключился с Mac и отправляю команды hex через CoolTerm.

Документы говорят...

  GS v 0 m xL xH yL yH d1....dk
  -----------------------------------------------------
  [Name] Print raster bit image
  [Format] ASCII GS v 0 m xL xH yL yH d1....dk
  Hex 1D 76 30 m xL xH yL yH d1....dk
  Decimal 29 118 48 m xL xH yL yH d1....dk
  [Range] 0≤xL≤48, xH=0; 0≤yL≤255, yH=0; 0≤d≤255
  k=(xL+xH×256)×(yL+yH×256)(k≠0)
  [Description] Selects Raster bit-image mode. The value of m selects the mode, as follows:
+------+------------+----------------------------+---------------------------+
|  m   |    MODE    |      Vertical Dot Density  |  Horizontal Dot density   |
+------+------------+----------------------------+---------------------------+
|0, 48 |   Normal   |          200 DPI           |        200 DPI            |
+------+------------+----------------------------+---------------------------+
|1, 49 |Double-width|          200 DPI           |        100 DPI            |
+------+-------------+---------------------------+---------------------------+
|2, 50 |Double-height|         100 DPI           |        200 DPI            |
+------+-------------+---------------------------+---------------------------+
|3, 51 | Quadruple  |          100 DPI           |        100 DPI            |
+------+-------------+---------------------------+---------------------------+

 • xL, xH, select the number of data bits ( xL+ xH × 256) in the horizontal direction for the bit image.
 • yL, yH, select the number of data bits ( yL+ yH × 256) in the vertical direction for the bit image.
 • This command has no effect in all print modes (character size, emphasized, double-strike, upside-down, underline, white/black reverse printing, etc.) for raster bit image.
 • The part of bit image that exceeds the printable area will not be printed.
 • d indicates the bit-image data. Set time a bit to 1 prints a dot and setting it to 0 does not print a dot.

Из этого я делаю вывод, что мне нужно отправить следующее в HEX

 1D 76 30 30 20 00 00 01

Соответствуют ли теперь данные изображения этому, и должен ли я отправлять сообщение о том, что изображение закончилось?


person maxum    schedule 22.08.2015    source источник


Ответы (2)


Я помню, что есть команда <ESC>K (не GS) для печати 8 строк пикселей. Подробности смотрите в разделе Команды ESC. После K должны быть отправлены 2 байта - число байтов данных и реальные данные. Но не гарантируется, что каждый принтер будет поддерживать это. Какая у вас марка и модель?

person i486    schedule 22.08.2015

В документах говорится:

Hex 1D 76 30 m xL xH yL yH d1....dk

с m равным 0x48..0x51, поэтому вы не можете отправить

1D 76 30 30 20 00 00 01

а скорее, например

1D 76 30 48 20 00 00 01

Я не думаю, что имеет смысл то, что xH и yL равны 0.

person vesperto    schedule 07.06.2021