Frage

Ein Etikettendrucker wird durch das Senden eine Reihe von rohem ASCII-Zeichen gesteuert (die ein Etikettenformat). Wie folgt aus:

 string s = "\x02L\r" + "D11\r" + "ySWR\r" + "421100001100096" + date + "\r" + "421100002150096" + time + "\r" + "421100001200160" + price + "\r" + "E\r";

 RawPrinterHelper.SendStringToPrinter(printerName, s);

Diese Variante hartcodierte funktioniert gut.

Jetzt möchte ich die Steuerzeichenfolge in eine TXT-Datei setzen und es während der Laufzeit zu lesen. Wie folgt aus:

        string printstr;
        TextReader tr = new StreamReader("print.txt");
        printstr = tr.ReadLine();
        tr.Close();

Aber in diesem Fall druckt der Drucker nichts.

Es scheint, fügt hinzu, dass StreamReader etwas anderes zu dieser Zeichenfolge

(Wenn ich legte den Lese String in einen MessageBox.Show(printstr); sieht alles in Ordnung. Obwohl diese Art und Weise wir keine Steuerzeichen hinzugefügt sehen).

Was für eine Lösung für dieses Problem sein könnte?

War es hilfreich?

Lösung

Sieht aus wie ein Zebra Etikettendrucker, ich habe den Unmut hat. Das erste, was Sie fix brauchen, ist die Art und Weise Sie die Print.txt Datei generieren. Sie müssen eine Zeile für jeden Abschnitt der Befehlsfolge schreiben, die mit \ r beendet ist. Zum Beispiel sollte Ihre Befehlsfolge wie folgt geschrieben werden:

printFile.WriteLine("\x02L");
printFile.WriteLine("D11");
printFile.WriteLine("ySWR");
printFile.WriteLine("421100001100096" + date);
printFile.WriteLine("421100002150096" + time);
printFile.WriteLine("421100001200160" + price);
printFile.WriteLine("E");
printFile.WriteLine();

Jetzt können Sie Readline () verwenden, wenn Sie das Etikett von Print.txt lesen. Sie müssen mehrere Zeilen lesen Sie das komplette Etikett zu erhalten. Ich habe eine leere Zeile am Ende, können Sie verwenden, wenn Sie die Datei lesen zu erkennen, dass Sie alle Linien bekamen, die das Etikett erstellt. Vergessen Sie nicht, append „\ r“ wieder, wenn Sie es an den Drucker senden.

Andere Tipps

Ihr Code Anrufe tr.ReadLine() einmal, aber es sieht aus wie Sie in dieser Zeichenfolge mehrere Zeilen haben.

Es könnte sein, dass die Stream es in einem Unicode-Format lesen. By the way, sind Sie in nur einer einzigen Zeile zu lesen ... müssen Sie Iterierte die Linien statt ... Ihre beste Wette es auf diese Weise zu tun wäre:

string printstr;
TextReader tr = new StreamReader("print.txt",System.Text.Encoding.ASCII);
printstr = tr.ReadToEnd();
tr.Close();

oder als Binärdatei lesen und die ganzen Brocken in eine Reihe von Bytes liest stattdessen Fehlerprüfung verzichtet wird.

System.IO.BinaryReader br = new System.IO.BinaryReader(new StreamReader("print.txt", System.Text.Encoding.ASCII));
byte[] data = br.ReadBytes(br.BaseStream.Length);
br.Close();

Edit: Nach dem rem 's Kommentar dachte ich es am besten, diese zusätzlichen Schnipsel hier aufzunehmen ... das auf aus dem vorherigen Schnipsel folgt, wo die Variable data referenziert wird ...

string sData = System.Text.Encoding.ASCII.GetString(data);

Hope, das hilft, Freundliche Grüße, Tom.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top