Michael Heinrich schrieb:
Mit meinem HP DeskJet 870Cxi, Tintenstrahldrucker, konnte ich,
als der noch an der parallelen Schnittstelle (lpt1) des alten
Win95-Rechners angeschlossen war, problemlos per
copy con lpt1
zeilenweise drucken. Wenn ich genug von dieser Spielerei hatte
und die per Tastatur eingegebene Datei per STRG-Z abschloss, ist
das bereits bedruckte Papierblatt nicht mehr im Drucker
festgehalten, sondern zur Entnahme aus dem Drucker ausgeworfen
worden.
In der virtuellen Win95-Maschine, die den selben Drucker
ebenfalls am lpt1-Anschluss wähnt, während er in Wirklichkeit
über einen Adapter "USB zu paralleler Schnittstelle" am
Wirtssystem angeschlossen ist, funktioniert das auch heute noch.
Es funktioniert mit diesem Adapter und diesem
Tintenstrahldrucker auch, wenn ich statt der
DOS-Eingabeaufforderung der virtuellen Maschine die
Eingabeaufforderung des Win7-Wirtssystems verwende.
Beim Drucker, der auf Papier druckt, sieht man eben das zu
beschreibende Papier schon, bevor der Druckauftrag beendet und
der Drucker mit dem Schreiben fertig ist, was aber nichts damit
zu tun hat, obs ein Nadel- oder ein Tintenstrahl-Drucker ist.
Der pdf-Drucker kann die pdf-Datei erst dann fertigschreiben
wenn er alle Daten hat, die in die pdf-Datei geschrieben werden
sollen, was bei der copy-con-lpt1-Methode erst der Fall ist
nachdem man das Dateiende-Zeichen (STRG-Z) eingegeben hat.
Und im Gegensatz zum Papier im Drucker, welches auch während des
Druckvorganges schon von einem Betrachter angeschaut werden
kann, kann eine pdf-Datei erst von einem
pdf-Betrachtungsprogramm für den Betrachter dargestellt werden
nachdem sie vollständig geschrieben/fertiggeschrieben ist.
Ab und zu arbeite ich an einem Win7-Rechner, an den ein HP
OfficeJet per USB angeschlossen ist. Wenn dieser Drucker im
Netzwerk freigegeben ist, können -- auch von besagtem
Win-7-Rechner aus -- von der Eingabeaufforderung aus per
Copy-Befehl Textdateien zu ihm geschickt werden, die er dann
auch ausdruckt. Zeilenweise. Wenn ich beim Copy-Befehl als
"Quelldatei" die Konsole nehme, druckt er immer dann die gerade
an der Konsole eingegebene Zeile, wenn ich an der Eingabekonsole
die Eingabetaste drücke.
Es gibt aber zB auch solche Drucker, bei denen es nicht
funktioniert, ihnen Dateien per copy-Befehl zu schicken (egal ob
man dabei nun die Konsole oder eine irgendwo gespeicherte
Textdatei als Quelldatei angibt), weil sie mit den ihnen so
zugeschickten Daten nichts anfangen können, weil es GDI-Drucker
sind, die immer "erwarten", dass ihnen zu druckende Daten im von
Windows verwendeten GDI-Format zugeschickt werden. Dabei ist
aber vom Prinzip her die Frage, obs Nadel- oder Tintenstrahl-
Drucker sind, weniger relevant als die Frage, was für Daten
diese Drucker auf welche Weise verarbeiten können.
Es kann gut sein, dass im GDI-Format für Drucker immer ganze
Seiten vorbereitet werden und dass so gesehen GDI-Drucker
"seitenorientiert" sind, aber im Moment bin ich zu faul, diese
von meiner Seite aus eher als Vermutung/Spekulation
aufzufassende Aussage zu verifizieren geschweige denn
nachzuforschen, wie man sie verifiziert. Ich bin kein
GDI-Experte.
> Lösung um einen zeilenorientierten Drucker zu bekommen:
>
> versuche, den Drucker in der VM auf eine Com-Port zu leiten, den du über
> VirtualBox mit einem virtuellen Com-Port auf dem Win7Rechner verbindest,
> auf den du unter Win7 mit einem Terminalprogramm verbindest, z.B. ZOC.
>
> Dann müsste das Terminalprogramm die Zeilen zeigen. man kann die dann
> manuell abspeichern.
In <
http://pages.cs.wisc.edu/~ghost/redmon/en/redmon19.htm>
steht:
| "RedMon can be used with any program that accepts data on
| standard input"
VirtualBox stellt bisher offenbar einen im Wirtssystem mittels
RedMon als RPT1 eingerichteten virtuellen Druckeranschluss dem
Gastsystem als parallele Schnittstelle lpt1 zur Verfügung. (Wie
man allein diesen Teil hinbekommt, interessiert mich sehr.)
Dieser RPT1-Anschluss wiederum ist offenbar mittels RedMon so
eingerichtet, dass die dort eingehenden Daten an das auf dem
Wirtssystem installierte Programm GhostScript mit
pdfwrite-Funktion gehen.
GhostScript (mit pdfwrite-Funktion) wiederum versteht/
interpretiert nur PostScript. Deshalb müssen die Daten, die an
diesen RPT1-Anschluss gehen, im PostScript-Format vorliegen.
Im Win7-Wirtssystem wird der HP ColorLaserJet-Druckertreiber
verwendet, um die Windows-intern im GDI-Format vorliegenden
Daten in PostScript umzuwandeln und das Umwandlungsresultat an
den RPT1-Anschluss zu leiten.
Wenn das so weit tatsächlich funktioniert, könnte man, um im
Wirtssystem einen zeilenorientierten virtuellen beim
zeilenweisen Drucken beobachtbaren "Drucker" zu bekommen, im
Wirtssystem unter RedMon den RPT1-Anschluss vielleicht so
einrichten, dass die dort eingehenden Daten nicht an
GhostScript, sondern an eine Shell mit einem aufgerufenen Befehl
wie "type" oder "echo" oder "more" gehen.
Dann könnte man im Gastystem den durch die virtuellen Maschine
bereitgestellten lpt1-Anschluss nutzen anstatt an diesen
lpt1-Anschluss gerichtete Datenströme bereits innerhalb des
Gastsystems irgendwie umleiten zu müssen. Die Um- und
Weiterleitung wäre eine Sache, die allein im Wirtssystem
bewerkstelligt werden müsste und so gesehen das Gastysstem nicht
belasten würde.
Man hätte aber immer noch keine Antwort auf die Frage, wie man
bzgl in den virtuellen Maschinen/Gastsystemen laufender
DOS-Programme verfahren soll, die ihre Ausgaben an den
Druckeranschluss mit druckerspezifischen Escape-Sequenzen
versehen -- der OP hat bereits die Spezifikationen TTY,
Epson-ESC/P, NEC, IBM/ProPrint, HP-PCL und HP-GL genannt.
Ich habe es übrigens bisher nicht geschafft, unter Oracle
VirtualBox ein Gastsystem mit Win3.1 oder Win95 oder Win98 so
einzurichten, dass es sich tatsächlich mit dem Wirtssystem Win7
vernetzen lässt. In der Netzwerkumgebung von Win7 werden zwar
die Gastsysteme als ebenfalls im Netz befindliche Rechner
angezeigt, aber wenn man auf deren Freigaben zugreifen will,
hagelt es Fehlermeldungen, weil die Ressourcen nicht verfügbar
seien. Mit vmware habe ich diesbezüglich aber keine Probleme.
Ulrich