Einzelnen Beitrag anzeigen

Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
529 Beiträge
 
Delphi 11 Alexandria
 
#21

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