Plate-forme: Windows Mobile 6.5 HandheldImpression d'images à Zebra iMZ320
Langue: C#
Mon problème: Je me demande de saisir une signature de l'utilisateur, puis envoyer cette signature à une imprimante à imprimer sur un reçu. J'ai réussi à capturer l'image de la signature et j'ai le tableau d'octets de la signature en mémoire, mais je n'arrive pas à l'imprimer correctement. Pour démarrer, j'ai suivi le blog here pour obtenir la représentation hexadécimale de l'image bitmap. Cependant, cela a juste imprimé un reçu très long avec la représentation hexadécimale de la signature. Code ici au lieu de suivre le lien:
private static string DrawBitmap(Bitmap bmp, int xPosition, int yPosition)
{
if (bmp == null)
throw new ArgumentNullException("bmp");
StringBuilder DataString = new StringBuilder();
//Make sure the width is divisible by 8
int loopWidth = 8 - (bmp.Width % 8);
if (loopWidth == 8)
loopWidth = bmp.Width;
else
loopWidth += bmp.Width;
//DataString.Append(string.Format("EG {0} {1} {2} {3} ", xPosition, yPosition));
DataString.Append(string.Format("EG 64 128 {0} {1} ", xPosition, yPosition));
for (int y = 0; y < bmp.Height; y++)
{
int bit = 128;
int currentValue = 0;
for (int x = 0; x < loopWidth; x++)
{
int intensity;
if (x < bmp.Width)
{
Color color = bmp.GetPixel(x, y);
intensity = 255 - ((color.R + color.G + color.B)/3);
}
else
intensity = 0;
if (intensity >= 128)
currentValue |= bit;
bit = bit >> 1;
if (bit == 0)
{
DataString.Append(currentValue.ToString("X2"));
bit = 128;
currentValue = 0;
}
}//x
}//y
DataString.Append("\r\n");
return DataString.ToString();
}
Après cela a échoué, j'ai trouvé le CPCL programming guide pour les imprimantes Zebra et suivi l'exemple à la page 95 pour imprimer la petite image tuile. Cependant, cela a fait la même chose que la signature. Une fois que cela a échoué, j'ai trouvé que j'avais besoin d'exécuter la commande: ! U1 setvar "device.languages" "zpl"
avant de faire des commandes EG; donc je suis allé de l'avant et fait ceci mais les choses ont mal tourné ici qui finissent par me forcer à réinitialiser complètement l'imprimante et/ou à nettoyer le handheld car cela provoque une exception COM qui bloque le COM6 et l'imprimante.
J'ai épuisé la plupart sinon toutes les ressources auxquelles je peux penser et aucune d'elles n'a fonctionné.
Est-ce que quelqu'un a d'autres idées ou exemples qui pourraient m'aider à faire fonctionner ça?
Merci
Est-ce que cela fonctionne: http: //mrpmorris.blogspot.fr/2007/08/printing-bitmaps-using-cpcl.html. La plupart du temps, lorsque l'imprimante imprime le code à la place du texte ou de l'image, elle doit être définie sur un autre langage d'imprimante. ET, souvent le transfert est un problème, la plupart des imprimantes ne comprennent que ASCII-7. Ainsi, DataString peut être traduit en un tableau d'octets 7 bits avant d'être envoyé à l'imprimante. – josef