Announcement

Collapse
No announcement yet.

Steuerzeichen an den Drucker schicken

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

  • Steuerzeichen an den Drucker schicken

    Hallo alle zusammen,

    ich versuche gerade über C# einen Labeldrucker anzusprechen. Ich habe aus der alten Anwendung alle benötigten Steuerzeichen bekommen die ich für den Ausdruck benötige, aber bei allen Beispielen die ich hier und über Google gefunden habe werden entweder ganze Objekte an den Drucker geschickt, oder über DrawString einzelne Textzeilen.

    Da ich kein Objekt habe und auch nicht wüsste wie ich ein Objekt mit dem erforderlichen Inhalt bekommen würde habe ich es mit der DrawString Methode probiert, allerdings mit dem Ergebnis das ich schon befürchtet hatte, es wird alles was ich ihm schicke als Text in Klarschrift ausgegeben und nicht als Steuerzeichen für den Drucker interpretiert.

    Wie kann ich hier vorgehen? Welche Objekte benötige ich und vorallem wie schaffe ich es die Steuerzeichen an den Drucker zu schicken und nicht den Text.

    [Nachtrag]
    Das wäre mal ein Beispielhafter Druckjob. Das Ergebnis ist dann ein Etikett mit grob folgendem Aufbau:
    oben in großen Ziffern 01-01-1
    darunter etwas kleiner 001 / 003
    darunter 600006

    ^Q50,2
    ^W100
    ^H5
    ^P1
    ^S4
    ^AD
    ^C1
    ^R20
    ~Q+0
    ^O0
    ^D0
    ^E12
    ~R200
    ^L
    Dy2-me-dd
    Th:m:s
    AE,104,0,5,5,0,0,01-01-1
    AH,322,240,1,1,0,0,001
    AH,560,240,1,1,0,0,003
    AH,482,238,1,1,0,0,/
    AD,32,324,2,2,0,0,600006
    E
    [/Nachtrag]

    [Nachtrag2] Den Code für die Druckersteuerzeichen an die der Source unten angepasst, nur damit es zusammen passt und sich keiner wundert [/Nachtrag2]

    Gruß Stephan
    P.S. Das ist mein erster Anlauf in C#, ich habe bisher nur mit VB6 gearbeitet
    Zuletzt editiert von Womble; 29.04.2010, 15:48.

  • #2
    Hallo nochmal,

    hatte ich ganz vergessen. Hier mein Code soweit ich diesen habe.

    [highlight=c#]
    private void EtikettDrucken(String Platz, String Anzahl, String Maximal, String Kunde)
    {
    Ausdruck.PrinterSettings.PrinterName = Wareneingang.Properties.Settings.Default.Drucker;
    if (Wareneingang.Properties.Settings.Default.Drucker. IndexOf("Godex") != -1)
    {
    // Godex Steuerzeichen
    sOutput = "^Q50,2|^W100|^H5|^P1|^S4|^AD|^C1|^R20|~Q+0|^O0|^D 0|^E12|~R200|^L|Dy2-me-dd|Th:m:s|AE,104,0,5,5,0,0," + Platz + "|AH,322,240,1,1,0,0," + Anzahl + "|AH,560,240,1,1,0,0," + Maximal + "|AH,482,238,1,1,0,0,/|AD,32,324,2,2,0,0," + Kunde + "|E";
    }
    else
    {
    // CAB Steuerzeichen
    // die fehlen noch, deswegen hier vorerst nochmal die vom Godex Drucker
    sOutput = "^Q50,2|^W100|^H5|^P1|^S4|^AD|^C1|^R20|~Q+0|^O0|^D 0|^E12|~R200|^L|Dy2-me-dd|Th:m:s|AE,104,0,5,5,0,0," + Platz + "|AH,322,240,1,1,0,0," + Anzahl + "|AH,560,240,1,1,0,0," + Maximal + "|AH,482,238,1,1,0,0,/|AD,32,324,2,2,0,0," + Kunde + "|E";
    }
    Ausdruck.Print();
    }

    private void Ausdruck_PrintPage(object sender, PrintPageEventArgs e)
    {
    int linesPrinted = 0;
    int x = e.MarginBounds.Left;
    int y = e.MarginBounds.Top;
    Brush brush = Brushes.Black;
    String[] lines = sOutput.Split('|');

    while (linesPrinted < lines.Length)
    {
    e.Graphics.DrawString (lines[linesPrinted++], lblMeldung.Font, brush, x, y);
    y += 15;
    if (y >= e.MarginBounds.Bottom)
    {
    e.HasMorePages = true;
    return;
    }
    else
    {
    e.HasMorePages = false;
    }
    }
    }
    [/highlight]

    Comment


    • #3
      Wie sollte der Drucker auch den Unterschied zwischen einem Steuerzeichen und einem Ausdruck erkennen?

      Früher....als man Drucker so ansprach, mussten diese erst in einen entsprechenden Programmiermodus gesetzt werden...je nach Drucker
      Christian

      Comment


      • #4
        Welcher Druckertreiber wird verwendet? Wenn der Labeldrucker keinen eigenen hat, dann den Generic Printer (Text only) verwenden. Weiters müssen die Win32-Spooler-Funktionen verwendet werden, siehe hier.

        bye,
        Helmut

        Comment


        • #5
          Hallo Helmut,

          vielen Dank, das war genau das was ich gesucht habe.

          Gruß Stephan

          Comment

          Working...
          X