Вопрос

У меня проблемы с производством и загрузкой графики на принтер EPL2.

Устойчив довольно буквально любые элементы программного обеспечения, доступные и разгадывали Интернет, я в потере.

У меня есть 1-битный файл, который я пытаюсь загрузить со следующим сценарием ..

setppi.txt.

GK"NAMEPCX"
GK"NAMEPCX" 
GM"NAMEPCX"3042

а затем загрузить с

copy setppi.txt+ppirmt.pcx lpt1/b

У кого-нибудь с опытом есть какие-то советы, прежде чем вырвать, что осталось от моих волос? Я почти уверен, что этот вопрос состоит в том, чтобы сделать с созданием PCX, но пробовав все варианты, я не уверен, что мой следующий шаг.

Это было полезно?

Решение

Вот как я нашел, чтобы правильно создавать PCX:

В GIMP сохраните файл как 1-битный (черно-белый) BMP. Не выбирайте PCX, потому что сохраненный формат не является 1-битной PCX, как требуется принтер!

Используйте программу Convert ImageMagick для преобразования вашего BMP на PCX.

Другой вопрос, в котором я пробежал после того, как я поймал это, была эта графика все еще коррумпирована, это был проблемой кодовой страницы, поэтому следите за этому.

Другие советы

Вы не упоминаете, какой язык программирования вы используете.

Если это C # (или .NET в целом), то вот пост блога о печатных изображениях с EPL:
Использование команды EPL2 GW для отправки изображения в тепловой принтер Zebra

И еще один блог пост от того же парня, Это заставило меня начаться с печати EPL до принтеров Zebra с C #.

Там два способа выпускать графику PCX с использованием языка EPL2. Первый, который вы предложили:

GK"namepcx"
GK"namepcx"
GM"namepcx",3042
..... and here follows monochrome PCX data ...
..... with 128-bit header and following pixel data 1 bit-per pixel..

Позже вы должны быть в состоянии написать эту сохраненную "namepcx" Для буфера изображений принтера через GM, однако я провел два дня, пытаясь хранить PCX, но он никогда не будет храниться правильно. Так что я закончил просто использовать GW Команда для записи данных пикселей непосредственно на принтеры изображения буфера. Избегать «хранения во флэш-памяти». Также изначально это «вспышка» хранилище через GM предназначалась для хранения некоторого изображения (например, логотип), который повторил бы на всех ярлыках. Таким образом, вы можете хранить его один раз, а затем печатать 10 000 меток с тем же логотипом. Однако при приглашении от Java обычно вы будете печатать много разных изображений на разных метках. Таким образом, если вы храните, чтобы прошить новое изображение для каждой этикетки, вы будете «носить» флэш-память действительно быстро. (Например, руководство для принтера LP 2824 говорит, что флэш-память имеет только циклы записи 100K).

Так что может показаться, что использовать GW Чтобы написать imag непосредственно к буферу изображений вместо 3-х шагов GK GM GG может быть лучшим решением.

Отказ от ответственности: я в настоящее время пишу SVG-EPL-транспортер, который можно найти здесь

Я столкнулся с той же проблемой в последнее время и решил ее с отправкой GW-Command к принтеру.

GK-GK-GM-GG Это то, что вы не отправляете заголовок PCX, а скорее сырые двоичные данные (AFAIK без сжатия LRE).

Я использовал следующий (неоптимизированный / наивный) код C # C # C # C # C # C # C # код, который в значительной степени использует бит-смещение. Алгоритм может быть реализован на любом языке, хотя и просты:

[NotNull]
public IEnumerable<byte> GetRawBinaryData([NotNull] Bitmap bitmap,
                                          int octetts)
{
  var height = bitmap.Height;
  var width = bitmap.Width;

  for (var y = 0;
        y < height;
        y++)
  {
    for (var octett = 0;
          octett < octetts;
          octett++)
    {
      var value = (int) byte.MaxValue;

      for (var i = 0;
            i < 8;
            i++)
      {
        var x = octett * 8 + i;
        var bitIndex = 7 - i;
        if (x < width)
        {
          var color = bitmap.GetPixel(x,
                                      y);
          if (color.A > 0x32
              || color.R > 0x96 && color.G > 0x96 && color.B > 0x96)
          {
            value &= ~(1 << bitIndex);
          }
        }
      }

      yield return (byte) value;
    }
  }
}

То, что вы должны иметь в виду для преобразования:

  • 1: белая точка
  • 0: черная точка
  • width должен быть кратным 8 (так как мы отправляем байты) - код выше заботится об этом, прокладками
  • Вращение / Ориентация этикетки!
  • Какой-то порог реализован здесь ...

Я также реализовал GM-GG, но это выйдет за рамки этого ответа. Соответствующий код можно найти в EplCommands.StoreGraphics(bitmap:Bitmap,name:string).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top