2009-06-18 37 views
1

Ich möchte eine Seite zeilenweise auf Dotmatrix-Drucker (Epson LQ-300 Printer) drucken. Das bedeutet, ich werde eine Zeile Text an den Drucker senden und nach einer Pause werde ich eine andere senden , jetzt sollten beide Linien auf einer Seite sein, nicht auf zwei Seiten.Zeile für Zeile Drucken in Java

Bitte zeigen Sie mir, wie ich das erreichen kann.

Grüße.

Antwort

2

Sie benötigen wahrscheinlich zuerst eine Kommunikationsbibliothek - parallele oder serielle Schnittstellen. Es gibt eine ziemlich alte Sun-Implementierung von Java 1.2 Tage, aber wir verwenden sie immer noch erfolgreich mit Java 5. Die Schnittstellen sind im Paket javax.comm definiert. Verwenden Sie das als Ausgangspunkt.

Da Sie nicht mehr Informationen über Ihre Situation ist die folgende, etwas vage, aber hoffentlich hilfreich trotzdem:

Com/Serielle und parallele Schnittstellen sind abhängig von der Plattform, ein Stück nativen Code erfordern. Für Linux gibt es das RxTx-Projekt, das eine Implementierung bereitstellt.

Dann schreiben Sie einfach Daten in den Port, sobald Sie es mit den entsprechenden Parametern geöffnet haben (es gibt einen Port-Enumerator), entsprechend dem Protokoll, das der Drucker versteht. Bei den meisten Epson-Druckern ist dies der ESC/P (2) -Standard. Das Drucken mehrerer Zeilen reinen Textes sollte so einfach wie das Drucken auf dem Bildschirm sein, sobald die Einrichtung abgeschlossen ist.

+0

Wenn Sie nur reinen Text drucken, senden Sie den Text a \ r. Abhängig von den internen Druckereinstellungen wird entweder ein Zeilenvorschub hinzugefügt oder nicht. Wenn der Drucker das Papier nicht weiterfährt, fügen Sie ebenfalls ein \ n hinzu. –

0

Um ehrlich zu sein, habe ich nie versucht, einen Drucker selbst zu senden, aber ich habe etwas googeln (oder?) Und this tutorial sieht vielversprechend aus.

Jetzt, in Bezug auf die letztere Anfrage, möchten Sie einfach einen Textpuffer erstellen, in den Sie Ihren Text senden, und der seinen Inhalt zu einem späteren Zeitpunkt an den Drucker ausgeben kann. Bitte korrigieren Sie mich, wenn ich Ihr Problem zu sehr vereinfacht habe =)