AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Epson TM-T70 USB Kassenschublade öffnen

Epson TM-T70 USB Kassenschublade öffnen

Ein Thema von Pet04 · begonnen am 21. Mär 2014 · letzter Beitrag vom 27. Mär 2014
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#1

AW: Epson TM-T70 USB Kassenschublade öffnen

  Alt 25. Mär 2014, 15:43
Hallo
eventuell ja mit dem EPSON Advanced Printer Driver.
Delphi-Quellcode:
 Printer.BeginDoc;
 Printer.Canvas.Font.Name:='control';
 Printer.Canvas.Font.Size:=1;
 //paper cut
 Printer.Canvas.TextOut(x,y,'P');
 //drawer
 Printer.Canvas.TextOut(x,y,'a');
 Printer.EndDoc;
Uwe
Dazu muss aber der Font "Control" von Epson installiert sein.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
87 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Epson TM-T70 USB Kassenschublade öffnen

  Alt 26. Mär 2014, 06:38
Mit "Print BeginDoc..." druckt der Drucker dann einen etwa 1 cm langen Papierschnipsel.
Dies soll natürlich nicht passieren.

Deshalb möchte ich es ml über die OPOS Treiber testen.

1. Drucken
2. Kassenlade über einen Button öffnen.

zu 1. s.o.

Leider druckt der Drucker nicht.

ZU 2. Muss der Cashdrawer.ocx auch in Delphi importiert werden oder kann ich die Lade direkt über den Printer.ocx öffnen.

Aber erst mal soll der Drucker drucken
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
548 Beiträge
 
Delphi 12 Athens
 
#3

AW: Epson TM-T70 USB Kassenschublade öffnen

  Alt 26. Mär 2014, 06:47
Den Control-Font muss man nicht extra installieren, er ist sozusagen in dem Drucker eingebaut und steht immer dann zur Verfügung, wenn der Drucker ausgewählt wird, z.B. in Wordpad. Leider bleibt dann wie gesagt das Problem mit dem Papierstreifen wenn man den Befehl so wie oben an den Drucker sendet.

Was ich vorher gepostet habe funktioniert ohne Druck von Papierstreifen und bei sehr vielen Bondruckern (Epson, Star, Bixolon usw.).
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
87 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Epson TM-T70 USB Kassenschublade öffnen

  Alt 26. Mär 2014, 07:21
Bekomme deine Funktion leider nicht zum laufen.
Hast du zufallig eine Demo Souce der funktioniert.

Wenn ich die Funktionen einbinde ... undeklarierte Bezeichner usw.
Wie rufe ich sie genau auf ?

Danke für deine Hilfe
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
548 Beiträge
 
Delphi 12 Athens
 
#5

AW: Epson TM-T70 USB Kassenschublade öffnen

  Alt 26. Mär 2014, 09:20
Das ganze Programm kann ich hier nicht veröffentlichen.

Delphi-Quellcode:

function RawDataToPrinter(szPrinterName:PChar; lpData:PByte; dwCount:Word) : Boolean;
Var
   hPrinter : THandle;
   DocInfo : DOC_INFO_1;
   dwJob : Word;
   dwBytesWritten : Cardinal;
Begin
   Result:=False;
   if NOT OpenPrinter( szPrinterName, hPrinter, NIL ) then
     Exit;

   DocInfo.pDocName := 'RAWJOB';
   DocInfo.pOutputFile := NIL;
   DocInfo.pDatatype := 'RAW';

   dwJob := StartDocPrinter( hPrinter, 1, @DocInfo );
   if (dwJob = 0 ) Then begin
     ClosePrinter( hPrinter );
     Exit;
   end;


   if not StartPagePrinter( hPrinter ) then begin
     EndDocPrinter( hPrinter );
     ClosePrinter( hPrinter );
     Exit;
   end;


   if not WritePrinter( hPrinter, lpData, dwCount, dwBytesWritten ) then begin
     EndPagePrinter( hPrinter );
     EndDocPrinter( hPrinter );
     ClosePrinter( hPrinter );
     Exit;
   end;

   if not EndPagePrinter( hPrinter ) then begin
     EndDocPrinter( hPrinter );
     ClosePrinter( hPrinter );
     Exit;
   end;

   if not EndDocPrinter( hPrinter ) then begin
     ClosePrinter( hPrinter );
     Exit;
   end;

   ClosePrinter( hPrinter );

   Result:=dwBytesWritten = dwCount;
End;

function SwitchPrinter(const APrtName : string):string;
var
   Device,
     Driver,
     Port: array[0..255] of Char;
   DevMode: THandle;
begin
   with Printer do
   begin
     PrinterIndex := Printers.IndexOf(APrtName);
     GetPrinter(Device, Driver, Port, DevMode);
     SetPrinter(Device, Driver, Port, 0);
     result:=Printers[printerindex];
   end;
end;
procedure Tfrmmain.opendrawer(nr:integer); // Muss keine Methode sein, einfache Procedure geht auch
Var
    FH:THandle;
    Buff: array[0..5] of char;
    RetW:DWORD;
    port:string;
    cmd:string;
    acmd:ansistring;
    p:pansichar;
begin
   // Anderer Code
   acmd:=#27#112#48#250#250;
   if dm.steuertext='Epson2then // 2. Schubladenanschluss dm.steuertext kann man durch Konstante ersetzen
   acmd:=#27#112#49#250#250;
   p:=AnsiStrAlloc(length(acmd));
   p:=StrPCopy(p,acmd);
   switchprinter(dm.Steuertextdrucker); //Druckername, so wie er in Windows angezeigt wird
   rawdatatoprinter(pwidechar(dm.Steuertextdrucker),pbyte(p),length(acmd));
end;
Einfach die Kommentare beachten und ein bischen umschreiben
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
87 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Epson TM-T70 USB Kassenschublade öffnen

  Alt 26. Mär 2014, 14:05
Delphi-Quellcode:
 procedure TForm4.opendrawer(); // Muss keine Methode sein, einfache Procedure geht auch
 //procedure TForm4.opendrawer(nr:integer); // Muss keine Methode sein, einfache Procedure geht auch
Var
     FH:THandle;
     Buff: array[0..5] of char;
     RetW:DWORD;
     port:string;
     cmd:string;
     acmd:ansistring;
     p:pansichar;
 begin
    // Anderer Code
    acmd:=#27#112#48#100#100;
   // if dm.steuertext='Epson2' then // 2. Schubladenanschluss dm.steuertext kann man durch Konstante ersetzen
   // acmd:=#27#112#49#250#250;
    p:=AnsiStrAlloc(length(acmd));
    p:=StrPCopy(p,acmd);
    switchprinter('EPSON TM-70'); //Druckername, so wie er in Windows angezeigt wird
    rawdatatoprinter(pwidechar('EPSON TM-70'),pbyte(p),length(acmd));
 end;
Habe den Code angepasst leider reagiert der Drucker überhaupt nicht.

in der funktion RawDataToPrinter sprigt er in exit.

if NOT OpenPrinter( szPrinterName, hPrinter, NIL ) then
Exit;

Muss ich vorher noch etwas beachten.
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
548 Beiträge
 
Delphi 12 Athens
 
#7

AW: Epson TM-T70 USB Kassenschublade öffnen

  Alt 26. Mär 2014, 15:37
Ist der Drucker in Windows installiert?

Druck er Testseite oder aus Wordpad?
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Pet04

Registriert seit: 26. Sep 2007
87 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: Epson TM-T70 USB Kassenschublade öffnen

  Alt 27. Mär 2014, 06:32
Ja, er ist installiert und druckt auch über wordpad.
  Mit Zitat antworten Zitat
Antwort Antwort

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 19:44 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