Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sequenz an Drucker schicken (https://www.delphipraxis.net/4439-sequenz-drucker-schicken.html)

RedCurlyTammy 29. Apr 2003 12:04


Sequenz an Drucker schicken
 
hallo!

bitte um hilfe. ich habe einen Epson-Bondrucker und eine Kassenlade dazu. Mit einer bestimmten Sequenz kann ich die Kassenlade nach dem Drucken eines Dokumentes auf den Bondrucker öffnen. Ich arbeite mit der Unit Printers, habe aber leider nicht herausgefunden, wo ich eine solche Sequenz zuweisen kann. Hat jemand vielleicht ein Idee?

Danke

MrSpock 29. Apr 2003 12:23

Hallo RedCurlyTammy,

ich habe einmal einen Etikettendrucker programmieren müssen. Dazu habe ich die Daten und Steuerzeichen in eine Datei geschrieben und diese mit Copy an den Drucker "prn:" geschickt.

RedCurlyTammy 29. Apr 2003 12:34

Hallo MrSpock!

hast keine Idee wie ich das mit printers lösen kann? ich hab nämlich schon ein schönes druckprogramm und hab gedacht, daß ich das da einfach einbauen kann.

Daniel B 29. Apr 2003 17:36

Hallo und herzlich Willkommen im Forum!

Ich habe den Thread nach Sonstiges verschoben.
Die Sparte "Neuen Beitrag zur Code-Library hinzufügen" ist nur für Beiträge die in der Library aufgenommen werden sollen.

Grüsse, Daniel :hi:

Willi1960 6. Jun 2007 16:10

Re: Sequenz an Drucker schicken
 
Hallo,

ich habe das gleiche Problem. Bin aber schon ein ganzes Stück weiter. Der Drucker muß mit einer Escape Sequenz dazu gebracht werden, die Lade zu öffnen.

zB. #27, #110, #0, #50 #50

Das ist die Ansteuerung für die meisten Bondrucker um die Lade zu öffnen. Jedoch muß der Drucker direkt angesteuert werden. Das weiß ich allerdings auch nicht wie das geht. Vielleicht kann uns da einer weiterhelfen.

shmia 6. Jun 2007 17:07

Re: Sequenz an Drucker schicken
 
Code-Library: Daten über den Spooler an Drucker senden

marabu 6. Jun 2007 17:43

Re: Sequenz an Drucker schicken
 
Hallo,

hier noch eine minimalistische Alternative:

Delphi-Quellcode:
function PrintEsc(const data: string): Boolean;
var
  pd: PChar;
begin
  Printer.BeginDoc;
  pd := PChar(Data);
  Dec(PInteger(pd));
  if Length(data) = PInteger(pd)^
    then Result := Windows.Escape(Printer.Handle, PASSTHROUGH, 0, pd, nil) <> 0
    else Result := False;
  Printer.EndDoc;
end;
Grüße vom marabu

ol1uw 6. Jun 2007 19:34

Re: Sequenz an Drucker schicken
 
Bei Epson Bon Druckern gibt es einen spez. Font für die Übermittlung dieser Befehle

Delphi-Quellcode:
printer.Canvas.Font.Name:='control';
printer.Canvas.Font.Size:=10;
// Bon abschneiden
printer.Canvas.TextOut(0,0,'P');
// Kassenlade öffnen
printer.Canvas.TextOut(0,0,'A');
Uwe

Willi1960 7. Jun 2007 17:09

Re: Sequenz an Drucker schicken
 
Hallo,

Absolut perfekt mit den Fonts. So Funktioniert es !!! :firejump: :bounce2: :bounce1: :bouncing4: :dancer: :dancer2:

Privateer3000 23. Apr 2008 18:30

Sequenz an Drucker schicken
 
Hallo,

ich habe nach diesem Tipp versucht
so ein Cut an einen Epson zu schicken.

Mit dem Ergebnis,dass dieser ein "P" ausdruckt.
Hinzu kommt dass ich den Ausdruck vorher an einen
Quickreport schicke.
Kann man dies an das "Afterprint"Ereignis des
Reports schicken?

Grüße

Privateer3000 24. Apr 2008 11:28

Re: Sequenz an Drucker schicken
 
So sieht meine procedure aus
Es wird allerdings immer nur das "P" gedruckt
Was ist falsch???

*kurzvormverzweifelnbin*
Übergabe: PrintCut('control','P',10);

Delphi-Quellcode:
procedure PrintCut(fontname,fontstring: String; fheight:Integer);
var Font: String; FontHeight:Integer;
begin
  Font := fontname;
  FontHeight := fheight;
  Printer.PrinterIndex := Printer.Printers.IndexOf(report.form1.analysedrucker);
  Printer.BeginDoc;
 printer.Canvas.Font.Name:=font;
 printer.Canvas.Font.Size:=FontHeight;
 printer.Canvas.TextOut(0,0,fontstring);
 Printer.EndDoc;
end;

Privateer3000 24. Apr 2008 13:41

Re: Sequenz an Drucker schicken
 
Bei Epson habe ich eben dieses Basic-Beispiel gefunden:

PRINT #1, CHR$(&H1D);"V";CHR$(66);CHR$(0); 'Feeds paper & cut

Nur kann ich damit nichts anfangen.
chr(66) ist doch ein B.

Hätte jemand eine Idee?

Hansa 24. Apr 2008 13:54

Re: Sequenz an Drucker schicken
 
Ne, kein B. Das ist Hex, also 16x6+6. Davon der Ascii wert.

Privateer3000 24. Apr 2008 14:03

Re: Sequenz an Drucker schicken
 
es ist zum verzweifeln...
Hab jetzt ne Mail an Epson geschickt
kommt sowieso keine Antwort
aber Versuch macht kluch

Hansa 24. Apr 2008 14:18

Re: Sequenz an Drucker schicken
 
Schicke nicht unnötige Mails. Die werden dasselbe sagen wie ich. :mrgreen: Die Sequenz für Papierabschneider lautet (jetzt aber dezimal !!). 29 86 1 Ob das geht hängt aber auch davon ab, wie die Dip-Schalter eingestellt sind (Emulation) !! Die 29 ist KEIN Schreibfehler !!

Privateer3000 24. Apr 2008 14:50

Re: Sequenz an Drucker schicken
 
Das lustige daran ist,
wenn ich vom Report vorher ein Preview mache
und von dort drucke,schneidet der Drucker.
Da es ja schliesslich im Treiber so eingestellt
wurde. Nur direkt mit Print geht das nicht.

Wie soll ich deine Sequenz denn schicken?

Hansa 24. Apr 2008 17:31

Re: Sequenz an Drucker schicken
 
Die drei Zeichen müssen irgendwie direkt zum Drucker. Notfalls per Textfile.

Privateer3000 25. Apr 2008 17:27

Re: Sequenz an Drucker schicken
 
Ja, es gab ne Menge Usertipps
vertreut im Netz.
Es funktioniert sogar, wenn man ein
Label am Ende des Reports mit der
entsprechenden Formatierung setzt.

In meinem Fall hat Seiko-Epson weitergeholfen
mit einem aktualisierten Treiber. Erst dieser
sprach per Steuerzeichen den PartialCut korrekt
an.

Dank an alle!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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