Steuerzeichen an Windows-Drucker senden

Moin,

ich versuche auf einen Bon-Drucker Epson TM 88IIP zu drucken. (Windows XP mit Graphic / Text only Druckertreiber). Ich möchte nun Druckersteuerzeichen an den Drucker senden (Fett, Kursiv, Unterstrichen usw.) Die Steuerzeichen habe ich, wie bekomme ich es hin, das ich diese an den Drucker senden kann ? Ich möchte Plain-Text an den Drucker versenden! Der Weg über das Graphics-Object und normaler Druckerteiber ist zu langsam (es dauert bis zu 10 Sek. bis der Drucker anfängt und dann wird nach jeder Zeile gestoppt. Das alte DOS-Programm hat wärend dessen, schon den 2. Bon gedruckt). Zusätzlich kapselt es mir meine Steuerzeichen und druckt diese als Symbole an.

Frage: Wie drucke ich ASCII-Daten ohne Einmischung des Druckertreibers oder des Graphic-Objects unter Windows aus ?

Gruß von der Nordseeküste
Frank

Wie ist der Drucker denn angeschlossen? Kannst du direkt Zeichen an ihn über einen Socket senden?

LPT1 oder USB. Dos-Fenster auf DIR > LPT1 funktioniert.

Schon mal versucht LPT1 als Datei zu öffnen und da was rein zu schreiben?

Oder via Serial?
http://documentation.xojo.com/index.php/Serial

Schon mal versucht LPT1 als Datei zu öffnen und da was rein zu schreiben?
Bekomme ich eine IOexcetion 2

Oder via Serial ? Kennt kein LPT mehr (2006 noch möglich jetzt nicht mehr).

Dann USB? Bin leider nicht sehr firm in Windows.

Der Drucker muss als LPT1 oder über den Druckertreiber angesprochen werden. Die Komunikation über USB erfolgt per USB To LPT Schnittstelle, d.h. das es wird eine LPT Schittstelle emuliert.

Die Frage war mehr: Wie drucke ich ASCII-Daten ohne Einmischung des Druckertreibers oder des Graphic-Objects unter Windows aus ? Gibt es eine Möglichkeit, das Graphics-Object daran zu hindern, alles als Graphik an den Drucker zu schicken, sondern statt dessen alles als ASCII zu senden? Oder geht das mit dem StyledTextprinter ? Wenn ja, wie ?

Prinzipell macht der Generic Text only Drucker das schon. Wenn man den Drucker auf File stellt, wird eine lupenreine ASCII-Datei erzeugt. Dann kommt das graphics Objet und kapselt mir meine Zeichen und der Druck ist langsam und es werden die Steuerzeichen nicht ausgeführt sondern angedruckt.

So weit mir bekannt ist, kannst du unter Xojo den LPT Port nicht ansprechen (evtl mit Declares).

Ich habe meinen Epson TM-T88III über Serial mit USB Adapter angeschlossen. Funktioniert wunderbar unter Xojo.

Der Kunde hat die Hardware und ich muss sehen wie ich das Problem ohne nderung der Hardware gelst bekomme. Die Frage ist, wie bekomme ich ASCII Zeichen an einen Drucker bergeben, der per LPT1 angebunden ist. Fr den TM-88III gibt es einen speziellen Druckertreiber, der Austausch-Zeichenstze (Zeichen Satz A = 10 cpi, Zeichensatz B = 12 cpi usw.) hat. Ich muss aber einen TM-88IIP ansteuern. Einen aktuellen Druckertreiber gibt es nicht, der 88III Treiber lt sich nicht installieren. Ich muss also irgendwie auf den Druckertreiber zugreifen und die ASCII-Zeichen ohne nderungen an Ihm vorbei leiten. Bei anderen Programmiersprachen wird empfohlen, den “Graphics Text Only” zu installieren und alles selber zu machen. Das mchte ich ja gerne, aber wie ?

Also die LargeBinaryStreamMBS Klasse im MBS Plugin kann durchaus Dateien via Pfad öffnen.
Damit müsste es möglich sein zum LPT1 zu schreiben.

so geht es:

dim b as LargeBinaryStreamMBS = LargeBinaryStreamMBS.Open(“LPT1”, true, 3)

b.Write “Hello World”
b.Close

Das Beispiel in ein neues Desktop-Programm eingefügt und ausprobiert. Programm bleibt beim b.Write stehen und nach einiger Zeit kommt ein illigal exeception. b ist nach dem Dim NIL.

Also liefert bei dir die Open Funktion kein Objekt, sondern nil?
Sind das aktuelle Plugins?
LPT1 ist bei dir der richtige Name?

Es funktioniert doch. Danke!

Gestern Abend war wohl durch das Rumprobieren der Druckdienst abgeschmiert. Heute morgen, nach einem Neustart, luft die Routine.

Danke nochmals und guten Rutsch ins neue Jahr

Frank Jrgensen

Gerne.

Ein Frage htte ich noch an Christian,

in deiner Doku ist der 3. Parameter nicht erkrt. Da steht nur WinShareMode = 0, Du schreibst aber bei deinem Beispiel 3.

LargeBinaryStreamMBS.Open(“LPT1”, true, 3)

Welche Parameter gibt es noch, und welche Bedeutung haben diese ?

Danke
Frank

Ich hab’s schon ergnzt:

For WinShareMode, you can pass 1 for shared reading, 2 for shared writing, 4 for shared deletion. Or combine those. Passing zero prevents sharing.

Also 3 erlaubt einfach lesen/schreiben fr andere. Denn ohne die Erlaubtnis zum Sharing, bekommst du den Port nicht mal auf.

Darum ging es:

dim b as LargeBinaryStreamMBS = LargeBinaryStreamMBS.Open(“LPT1”, true, 3)

b.Write “Hello World”
b.Close

Sorry Christian, das ich das Thema nochmal ansprechen muss. Wie drucke ich auf einen umgeleiteten Drucker ?

NET SHARE LPT5: \\Server\Druckerfreigabename

Wenn ich dann mit LargeBinaryStreamMBS.Open(“LPT5”, true, 3) versuche den Drucker anzusprechen, bekomme ich NIL. Welche Routine deiner unendlichen Sammlung muss ich dann nehmen ?

Gru
Frank

Hast du es mal mit “\\.\LPT5” probiert oder direkt mit “\\Server\Druckerfreigabename”?