Question

Je ne parviens pas à produire et graphiques une imprimante charger sur EPL2.

Avoir fatigué littéralement des morceaux de logiciels disponibles et traînants Internet, je suis à une perte.

J'ai un fichier 1 bit que je tente de télécharger le script suivant ..

setppi.txt

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

puis télécharger avec

copy setppi.txt+ppirmt.pcx lpt1/b

Quelqu'un at-il avec l'expérience se sont Quelques conseils avant de déchirer sur ce qui reste de mes cheveux? Je suis presque certain que cette question est de faire avec la création du PCX, mais après avoir essayé toutes les options, je ne suis pas sûr à ma prochaine étape.

Était-ce utile?

La solution

Voici la façon dont je trouve pour créer le PCX correctement:

Dans gimp, enregistrez le fichier en tant que 1 bit (noir et blanc) BMP. Ne sélectionnez pas PCX car le format sauvegardé n'est pas PCX 1 bits tel que requis par l'imprimante!

Utiliser le programme de conversion de ImageMagick pour convertir votre BMP PCX.

L'autre question que je courais à travers après que je suis arrivé que vers le bas était que les graphismes étaient encore corrompus, qui était un problème de codepage, alors faites attention à cela.

Autres conseils

Vous ne mentionnez pas quel langage de programmation que vous utilisez.

Si elle est C # (ou .NET en général), puis est ici un blog sur l'impression d'images avec EPL:
en utilisant la commande EPL2 GW pour envoyer une image à une imprimante thermique Zebra

Et un autre billet de blog du même type, qui m'a commencé avec l'impression EPL sur les imprimantes Zebra avec C # .

Il sont deux façons de graphiques sortie PCX en utilisant un langage EPL2. Le premier est celui que vous suggérez:

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

plus tard, vous devriez être en mesure d'écrire ce stored "namepcx" au tampon d'image de l'imprimante via     GM cependant j'ai passé deux jours à essayer PCX magasin, mais il n'y aurait jamais être correctement enregistré. Donc, je fini par utiliser simplement la commande GW aux données de pixels d'écriture directement à l'imprimante tampon d'image. Éviter « le stockage en mémoire flash ». Aussi à l'origine de ce stockage « flash » via GM a été conçu pour stocker une image (comme logo) qui répéterait sur toutes les étiquettes. Ainsi, vous pouvez stocker une fois, puis imprimer 10 000 étiquettes avec le même logo. Toutefois, si priting de java, vous généralement imprimer plusieurs images différentes sur différentes étiquettes. Ainsi, si vous stockez à clignoter nouvelle image pour chaque étiquette, alors vous « s'user » mémoire flash très rapidement. (Par ex. Manuel pour imprimante LP 2824 dit que la mémoire flash a seulement 100k cycles d'écriture).

Il peut sembler que l'utilisation GW à imag écrire directement à l'image tampon au lieu d'utiliser GK GM GG 3 étapes peut être une meilleure solution.

Disclaimer: Je suis en train d'écrire un SVG à EPL-transpiler, qui se trouve ici

Je faisais face à la même question ces derniers temps, et résolu avec l'envoi d'un GW -command à l'imprimante.

La principale différence GK-GK-GM-GG est que vous n'envoyez pas le PCX-tête le long, mais plutôt les données binaires brutes (sans compression afaik LRE).

I utilisé suivant (non optimisé / naïve) code C #, qui utilise beaucoup de décalage de bit. L'algorithme peut être mis en œuvre dans toutes les langues et si est simple:

[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 chose que vous devez garder à l'esprit pour les conversions:

  • 1: point blanc
  • 0: point noir
  • width doit être un multiple de 8 (comme nous l'envoyons octets) - le code ci-dessus prend soin de cela en rembourrage
  • rotation / orientation de l'étiquette!
  • un certain seuil est mis en œuvre ici ...

J'ai également mis en œuvre GM-GG, mais cela irait au-delà de la portée de cette réponse. Le code correspondant se trouve dans EplCommands.StoreGraphics(bitmap:Bitmap,name:string) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top