Einzelnen Beitrag anzeigen

Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#1

ExtEscape Unterschied Windows XP und WinDows 7

  Alt 3. Dez 2013, 15:29
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
  Mit Zitat antworten Zitat