Announcement

Collapse
No announcement yet.

Escape Sequence

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

  • Escape Sequence

    Hallo, ich möchte eine Escape Sequence an den Drucker schicken und habe da nur das in der Hilfe gefunden.

    int Escape(
    HDC hdc,
    int nEscape,
    int cbInput,
    LPCSTR lpvInData,
    LPVOID lpvOutData);

    Hintergrund:
    Ich habe einen Labeldrucker und es müssen immer jeweils 2 Labels gedruckt werden und dann soll der Labeldrucker die Labels abschneiden.
    Um auf das nächste Label zu kommen benutzte ich die Methode NewPage(); von TPrinter. Das wurde aber vom Drucker als Job Ende->Schneiden ausgelegt. Die Druckerhotline sagte isch müßte die Escape Sequence F an den Drucker schicken. In der Hilfe fande ich auch unter Escape, dass F was Seitenvorschub bedeutet. Aber wie shicke ich die Escape Sequence F an den Drucker?
    Danke für Eure Hilfe

  • #2
    Hi Thomas,

    hiermit kannst du jedes Zeichen drucken was du möchtest:

    <PRE>
    HANDLE PrnHandle;
    DWORD size;
    char Help[1024] = {0};

    sprintf(Help,"%cdeine Escapesegenz",27);

    OpenPrinter("Name deines Printers",
    &PrnHandle,
    NULL);
    if (PrnHandle != NULL)
    { DOC_INFO_1 DocInfo;
    DocInfo.pDocName = "Deine SessionName";
    DocInfo.pOutputFile = NULL;
    DocInfo.pDatatype = "RAW";

    if (StartDocPrinter(PrnHandle,1,(LPSTR)&DocInfo) <= 0)
    ErrMsg("StartDocPrinter");
    else if (StartPagePrinter(PrnHandle) <= 0)
    ErrMsg("StartPagePrinter");
    else if (!WritePrinter(PrnHandle,Help,strlen(Help),&size))
    ErrMsg("WritePrinter");

    if (!EndPagePrinter(PrnHandle))
    ErrMsg("EndpagePrinter");
    else if(!EndDocPrinter(PrnHandle))
    ErrMsg("EndDoc");

    ClosePrinter(PrnHandle);
    }
    </PRE>

    ErrMsg ist irgendeine Ausgabe mit der übergebenen Fehlermeldung.

    Das sieht alles nicht so schön aus, aber es ist einfach recht wenig Platz in der Eingabebox für den Post. Sorry!

    Viel Spaß damit - Pete

    Comment


    • #3
      Danke das klappt schon ganz gut. Allerdings benutze ich die VCL und da klappt es nicht.

      TPrinter* printer = Printer();
      printer->BeginDoc();
      printer->Canvas->TextOut(300, 300, "\x00c" "So nicht");
      printer->EndDoc();

      Ich muß noch auf die Labels ein Barcide drucken und da benutze ich das Canvas vom Printer. Daher habe ich dann ein anderes Problem wenn ich nu weg von der VCL gehe.
      Eine Idee?

      Dank

      Comment


      • #4
        Hi Thomas,

        kann der Labelprinter die Barcodes nicht selbst über einen Befehl drucken? So was habe ich Letztens auch mal gehabt. Mit TextOut kann man natürlich keine Escape Sequenzen an den Drucker schicken, da man da ja nur irgend welche Zeichen auf die "Leinwand" malt.

        Bye - Peter Tuschi

        Comment


        • #5
          Also in der Hilfe von der Komponente steht nur etwas vom Canvas. D.h ich kann ur auf einem Canvas den Barcode ausgeben.
          Ich habe eine Artikel für Delphi gefunden den ich leider nicht ganz auf C++ bekomme. Da wird erklärt wie eine Escape Sequence an den Drucker geschickt wird.

          http://www.swissdelphicenter.ch/de/showcode.php?id=71

          Comment


          • #6
            Hi Jürgen,

            ich hatte mich wohl etwas undeutlich ausgedrückt. Ich meinte, ob im Handbuch des Druckers beschrieben wird, wie man Barcodes mit bestimmten Befehlen drucken kann. Ich habe letzens etwas für einen Zebra-Labeldrucker programmiert und da gab es spezielle Steuercodes um einen Barcode auszudrucken. Das geht natürlich nicht mit TPrinter(). Dazu kannst du nur den Code benutzen, den ich schon gepostet habe.

            Ich bezweifle, daß das Beispiel vom Delphicenter funktioniert. Da werden Variablennamen mal groß und klein geschrieben, so daß der Code sicher kaum übersetzbar sein dürfte. Wenn du aber die Escape Funktion nutzen willst, tipp einfach Escape in den Editor und drücke F1. Da wird die Funktion erklärt. Das sieht auch nicht so schwierig aus.

            Bye - Pete

            Comment

            Working...
            X