Hmm..
Wieso der Umweg über LPT....
Den Drucker ganz normal unter Windows installieren!
Und dann reicht folgendes, um jedes Script (kann ZPL, EPL oder anderes RAW-Script sein!) direkt programmtechnisch an den Drucker zu schicken:
Delphi-Quellcode:
uses
WinSpool, Printers;
function SendRAWData(RAWData: AnsiString; Port : Ansistring):boolean;
var
dwCount : DWORD;
hPrinter : THandle;
DocInfo : TDocInfo1A;
dwJOB : DWORD;
dwBytesWritten : DWORD;
begin
result:=false;
dwCount := Length(RAWData);
if OpenPrinterA(PAnsiChar(Port), hPrinter,
Nil)
then begin
try
DocInfo.pDocName := '
RAWPrint';
DocInfo.pOutputFile :=
Nil;
DocInfo.pDatatype := '
RAW';
dwJob := StartDocPrinterA(hPrinter, 1, @docInfo);
if dwJob <> 0
then
try
if StartPagePrinter(hPrinter)
then
try
if WritePrinter(hPrinter, PAnsichar(RAWData), dwCount, dwBytesWritten)
then
if dwBytesWritten <> dwCount
then
raise Exception.Create('
Übertragungsprobleme mit '+Port+'
!')
else result:=true;
finally
EndPagePrinter(hPrinter)
end
finally
EndDocPrinter(hPrinter);
end
finally
ClosePrinter(hPrinter)
end;
end else raise Exception.Create('
Drucker '+Port+'
nicht zur Verfügung!');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Port :
string;
Data :
string;
begin
if PrintDialog1.Execute
then begin
Port := Printer.Printers[Printer.PrinterIndex];
Data := '
DIES IST DAS ASCII-SCRIPT';
SendRAWData(Data,Port);
end;
end;
(Ist nicht optimiert und verwendet nur
ASCII (
ANSI), was aber OK ist, da die meisten Scriptfähigen Drucker nicht
Unicode per Script können!)
Es ist hierbei egal, ob der Drucker per USB/LPT/Netzwerk oder wie auch immer angeschlossen ist.
(Den Printdialog habe nur als Beispiel verwendet, der Drucker kann auch schon vorher selektiert/gespeichert worden sein.)
Edit:
Kann sogar auf normalen z.B. Laserdrucker verwendet werden, um direkt Text zu drucken.