Domanda

Ho problemi di produzione e la grafica caricamento a una stampante EPL2.

Avere stanchi letteralmente eventuali pezzi di software disponibile e spulciato Internet, io sono in perdita.

Ho un file 1 po 'che cerco di caricare con il seguente script ..

setppi.txt

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

e poi caricati con

copy setppi.txt+ppirmt.pcx lpt1/b

Qualcuno ha esperienza ricevuti eventuali suggerimenti prima di strappare fuori ciò che è rimasto dei miei capelli? Sono quasi certo che la questione è a che fare con la creazione del PCX, ma dopo aver provato tutte le opzioni, sono sicuri di mio prossimo passo.

È stato utile?

Soluzione

Ecco il modo che ho trovato per creare il PCX correttamente:

In GIMP, salvare il file come un 1-bit (bianco e nero) BMP. Non selezionare PCX perché il formato non è salvato a 1 bit PCX come richiesto dalla stampante!

programma di conversione Usa ImageMagick per convertire il vostro BMP PCX.

L'altra questione mi sono imbattuto dopo che ho ottenuto che negativo era che grafica era ancora corrotta, che era un problema di tabella codici, in modo da guardare fuori per questo.

Altri suggerimenti

Non si parla che il linguaggio di programmazione che si sta utilizzando.

Se si tratta di C # (o .NET in generale), allora ecco un post sulla stampa di immagini con EPL:
Utilizzando il comando EPL2 GW per inviare un'immagine a una stampante termica Zebra

E un altro post sul blog dallo stesso ragazzo, che mi ha iniziato con la stampa EPL per stampanti Zebra con C # .

Ci sono due modi per la grafica di uscita PCX utilizzando il linguaggio EPL2. La prima è quella che ha suggerito:

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

dopo si dovrebbe essere in grado di scrivere questo memorizzato "namepcx" per buffer di immagine della stampante tramite     GM tuttavia Ho passato due giorni a cercare negozio PCX, ma non sarebbe mai conservato correttamente. Così ho finito semplicemente usando il comando GW ai dati dei pixel scrivere direttamente al buffer di immagine stampanti. Evitando "memorizzazione nella memoria flash". Anche in origine questa memoria "flash" Via GM è stata pensata per memorizzare qualche immagine (come marchio) che ripetere su tutte le etichette. Così è possibile memorizzare una volta e poi stampare 10 000 etichette con lo stesso logo. Tuttavia, se priting da Java, di solito ci si stia stampando molte immagini diverse su diverse etichette. Così se si memorizzano a lampeggiare nuova immagine per ogni etichetta, allora si avrà "portare fuori" la memoria flash molto velocemente. (Es. Manuale per la stampante LP 2824 dice che la memoria flash ha solo 100k cicli di scrittura).

Così può sembrare che usando GW a imag scrivere direttamente all'immagine tampone invece di usare 3-step GK GM GG può essere una soluzione migliore.

Disclaimer: Attualmente sto scrivendo uno SVG-to-EPL-transpiler, che può essere trovato qui

stavo affrontando lo stesso problema ultimamente, e risolto con l'invio di un GW -command alla stampante.

La differenza principale per GK-GK-GM-GG è che non inviare il PCX-header lungo, ma piuttosto i dati binari originari (per quanto ne so senza compressione LRE).

Ho usato seguente codice (non ottimizzato / naive) C #, che usa pesantemente bit-shifting. L'algoritmo può essere implementato in qualsiasi lingua e anche se è molto semplice:

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

La cosa che dovete tenere a mente per le conversioni:

  • 1: puntino bianco
  • 0: punto nero
  • width deve essere un multiplo di 8 (come stiamo inviando byte) - il codice prende sopra cura di questo padding
  • rotazione / orientamento della etichetta!
  • una certa soglia è implementato qui ...

Ho anche implementato GM-GG, ma questo andrebbe oltre lo scopo di questa risposta. Il codice in questione può essere trovato in EplCommands.StoreGraphics(bitmap:Bitmap,name:string) .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top