Announcement

Collapse
No announcement yet.

Escape Sequences zum Drucker senden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Escape Sequences zum Drucker senden

    Hallo,
    ich muss eine „Escape Sequences“ zum Drucker (Bon-Drucker) senden,
    um eine Kassenschublade anzusteuern.

    Hat jemand einen Tipp für mich.
    Habe keine Ahnung wie dieses funktioniert.

    Mit freundlichen Grüßen

    Shaw

  • #2
    Hallo,

    Borland hat dazu ein Beispiel veröffentlicht: "<i>Print a textfile to the generic/text printer</i>". Als Drucker wird hier <b>Universal/Nur Text</b> verwendet. Über die Ausgabe von <b>#12</b> wird ein Seitenwechsel ausgelöst:
    <pre>
    Uses WinSpool;

    Const
    GenericPrinter: Pchar = 'Universal/Nur Text';
    // Change to systems generic drivers name, it's localized

    Procedure PrintFileToGeneric(Const sFileName: string; ejectPage: boolean );
    Const
    BufSize = 16384;
    Var
    Count : Integer;
    BytesWritten: DWORD;
    hPrinter: THandle;
    DocInfo: TDocInfo1;
    f: file;
    Buffer: Array [1..BufSize] of Char;
    ch: Char;
    Begin
    If not WinSpool.OpenPrinter(GenericPrinter, hPrinter, nil) Then
    raise exception.create('Printer not found');

    Try
    DocInfo.pDocName := 'MyDocument';
    DocInfo.pOutputFile := Nil;
    DocInfo.pDatatype := 'RAW';
    If StartDocPrinter(hPrinter, 1, @DocInfo) = 0 Then
    Abort;

    Try
    If not StartPagePrinter(hPrinter) Then
    Abort;

    System.Assign(f, sFileName);
    Try
    Reset(f, 1);
    Try
    While not eof(f) Do Begin
    Blockread(f, Buffer, BufSize, Count);
    If Count > 0 Then Begin
    If not WritePrinter(hPrinter, @Buffer, Count, BytesWritten) Then
    Abort;
    End;
    End;
    Finally
    If ejectPage Then Begin
    ch:= #12;
    WritePrinter( hPrinter, @ch, 1, BytesWritten );
    End;
    End;
    Finally
    EndPagePrinter(hPrinter);
    System.Closefile( f );
    End;
    Finally
    EndDocPrinter(hPrinter);
    End;
    Finally
    WinSpool.ClosePrinter(hPrinter);
    End;
    End;

    Procedure TForm1.Button1Click(Sender: TObject);
    Begin
    printfiletogeneric( extractfilepath( paramstr(0))+'unit1.pas', True );
    End;
    </pre&gt

    Comment


    • #3
      Hallo Herr Kosch,

      ich verwende diese Routine um Daten an einen Thermotransferdrucker
      zu übermitteln.
      Mein Problem : Die Routine verdaut keine Sonderzeichen und Esc-Sequenzen.

      Ich muss eine PCX-File binär 1:1 parallel bzw. über Netzwerkdrucker
      ausgeben. Via COM-Port kein Problem, aber parallel kommt statt der
      Grafik schon in einer Druckdatei nur 'ttttttt...' an ?!?!

      Können Sie noch einmal helfen ?

      Stephan Weise

      Comment


      • #4
        Hallo Herr Kosch,

        ich verwende diese Routine um Daten an einen Thermotransferdrucker zu übermitteln. Mein Problem : Die Routine verdaut keine Sonderzeichen bzw. Esc-Sequenzen.

        Ich muss die Zeichen #27 + #46 gefolgt von einem binären PCX-File 1:1 parallel bzw. über Netzwerkdrucker ausgeben. Via COM-Port kein Problem, aber parallel kommt statt der Grafik schon in einer Druckdatei nur 'ttttttt...' an ?!?! Bereits #27 und #46 bleiben
        auf der Strecke ;-( Als Druckertreiber verwende ich "Universal/Nur Text" im RAW-Format, eigentlich sollte das doch klappen :-(

        Können Sie noch einmal helfen ?

        Stephan Weise

        Comment

        Working...
        X