AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ESC-Sequenze für QR-Code

Ein Thema von Thomas Feichtner · begonnen am 19. Okt 2015 · letzter Beitrag vom 20. Okt 2015
Antwort Antwort
Seite 1 von 2  1 2   
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
136 Beiträge
 
Delphi 10.4 Sydney
 
#1

ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 12:39
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;
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#2

AW: ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 13:18
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.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#3

AW: ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 14:53
Dein "Result" ist ein ziemlicher Blödsinn!
Der Drucker wird X-mal initialisiert...

Geändert von hathor (19. Okt 2015 um 14:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 15:03
Dein "Result" ist ein ziemlicher Blödsinn!
Der Drucker wird X-mal initialisiert...
Pro Funktionsaufruf genau einmal. Oder was liest du da?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
136 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 15:47
Jetzt funktioniert es bei mir.
Beim Drucken muss man die Länge mit übergeben
Delphi-Quellcode:
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;
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.
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

AW: ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 16:00
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 ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 16:21
Bist Du sicher, daß das richtig ist?
Zitat:
Result := Result + #29 + #40 + #107 + char(3 + iLength) + #0 + #49 +#80 + #48 + sText;
Gefühlt wäre ...+#107+#3+chr(ilength)+#0.. sinnvoller?

und wie schon oben angemerkt, ein Array of Byte wäre nicht so fehleranfällig!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

AW: ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 17:37
Das + 3 kommt wohl hiervon : ESC+CR+LF. Bei solchen Druckern muss man immer etwas anders denken. 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. 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".
Gruß
Hansa
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: ESC-Sequenze für QR-Code

  Alt 19. Okt 2015, 19:11
...ich keine zusätzliche globale Variable namens "Result".
Äh... Bitte keinen Blödsinn verbreiten. Das kann keine globale Variable sein, weil...
Delphi-Quellcode:
Function Foo : String;
Begin
  Result := 'Non Global';
End;

initialization
  Result := 'Will not compile'
end.
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:
Delphi-Quellcode:
Function MyPrinterCommand : String;
begin
  Result := InitSequence
      + PrintAsQrBarcode('www.Foobar.com')
      + ForwardToEndOfPage
      + CutPaper;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.100 Beiträge
 
Delphi 12 Athens
 
#10

AW: ESC-Sequenze für QR-Code

  Alt 20. Okt 2015, 09:53
Und dann geht besser gleich mal von String weg, denn mit Unicode kommt am Ende oft nur noch Mist raus.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz