Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Epson TM-T70 USB Kassenschublade öffnen (https://www.delphipraxis.net/179636-epson-tm-t70-usb-kassenschublade-oeffnen.html)

Neumann 26. Mär 2014 09:20

AW: Epson TM-T70 USB Kassenschublade öffnen
 
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='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(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

Pet04 26. Mär 2014 14:05

AW: Epson TM-T70 USB Kassenschublade öffnen
 
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.

Neumann 26. Mär 2014 15:37

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Ist der Drucker in Windows installiert?

Druck er Testseite oder aus Wordpad?

Pet04 27. Mär 2014 06:32

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Ja, er ist installiert und druckt auch über wordpad.

Neumann 27. Mär 2014 09:00

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Dann sollte es eigentlich gehen. Kann der Druckername falsch sein? Um da zu prüfen, kann man die Funktion Switchprinter benutzen. Ist der Druckername falsch, liefert diese den Namen des Standarddruckers zurück.

Pet04 27. Mär 2014 11:02

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Bei der function RawDataToPrinter springt er ins exit.


Delphi-Quellcode:
  if NOT OpenPrinter( szPrinterName, hPrinter, NIL ) then
      Exit;
Bei der SwitchPrinter Funktion wird der Epson angezeit.

Habe ich was vergessen ?
Muss ich den Printer noch extra "open"
Wenn ja wie ?

Pet04 27. Mär 2014 13:05

AW: Epson TM-T70 USB Kassenschublade öffnen
 
Funktioniert doch !!!

Habe beim Druckernamen einen Buchstaben vergessen.

Wer lesen kann ist klar im Vorteil :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 Uhr.
Seite 3 von 3     123   

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