![]() |
ESC-Sequenze für QR-Code
Hallo,
hat schon jemand einen QR-Code auf einen Epson TM88 IV über ESC-Sequenzen gedruckt? Leider komme ich mit der Beschreibung nicht recht weiter. Diese Daten schicke ich an den Drucker:
Delphi-Quellcode:
function TfKTESCSequences.GetESCSequenceQRCode: String;
begin { Initialize printer } Result := #27 + #64; { Auf Drucker umschalten } Result := Result + #27 + #61 + #1; { Selectet print modes, Font A } Result := Result + #27 + #33 + #0 + 'Font A' + #27 + #33 + #0 + cCRLF; { Daten für QR } Result := Result + #29 + #40 + #107 + #4 + #0 + #49 +#65 + #50 + #0; Result := Result + #29 + #40 + #107 + #3 + #0 + #49 +#67 + #20; //#5 Result := Result + #29 + #40 + #107 + #3 + #0 + #49 +#69 + #48; Result := Result + #29 + #40 + #107 + #3 + #0 + #49 +#80 + #48 + 'www.mgm.at'; Result := Result + #29 + #40 + #107 + #3 + #0 + #49 +#81 + #48; { Print and feed n lines } Result := Result + #27 + #100 + #10; { Papier abschneiden } Result := Result + #29 + #86 + #1 + #0; end; |
AW: ESC-Sequenze für QR-Code
Mit deinem Epson-Drucker habe ich zwar keine Erfahrung, aber mit einem ähnlichen Drucker, der per Bluetooth an einem Android-Gerät genutzt wird.
Dabei hat es schon mal total geholfen, statt einem String ein Byetarray zu verwenden, denn z.B.(!) ein #0 steht für Stringende. |
AW: ESC-Sequenze für QR-Code
Dein "Result" ist ein ziemlicher Blödsinn!
Der Drucker wird X-mal initialisiert... |
AW: ESC-Sequenze für QR-Code
Zitat:
|
AW: ESC-Sequenze für QR-Code
Jetzt funktioniert es bei mir.
Beim Drucken muss man die Länge mit übergeben
Delphi-Quellcode:
Wobei die die Parameter für die Länge noch schöner gemacht werden müssen so wie in der Beschreibung. Sonst kann ich maximal 253 Zeichen drucken.
function TfKTESCSequences.GetESCSequenceQRCode: String;
var sText: String; iLength: INteger; begin sText := 'Thomas kann QR-Code Drucken'; iLength := length(sText); { Initialize printer } Result := #27 + #64; { Auf Drucker umschalten } Result := Result + #27 + #61 + #1; { Selectet print modes, Font A } Result := Result + #27 + #33 + #0 + 'Font A' + #27 + #33 + #0 + cCRLF; Result := Result + #29 + #40 + #107 + #4 + #0 + #49 +#65 + #50 + #0; Result := Result + #29 + #40 + #107 + #3 + #0 + #49 +#67 + #20; //#5 Result := Result + #29 + #40 + #107 + #3 + #0 + #49 +#69 + #48; Result := Result + #29 + #40 + #107 + char(3 + iLength) + #0 + #49 +#80 + #48 + sText; Result := Result + #29 + #40 + #107 + #3 + #0 + #49 +#81 + #48; { Print and feed n lines } Result := Result + #27 + #100 + #10; { Papier abschneiden } Result := Result + #29 + #86 + #1 + #0; |
AW: ESC-Sequenze für QR-Code
QR-Code per ESC-Sequenz drucken das geht ? Ja, wäre nicht schlecht. Habe hier einen TMT88III und da ist allerdings im Handbuch nichts mit QR zu finden. Drucker initialisieren/rücksetzen ist übrigens <ESC>@ also in Delphi schon richtig mit #27 #64. Nur : das was danach kommt ist mir viel zu viel. Da gibts nochmalerweise nur : ESC + ?? zum Umschalten auf QR-Modus, dannn das was in den QR rein soll und noch Ende-Zeichen. Du hast aber da in das Result mind. 20 Zeichen verbaut. Warum ?
|
AW: ESC-Sequenze für QR-Code
Bist Du sicher, daß das richtig ist?
Zitat:
und wie schon oben angemerkt, ein
Delphi-Quellcode:
wäre nicht so fehleranfällig!
Array of Byte
Gruß K-H |
AW: ESC-Sequenze für QR-Code
Das + 3 kommt wohl hiervon : ESC+CR+LF. Bei solchen Druckern muss man immer etwas anders denken. 8-) Noch zum "Result" in Delphi-Funktionen. Ich benutze das nicht. Man stelle sich mal vor, man brauche 30 Funktionen und fasst die in einer Unit zusammen. Dann sieht man ja vor lauter "Results" den Wald nicht mehr. :mrgreen: So schlimm ists ja nicht, aber ich verzichte darauf. Man kann der Funktion auch direkt einen Wert zuweisen, wie hier die ESC-Sequenz. Dazu brauche zumindest ich keine zusätzliche globale Variable namens "Result".
|
AW: ESC-Sequenze für QR-Code
Zitat:
Delphi-Quellcode:
Löblich ist Dein Ansatz zur Lesbarkeit. Ich würde die einzelnen ESC-Befehle als Konstanten ablegen, und parametrierte Befehle über eine Funktion abbilden, Dann würde so ein Result-Monstrum vielleicht so aussehen:
Function Foo : String;
Begin Result := 'Non Global'; End; initialization Result := 'Will not compile' end.
Delphi-Quellcode:
Function MyPrinterCommand : String;
begin Result := InitSequence + PrintAsQrBarcode('www.Foobar.com') + ForwardToEndOfPage + CutPaper; end; |
AW: ESC-Sequenze für QR-Code
Und dann geht besser gleich mal von
Delphi-Quellcode:
weg, denn mit Unicode kommt am Ende oft nur noch Mist raus.
String
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz