Pregunta

Estoy teniendo problemas para producir y los gráficos de carga de los EPL2 una impresora.

Tener cansados, literalmente, cualquier pedazo de software disponible y rastreado internet, yo estoy en una pérdida.

Tengo un archivo de 1 bit que intento cargar con la siguiente secuencia de comandos ..

setppi.txt

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

y luego con carga

copy setppi.txt+ppirmt.pcx lpt1/b

¿Alguien con experiencia consiguieron algún consejo antes de que arranquen lo que queda de mi pelo? Estoy casi seguro de que esta cuestión tiene que ver con la creación de la PCX pero después de haber intentado todas las opciones, estoy seguro de que mi siguiente paso.

¿Fue útil?

Solución

Aquí está la manera que encontré para crear el PCX correctamente:

En gimp, guarde el archivo como un 1 bit (blanco y negro) BMP. No seleccione PCX porque el formato de guardado no es de 1 bit PCX como es requerido por la impresora!

programa de conversión de uso de ImageMagick para convertir su BMP a PCX.

El otro problema que encontré con que después de que llegué fue que los gráficos eran todavía corrupta, que era una cuestión de página de códigos, así que ten cuidado con eso.

Otros consejos

Usted no menciona qué lenguaje de programación que está utilizando.

Si se trata de C # (o .NET en general), entonces esto es un blog sobre la impresión de imágenes con EPL:
Usando el comando EPL2 GW para enviar una imagen a una impresora térmica Zebra

Y otra entrada de blog del mismo tipo, que me inició con la impresión de las impresoras Zebra EPL con C # .

Son dos maneras de gráficos PCX de salida utilizando un lenguaje EPL2. El primero de ellos es el que usted sugiere:

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..

tarde que debe ser capaz de escribir este almacena "namepcx" a memoria de imagen de la impresora a través de     GM sin embargo, me pasé dos días tratando tienda PCX, pero nunca sería almacenado correctamente. Así que terminé el simple uso de comandos GW a los datos de píxeles pueden escribir directamente en la memoria de imagen impresoras. Evitar "almacenar en la memoria flash". También inicialmente este almacenamiento "flash" a través de GM estaba destinado a almacenar alguna imagen (como logo), que se repetiría en todas las etiquetas. De esta manera es posible almacenar una vez y luego imprimir 10 000 etiquetas con el mismo logotipo. Sin embargo, si priting de java, por lo general usted esté imprimiendo muchas imágenes diferentes en diferentes etiquetas. Por lo tanto si se almacenan a parpadear nueva imagen para cada etiqueta, entonces usted va a "desaparecer" memoria flash muy rápido. (Ej. El manual de la impresora LP 2824 dice que la memoria flash sólo tiene 100 mil ciclos de escritura).

Por lo tanto, puede parecer que el uso de GW a imag escribir directamente a la imagen de tampón en lugar de utilizar de 3 pasos GK GM GG puede ser una solución mejor.

Renuncia: Actualmente estoy escribiendo un transpiler SVG-a-EPL, que se puede encontrar aquí

Me estaba enfrentando el mismo problema últimamente, y lo resolvió con el envío de un GW -command a la impresora.

La principal diferencia con GK-GK-GM-GG es que usted no envía el PCX-cabecera a lo largo, sino más bien los datos binarios sin formato (que yo sepa sin compresión LRE).

utilicé siguiente código (no optimizado / naive) C #, que utiliza en gran medida de desplazamiento de bits. El algoritmo puede ser implementado en cualquier idioma y aunque es sencillo:

[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;
    }
  }
}

Lo que hay que tener en cuenta para las conversiones:

  • 1: punto blanco
  • 0: punto negro
  • width tiene que ser un múltiplo de 8 (como estamos enviando bytes) - el código anterior se encarga de esto por el acolchado
  • rotación / orientación de la etiqueta
  • cierto umbral se implementa aquí ...

También se han implementado GM-GG, pero esto iría más allá del alcance de esta respuesta. El código en cuestión se puede encontrar en EplCommands.StoreGraphics(bitmap:Bitmap,name:string) .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top