Registriert seit: 6. Feb 2006
Ort: Moers
535 Beiträge
Delphi 11 Alexandria
|
AW: Epson TM-T70 USB Kassenschublade öffnen
26. Mär 2014, 10: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='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
Ralf Gruß vom Niederrhein
|
|
Zitat
|