Halli hallo,
Ich habe eine Kassenschublade an einem Bondrucker (BIXOLON SRP-350plusII) angeschlossen.
jetzt möchte ich die ESC-Squenz zum öffnen an den Drucker senden.
Dafür habe ich mir (mit Hilfe aus dem Forum
) ein kleines Testtool geschrieben mit dem das auch fast perfekt geht.
Delphi-Quellcode:
procedure TForm10.Button4Click(Sender: TObject);
type
TPassThroughData = record
nLen : Integer;
Data : array[0..4] of byte;
end;
procedure DirectPrint(s:String);
var PTBlock : TPassThroughData;
res : Integer;
begin
PTBlock.nLen := length(s);
// Showmessage(Inttostr(length(s)));
// Setlength(PTBlock.data,PTBlock.nLen);
// Move(S[0],PTBlock.data[0],PTBlock.nLen);
// StrPCopy(@PTBlock.Data, s);
Fillchar(PTBlock.Data[0],Sizeof(PTBlock.Data),#0);
PTBlock.nLen := 5;
PTBlock.Data[0] := $1B;
PTBlock.Data[1] := $70;
PTBlock.Data[2] := $0;
PTBlock.Data[3] := $32;
PTBlock.Data[4] := $32;
// res := Escape(Printer.Handle, PASSTHROUGH, sizeof(TPassThroughData), @PTBlock, nil);
res := ExtEscape(Printer.Handle,
PASSTHROUGH,
sizeof(TPassThroughData),
@PTBlock,
0,
nil);
case res of
SP_ERROR : Showmessage('SP_ERROR');
end;
// showmessage(Inttostr(res));
end;
var res : Integer;
begin
Printer.PrinterIndex := CBDrucker.ItemIndex; // PrinterIndex auf Standardwert setzen
Printer.BeginDoc;
// DirectPrint(#27 + 'p' + #0 + #50 + #50);
// DirectPrint([$1B,$70,$0,$32,$32]);
DirectPrint('');
Printer.EndDoc;
res := GetLastError;
Showmessage('Error : ' + Inttostr(Res) + #13#10+SysErrorMessage(res));
end;
der Ablauf ist der, ich drücke auf einen Button und die Schublade soll auf gehen.
Schließe ich den Drucker an einem Windows XP(Prof. 32 Bit SP3) Rechner an geht die Schublade auf.
Schließe ich aber den gleichen Drucker an einen Windows 7(Prof. 32 Bit ) Rechner reagiert zwar der Drucker aber die Schublade geht nicht auf, obwohl ja exakt das gleiche gemacht wird.
Normale Text-Ausdrucke werden ordentlich ohne Probleme ausgedruckt.
Der Drucker ist per USB angeschlossen
Das Ergebnis von ExtEscape(). ist auf beiden Rechnern „5“
GetLastError ist auf beiden Rechnern immer „0“
Ich habe es auch schon mit Escape() versucht. Ist aber genau das gleiche Ergebnis.
Die Sequenz die gesendet wird ist auch ok, sonst würde die Schublade ja auch dem XP-Rechner auch nicht aufgehen.
An was kann es noch liegen, warum es auf dem XP geht und auf dem Windows 7 nicht.
Jens