Mit Esc/Pos möchte ich ein Bitmap-Bild in den NV-Grafikspeicher eines Druckers hochladen.JAVA ESC POS NV-Grafik auf Drucker hochladen
Ich verwende GS (L/GS 8 L
<Function 67>
der Esc/Pos Handbuch.
Ich kann <Function 65>
und <Function 66>
verwenden, um alle oder eine der Grafiken zu löschen.
Ich weiß, ich vermisse etwas beim Hinzufügen der Bitmap zu der Funktion.
Heres ist meine Befehlszeichenfolge einschließlich der Bitmap. Die bitmapString
hat den Datei-Header und Info-Header des Bitmap entfernt (erstes 62 Bytes) (Dataoffset) .:
String bitmapString = new String(bitmapBytes, Charsets.US_ASCII);
bitmapString = bitmapString.substring(DataOffset, bitmapStringSize);
String commandString = "";
int commandLength = (bitmapStringSize.length) + 11;
pL = commandLength % 256;
if (commandLength < 256) {
pH = 0;
} else {
pH = (commandLength - pL)/256;
}
xL = bitmapWidth % 256;
if (bitmapWidth < 256) {
xH = 0;
} else {
xH = (bitmapWidth - (bitmapWidth % 256))/256;
}
yL = bitmapHeight % 256;
if (bitmapHeight < 256) {
yH = 0;
} else {
yH = (bitmapHeight - (bitmapHeight % 256))/256;
}
commandString
+= Utils.H("1B")// 27
+ Utils.H("40") // 64
+ Utils.H("1B") // 27
+ Utils.H("3D") // 61
+ Utils.H("01") // 1
+ Utils.H("1D") // GS = 29
+ Utils.H("28") // (= 40
+ Utils.H("4C") // L = 76
+ Utils.D(pL) // pL
+ Utils.D(pH) // pH
+ Utils.H("30") // m = 48
+ Utils.H("43") // fn = 67
+ Utils.H("30") // a = 48
+ Utils.H(KC1) // kc1
+ Utils.H(KC2) // kc2
+ Utils.H("01") // b = 1
+ Utils.D(xL) // xL
+ Utils.D(xH) // xH
+ Utils.D(yL) // yL
+ Utils.D(yH) // yH
+ Utils.H("31");// c = 49
commandString += bitmapString;
Ich verwende ePOS-Print.jar an den Drucker zu öffnen und schreiben:
EpsonIo epsonio = new EpsonIo();
byte[] commandBytes = commandString.getBytes(Charsets.US_ASCII);
epsonio.open(DevType.BLUETOOTH, MAC, null, ESCPosService.this);
while (n > 0) {
epsonio.write(commandBytes, i, n > bufferSize ? bufferSize : n, SEND_TIMEOUT);
Thread.sleep(450);
i += bufferSize;
n -= bufferSize;
}
Aber wenn ich die Grafik gedruckt wird verzerrt: