ExtEscape Unterschied Windows XP und WinDows 7
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:
der Ablauf ist der, ich drücke auf einen Button und die Schublade soll auf gehen.
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; 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 |
AW: ExtEscape Unterschied Windows XP und WinDows 7
Schau dir mal diese Unit in der Code-Library an.
http://www.delphipraxis.net/23387-da...er-senden.html Hierbei wird der Druckertreiber umgangen und nur der Spooler angesprochen. Das funktioniert zuverlässig mit allen Druckerports (LPT, USB, Netzwerk,...). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz