Escape-Sequenzen an Bondrucker

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
miwe-pos
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mi, 26. Dez 2018 18:13

Escape-Sequenzen an Bondrucker

Beitrag von miwe-pos »

Windows- und Gui-Druck ist ja sehr schön, doch hilft es nicht einen normalen Bondrucker (EPSON-kompatibel) anzusteuern!
Sicher der reine Text geht mit XbpPrinter() oder DCPRINT, doch Steuerzeichen mit denen der Drucker voll ausgereizt wird, können damit nicht übertragen werden. Roger Donnay und auch Jan haben eine Version mit ?/??-Befehlen kreiert. Geht aber nur sauber im CRT-Fenster. Bei mir habe ich mit Set Printer to ...-on und set console off sowie set device to Printer gearbeitet. Das geht selbst in einer GUI-Anwendung etliche Male gut. Doch dann kommt die Fehlermeldung einer unerlaubten Operation Qout() nicht erlaubt.
Meine Drucke laufen in einem extra Thread, daneben laufen noch etliche andere Threads für verschiedene Bildschirmanzeigen. Offensichtlich funken diese manchmal dazwischen, und dann kommt der Fehler!
Der Druckerthread überwacht auch im Mehrplatzsystem ob Druckjobs, die von anderen Stationen geschickt werden, vorhanden sind; um sie dann zu drucken.
Nun kann jemand fragen, muss das mit den Druckersteuerzeichen denn sein? Ja es muss, sonst könnte keine Kassenlade vom Program geöffnet werden!

Beste Grüße
Michael
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Escape-Sequenzen an Bondrucker

Beitrag von brandelh »

Wie ist denn der Anschluss?

Eventuell macht es Sinn alle Texte und Steuerzeichen in einen String zu packen und auf einen Schlag zu senden.
Ein CRT Fenster braucht man nicht sichtbar haben, wenn ein QOUT() nicht erlaubt ist, verliert es das CRT Fenster, stimmt SetAppWindow() ?
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Escape-Sequenzen an Bondrucker

Beitrag von ramses »

Dafür gibts eine spezielle Funktion in der Windows API sie heisst ExtEscape damit lassen sich beliebige Zeichen an den GUI-Drucker senden.
Also auch ESC-Codes.
Valar Morghulis

Gruss Carlo
miwe-pos
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mi, 26. Dez 2018 18:13

Re: Escape-Sequenzen an Bondrucker

Beitrag von miwe-pos »

Hallo Carlo/Ramses,

war eiene Woche verreist, deshalb erst jetzt meine Frage.
Wo finde ich ExtEscape? In den Alaska-Hilfetexten habe es nicht gefunden!

Gruß

Michael /miwe-pos
miwe-pos
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mi, 26. Dez 2018 18:13

Re: Escape-Sequenzen an Bondrucker

Beitrag von miwe-pos »

Hallo Brandelh,

ich habe den ganzen Druckjob(Dateiinhalt) in einem String einschließlich aller Steuerzeichen und dann mit ?? cstring zum Drucker
gesendet. Klappt ja auch ca. 99 Mal von 100, doch dann Fehlermeldung.
Der Drucker ist als Windows-Drucker entweder mit Schnittstelle USB001 oder COM-Schnittstelle installiert.
Von früher her Kann ich die Com[n] oder LPT[n] direkt ansteuern, da lief ja auch alles, wollte einfach moderner werden und Windows das Drucken
überlassen; hinzu kommt, dass RS232 bzw. LPT immer weniger bei modernen PC's anzutreffen sind.

Gruß

Michael/miwe-pos
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Escape-Sequenzen an Bondrucker

Beitrag von ramses »

miwe-pos hat geschrieben: Fr, 04. Sep 2020 17:19
Wo finde ich ExtEscape? In den Alaska-Hilfetexten habe es nicht gefunden!
Das sind Windows-API Funktionen. Damit zu Drucken ist nicht ganz einfach.

Wenn du Bon-Drucker über RS232 angeschlossen hast ist es wesentlich einfacher, schneller und problemlos möglich über den Com-Port zu drucken.
Auch wenn die PC selbst keinen RS-232 Port mehr haben gibt es viele USB to RS232 Konverter die Problemlos funktioneren und die auf dem PC einen COM Port zur verfügung stellen der auf "altbekannte" Art und Weise benutzt werden kann. Ab besten achtest du aber darauf dass der Adapter einen FTDI Chip hat. Andere führen oft zu gröberen Sorgen und Problemen bei der Datenübertragung.

Auf jedenfall, so denke ich musst du die Ausgabe von ? auf com_write() umschreiben ......
Valar Morghulis

Gruss Carlo
Antworten