Ich möchte mit einem alten DOS Programm, das von XP gestartet wird einen USB Drucker ansteuern. Alle Informtionen die ich bisher finden konnte beschreiben das Problem mit einer LPT-Schnittstellen und als Netzwerkdrucker.
Mein Programm geht aber über die COM 1 Schnittstelle.
Jetzt müsste man die COM 1 Schnittstelle irgend wie auf USB umleiten.
Vielleicht kann jemand helfen.
Alternative Betriebssysteme 1.414 Themen, 9.994 Beiträge
Hi!
ich bin mir nicht sicher, ob man das so hinbekommen wird. Ich habe zwar bereits dieses Jahr einmal einen USB-Drucker als LPT1 in einem Batch unter WinXP angesteuert, dabei aber vermutlich die Methode verwendet, die du als "Netzwerkdrucker" bezeichnest.
Es war früher unter DOS in der Tat möglich die Ausgabe in die Druckausgabe umzuleiten, meine Bücher sprechen aber nur von der Möglichkeit die Ausgabe von LPTx auf COMy umzuleiten, d.h. wenn ein Programm LPT1 ansteuert, konnte man diese Ausgabe auf COM2 umleiten (als Beispiel).
Für diese Zuweisung/Umleitung war der Befehl MODE zuständig.
Ich bin mir wie gesagt nicht sicher, ob man deinen Wunsch umsetzen kann. Zumindest wüsste ich jetzt nicht wie. Wenn ich dieses Problem vorgelegt bekommen würde, dann würde ich deutlich tiefer graben und versuchen folgende Fragen zu beantworten:
1. Was ist das für ein USB-Drucker?
2. Um welches DOS-Program geht es?
3. Was macht dieses Programm?
4. Was genau gibt es aus?
Das ist technisch gemeint: vermutlich ist das Programm auf eine spezielles Gerät angepasst, dass ursprünglich an COM1 angeschlossen war. Welche COM-Schnittstellen-Parameter werden da verwendet und erwartet das Gerät spezielel Steuercodes?
Ich habe selbst schon unmögliche Dinge, wie eine Zentrifuge oder eine Waage über COMx angesteuert, da musste man die COM-Schnittstelle passend einrichten und dann Steuerkommandos im Klartext absetzen. Letztendlich führt das alles zur 5. Frage:
5. Welches Gerät an COM1 wurde da ursprünglich angesprochen?
Ich vermute, dass 5. der wichtigste Punkt ist.
Es kann jetzt natürlich sein, dass ich das alles zu kompliziert sehe und ein anderer Nickles.de User jetzt gleich eine passende Lösung parat hat - ich weiss ja auch nicht alles. ;-)
Bis dann
Andreas
Hallo Andreas, dank bisher für die Mühe:
Hier zu deinen Fragen:
1: USB Drucker Brother MFC 240 C
2: Ein DOS Programm das meine Kundenkartei betreut seit 1990:
3: Es kann Rechnungen drucken, Arbeitsblätter,
Serienbriefe,Texte aus einem Editor
Programmiert in Clipper, das war mal die Diplomarbeit von einem meiner Freunde.
4: über diese Punkte kenne ich mich nicht aus. Mein freund meint, das er damals für diesen Drucker prgrammiert hat, und das es damals wie heute in DOS keinen Befel für USB gibt oder gab, weil es USB noch nicht gab.
5: Der Drucker mit dem es jetzt funktioniert ist ein NEC Pinwriter P2Q.
Für mich ist es sehr wichtig, weil meine ganze Kundenkartei
im Dos vorhnaden ist und alles gut funktioniert. Nur wenn der drucker den Geist aufgibt, was dann.
Vieleicht hilft das ein bischen weiter.
Gruß Jürgen
Hi!
Bist du sicher, dass der Drucker mit einem seriellen Kabel an der COM1-Schnittstelle angeschlossen wird und auch so im Programm angesteuert wird?
Hmm, viel habe ich nicht gefunden zu diesem Drucker. NEC-USA hat einige Dokumente versammelt.
http://printers.necam.com/main.cfm?thePage=http://printers.necam.com/public/printers/Pwriter/p32/spec1.htm&sp=329§ion_id=301
Sieht so aus, als ob die P2s wirklich mit seriellen Schnittstellen ausgestattet waren.
Das grösste Problem wird sein, dass das Clipperprogramm vermutlich Steuercodes für die Papierformatierung ausgeben wird, die der neue Drucker bzw. dessen Drucktreiber verstehen und umsetzen können müsste. Ich würde stark vermuten, dass der Brother das nicht kann (habe ich nicht nachgelesen; die Probleme beginnen schon damit, dass ich nicht herausbekommen habe, welchen Druckdialekt der P2Q nutzt).
Damit hilft auch der Praxistipp nichts, einen Drucker auszuwählen, der kompatibel ist.
Das beste wäre, jemand würde sich die Clipperanwendung vornehmen und sie in einer modernen Datenbank unter Linux oder Windows nachbilden. Die Daten liegen vermutlich in einem xBase-Format vor und dürften daher konvertierbar sein. Ob es Datenbanktools gibt, die alte Clipperanwendungen inportieren können, weiss ich leider nicht.
Mein Tipp wäre (und das ist ernst gemeint!): suche dir einen Studenten, der dir deine Anwendung in ein modernes Programm überführt.
Wenn das nicht geht, dann bitte deinen Freund zu prüfen, ob er die Drcukerausgabe in eine Textdatei umleiten kann. Das ist nicht schön, würde dir aber helfen, die Texte in anderen Anwendungen zu öffnen und sie dann von Dort zu drucken.
Versuchen einen anderen Drucker zum Laufen zu bringen halte ich für wenig erfolgversprechend. (Das ist ernst gemeint!)
Wenn du es mit einem neuen Drucker versuchen willst, dann soll dein Freund die Druckausgabe auf LPT1 umändern und alle NEC spezifischen Steuercodes entfernen. Dann könnte man evtl. andere Drucker über einen Text-Drucktreiber ansprechen oder über die bereits angesprochene Netzwerk-Druckmethode beliebige Drucker ansteuern (wobei ich jetzt auch nicht genau weiss, ob das mit GDI-Druckern geht).
Sorry, eine vernünftige Lösung für deinen Wunsch fällt mir irgendwie nicht ein...
Bis dann
Andreas
Hallo Andreas,
danke für die Mühen,
ich werde jetzt die Vorschläge meinem Programierer von damals vorlegen, und mich dann nach gegebener Zeit wieder melden, was er dazu meint.
Gruß Jürgen
Hallo, habe beide Tipps an meinen Programierer geschickt.
Er gibt mir folgende Antwort: zum Verständnis:
Lösung 1 ist die von Andreas: Lösung 2 die von Jürgen.
Bin immer wieder erstaunt, dass du noch mit dem alten DOS-Programm arbeitest. Bist du sicher dass du auch dabei bleiben willst.
Wenn es mittlerweile eine andere Freeware auf Windowsbasis gibt, dann wäre eine Konvertierung der Daten sicher kein Problem (Lösungsvorschlag 2). Das Problem wird dann nur sein, dass die Windowsprogramme unheimlich viel können (was man nicht braucht) und das was du brauchst geht dann wieder nicht. Das Druckerproblem löst sich dann allerdings von selbst.
Wenn du aber bei dem DOS-Programm bleiben willst, dann geht Lösung 1 in die richtige Richtung.
Die Problematik aus Lösung 2, dass irgendwelche Steuerbefehle nicht passen halte ich für lösbar, im Zweifelsfall wird das DOS-Programm so geändert, dass keine Steuerbefehle kommen. Allerdings glaube ich schon dass diese grundsätzlichen Befehle auch von heutigen Druckern in bestimmten Emulationen richtig interpretiert werden. Wenn der USB Drucker mal einen „Zucker“ macht, dann können wir uns das auch mal anschauen.
Aus dem DOS Programm wird direkt LPT1 angesprochen (Parallelport), das ging zu Zeiten von DOS noch direkt und ohne Treiber. Man konnte Ausgaben welche mit einem „@say“ Befehl normalerweise auf den Bildschirm landeten einfach auf LPTx umleiten. Anscheinend hat der Kollege mit Antwort 1 da schon mal etwas hinbekommen. Ich glaube man konnte da auch die Ausgabe auf die COM1 umleiten, was dam USB relativ nahe kommt, das muss ich mir im Handbuch heute Abend nochmal genauer anschauen.
Ich glaube der Experte mit Antwort 1 hat das Problem besser erfasst. Wenn er jetzt noch davon ausgeht, dass ihm der Druckinhalt erst mal egal sein soll und er nur den Drucker zu einer Bewegung verhelfen soll, dann haben wir die Lösung.
Ich schau mir das die nächsten Abende mal bei einem Bier genauer an.
Pragmatische Lösung wäre ja auch, bei ebäh einen Ersatzdrucker mit Parallelschnittstelle zu besorgen, wobei das Problem auch ist, dass die Parallelschnittstelle auf PC’s irgend wann sterben wird. Auf den modernen Laptops gibt’s den Port schon nicht mehr.
Hi!
Kurz zur Erklärung: man kann unter Windows XP (vermutlich auch unter 2000 und Vista&7; ich habe es nur bei XP selbst durchgezogen) einem USB-Drucker über eine Netzwerkfunktion, dem LPT1-Gerät zuordnen.
LPT1 ist ein altes aus DOS-Zeiten stammendes Gerät, der erste Drucker am Rechner. In XP fehlt diese Zuordnung.
Der gewünschte USB-Drucker muss in Windows installiert sein. In den Einstellungen des Drucktreibers muss man den Drucker nun für das Netzwerk freigeben. Dabei wird ein Freigabename eingetragen. Dieser Name sollte kurz und griffig sein (z.B. NRMP).
Danach geht man in die CMD-Shell (über Start/Ausführen, dort CMD eintragen).
Nun muss man den Netzwerknamen des eigenen Rechners herausfinden. Das geht indem man in der CMD-Shell "hostname" eingibt. Nehmen wir an der Rechner nennt sich "BUEROPC"
Der USB-Drucker wird dann wie folgt mit LPT1 verbunden:
net use \\BUEROPC\NRMP /persistent:yes
Das "/persistent:yes" soll das fest eintragen.
Wenn die Anwendung schon auf LPT1 druckt, dann sollte das die Ausgabe auf den angeschlossenen Drucker umleiten. Was er dann daraus macht, müsste man ausprobieren.
Bis dann
Andreas
Wenn man dies so macht, landen die Druckaufträge in der Warteschleife von XP,, aber der Drucker zuckt nicht einmal.
Vielleicht weiß noch jemand eine andere Lösung
Gruß Jürgen
Wie Andreas schon anmerkte:
1. Was ist das für ein USB-Drucker?
Das ist überhaupt zunächst der wichtigste Punkt: Kann der jetzt angeschlossene Drucker überhaupt mit den gelieferten Daten etwas anfangen, z. B., weil sowohl das DOS-Programm wie auch der Drucker "die gleiche Sprache sprechen", z. B. PCL, Postscript, Epson FX (ESC/2), IBM Proprinter, von mir aus auch reiner Text.
Gruß
Jürgen
Hallo Jürgen;
bisher arbeite ich für das DOS Programm mit einem alten Nadeldrucker NEC Pinwriter P2Q. Dieser soll ersetzt werden durch meinen USB Drucker mit dem ich aus XP heraus drucke, so das ich nur noch einen Drucker brauche, und als Vorbeugung falls der alte Nadler defekt wird.
USB Drucker ist ein brother MFC 240 C.
Vielleicht kommen wir so weiter. Im voraus vielen Dank
MfJ Jürgen
Hallo,
gut, in der Kombination ist die Sache einfach: Geht nicht.
Das Brother-Gerät kann mit Daten, die ein DOS-Programm sendet, nicht das Geringste anfangen. Es verfügt über keine "Intelligenz", um aus dem Befehl vom PC, meinetwegen ein "a" zu drucken dann auch ein "a" aufs Papier zu bringen. Für solche GDI-Geräte muß das Betriebssystem die gesamte Seite aufbereiten, vom ersten bis zum letzten Bildpunkt. Eine Umwandlung von "DOS-Daten" in GDI, mit dem der Drucker etwas anfangen kann, existiert nicht.
Willst du bei Tintenstrahlgeräten bleiben, wirst du an einem Gerät von HP nicht vorbei kommen, Voraussetzung auch hier, daß das Gerät PCL-3 beherrscht (steht im Datenblatt, wenn ein Gerät das kann. Steht es dort nicht, beherrscht das Gerät das auch nicht). Zu Laserdruckern habe ich weiter oben schon was geschrieben (Auch hier Voraussetzung PCL, Postscript oder eine andere Emulation wie Epson FX, IBM Proprinter).
Und dann mußt du noch in der Lage sein, deinem DOS-Programm die zum Drucker passenden Befehle oder Treiber einzustellen. Unter DOS muß jedes Programm seine eigenen Treiber mitbringen. Entweder aus einer Liste etwas wie beispielsweise "HP LaserJet II" auswählen (würde für die Laserdrucker mit PCL oder den Tintenstrahler mit PCL-3 gelten) oder bei anderen Programmen Steuercode für Steuercode selbst heraussuchen und eintippen. Letzteres ist für Anfänger heute wohl nicht mehr handzuhaben, mit der Materie muß man schon groß geworden sein, um daran nicht zu verzweifeln.
Auf jeden Fall kommst du mit dem, was du jetzt hast, keinen Schritt weiter und die Umsetzung von COM auf USB ist da bei weitem das geringste Problem.
Gruß
Jürgen
Hallo Jürgen,
ich werde jetzt die Vorschläge meinen Freund, der das damals programmiert hat vorlegen und mich dann, wenn er geantwortet hat wieder melden.
Danke für die Mühe
Gruß Jürgen
Moin,
tu mir bitte mal einen Gefallen: Um überhaupt jemals in diesem Leben einen Schritt weiterzukommen, möchte ich dich bitten, mal 5 Minuten Zeit zu investieren.
Bitte erstelle mit dem Windows-Notepad (Editor) eine einfache Textdatei, nenne sie meinetwegen "Test.txt" und schreibe dort einfach zwei, drei Wörter deiner Wahl rein. Der Inhalt ist egal, sollte aber lesbar sein und speichere die Datei so ab, daß du sie wiederfindest.
Dann lad dir bitte unter http://www.lerup.com/printfile/ das Programm Printfile, Dateiname "prf32-216.zip" herunter und installiere dieses.
Nach der Installation und Start des Programmes bitte folgendes unbedingt eingeben:
Den Button "Settings" betätigen
Unten links in der Ecke "Text file" anklicken
Die ursprüngliche Einstellung "Print formattet" (oben in der zweiten Zeile zu finden) ändern in Send to printer". Mit "OK" bestätigen, im vorherigen Dialogfeld mit "Save" abspeichern
Jetzt solltest du wieder im Grundmenü des Programmes sein. Dort klicke bitte auf "Print File", suche dir im darauf folgenden Dialogfeld die oben erstellte Datei, mit "Öffnen" laden, im darauffolgenden Dialog suchst du dir bitte deinen Brother-Drucker(!) heraus und schickst mittels "OK" den Druck ab.
Frage: Kommt ein Ausdruck aus dem Brother-Drucker heraus? Ja oder Nein, das ist derzeit die einzig wichtige Frage.
Für die Beantwortung wäre ich dir dankbar.
Gruß
Jürgen
Hallo Jürgen,
ich habe so verfahren wie Du es beschrieben hast. Der Text landet in der Drucker Warteschleife von XP, aber der störische Drucker zuckt nicht einmal. Ich habe noch einen Bekannten gefragt, der hat sich dann mal bei mir ausgelassen. Er hat einen Testausdruck des Duckers gemacht, und siehe da der Drucker bekommt seine Daten über LPT1, also parallel. Dann hat er einen Versuch gemacht und den Drucker als Netzwerkdrucker betrieben, und dann ist genau das gleiche passiert. Die Druckdaten sind zwar im Hals von XP, aber der Drucker bewegt sich nicht. Jetzt kommt dann wahrscheinlich das mit GDI oder den anderen Sprachen in den Mittelpunkt. Allo ich weiß nicht mehr weiter. Es gibt noch Angebote über so Parallel-USB Konverter für ca € 400.--, aber wenn ich so etwas benutze, müsste ich jedesmal wenn ich aus XP drucken möchte um stecken.
Vielleicht kommst Du ja noch auf eine andere Lösung. Es müsste eine Software geben die die ganzen Druckdaten so übersetzt, das sie von den verwendeten Druckern gelesen werden kann.
Gruß Jürgen
Hi,
danke für deine Antwort und vor allem für den durchgeführten Test.
aber der störische Drucker zuckt nicht einmal.
Ja, was soll ich sagen? War mir von Anfang an klar.
Ich kann nicht verheimlichen, daß der Test eigentlich unnötig war und dir selbst zeigen sollte, daß es mit deinem Drucker nicht klappen kann. Ich hatte nur den Eindruck, daß du irgendwo zwischen den Stühlen sitzt und einerseits das liest, was der der Programmierer geschrieben hat, was sinngemäß auf "Ach, ganz easy, das kriegen wir schon hin, dann schreiben wir eben die Druckerkommandos um." und "Ach, der hat ja eh keine große Ahnung, ich mach das schon" und andererseits meine Anmerkungen, die von Anfang an sagen "Mit dem Drucker: Never".
Jetzt kommt dann wahrscheinlich das mit GDI oder den anderen Sprachen in den Mittelpunkt.
Richtig. Wir sind mittendrin.
Damit wir die Sache jemals zu einem Abschluß bringen können, fasse ich mal zusammen und schlage folgendes vor: Wenn du in meiner Zusammenfassung irgendwo einen Fehler findest, korrigiere ihn bitte.
- Du hast einen NEC-Nadeldrucker und möchtest diesen ausmustern. Kann ich gut verstehen, dieses sägende Geräusch möchte ich auch nicht auf Dauer ertragen.
- Deine ursprüngliche Angabe, daß der Drucker über COM1: angeschlossen wäre, ist falsch. Der Drucker ist über LPT1: angeschlossen (also parallel) UND dein PC hat noch einen LPT1-Anschluß. Umgeleitet werden muß daher überhaupt nichts.
- LPT1 stirbt zwar langsam aus, läßt sich aber bei Desktop-PCs mittels PCI-Karte leicht nachrüsten. Auch bei Notebooks sind echte Parallelports schon ab rund EUR 20,- nachrüstbar. Daher wäre auch ein zukünftiger Wechsel des PCs kein unüberwindbares Problem.
Bleibt, was noch durchgeführt werden muß, um den NEC-Drucker ersetzen zu können.
- Anschaffung eines Druckers, der problemlos unter DOS arbeitet. Wie bereits erwähnt, bieten sich da PCL-fähige Drucker an, wobei ein Parallelport erforderlich ist. In diesem Fall muß der Programmierer allerdings sämtliche Steuerbefehle praktisch ohne jede Ausnahme ersetzen, denn Laserdrucker, die NEC-Befehle verstehen, gibt es nicht. Ob er darauf Lust verspürt und mit welchem zeitlichen Aufwand das verbunden ist, kann ich nicht beurteilen, das müsst ihr untereinander ausmachen.
- Zu den Kosten eines solchen Druckers. Es bieten sich da Geräte aus dem Gebrauchtmarkt an, bei eBay gibt es unendliche Angebote, die teilweise schon ab EUR 20,- + Versand losgehen. Beispielsweise wären das HP LaserJet 1200, 1300, 1320, 2100, 2200, 2300, 4000, 4050. Die Aufzählung ist nicht vollständig und Geräte, die ich nicht empfehlen kann, sind nicht aufgeführt (z. B. LaserJet 2420, 2430, P3005)
Kommt ein Gebrauchtgerät nicht in Frage, würde ich derzeit den OKI B410d empfehlen. Dieser wird im Rahmen einer Aktion bis Ende Oktober mit 5 (fünf!) Jahren Vor-Ort-Herstellergarantie am nächsten Arbeitstag angeboten für nur EUR 99,- zzgl. Mwst. (also gerundet EUR 120,-) - das Gerät kostet sonst etwa das Doppelte. PCL und Parallelport sind selbstverständlich, sonst würde ich das Gerät hier nicht nennen.
- Sollte dem Programmierer der Aufwand zu hoch sein, würde ich auf einen Drucker setzen, der eine Epson-Emulation besitzt. NEC und Epson waren zu den besten Zeiten von Nadeldruckern ziemlich ähnlich und unterscheiden/unterschieden sich nur bei relativ wenigen Befehlen. Daher würde sich der Aufwand in Grenzen halten.
Da müssten dann aber andere Laserdrucker her, als die oben erwähnten, denn HP bietet keine Emulation anderer Nadeldrucker an. Spontan würde mir hier Kyocera einfallen. Die FS-10x0-Serie dürfte da in Sachen Anschaffung/Größe/Unterhaltskosten ideal sein (FS 1000, 1010, 1020, 1030D). Bei anderen Modellen einfach mal Google bemühen, die Produktbezeichnung, gefolgt von "EPSON LQ" eingeben, dann sollte man die Datenblätter finden. Steht dort Epson drin, passt der Drucker.
- Letztlich muß man bei dem Kyocera-Drucker dann nur noch nach Handbuch die Epson-Emulation einschalten, standardmäßig stehen die nämlich auch auf PCL von HP, wie oben. Aber dafür ist das Handbuch ja da, um das kurz umschalten zu können.
Damit sollte man recht kostengünstig die Kuh endlich vom Eis bekommen.
Schönen Gruß von mir an den unbekannten Programmierer, in dessen Augen ich ja keine große Ahnung und auch die ganze Problematik nicht richtig eingeschätzt habe.
Auch auf die Gefahr, in die "Eigenlob stinkt"-Falle zu laufen, was auch sonst eigentlich gar nicht meine Art ist. Mit Druckern beschäftige ich mich seit 1987, ich denke schon, daß ich mich mit meinen seitdem erworbenen Kenntnissen nicht verstecken muß. Im Forum von CHIP hätten sie mich wahrscheinlich sonst auch nicht zum "CHIP Spezialist(en) für Drucker" gekürt.
Wenn noch Fragen auftauchen, dann laß es mich wissen.
Gruß
Jürgen
Hallo Jürgen, vielen Dank für Deine Antworten. Ich bin erstaunt und möchte ausdrücklich loben, das dieser Aufwand den Du hier betreibst nicht üblich ist, und ich froh bin, das sich jemand auch ohne Eigennutz so ins Zeug legt. Ich habe alle Ansätze nach meinen Möglichkeiten ausprobiert und werde jetzt alle Antworten ordnen und dann jedem eine hoffentlich ordentliche Ausage und Anwort zu Verfügung stellen.
Mit freundlichen Grüßen aus Bopfingen
wahrscheinlich noch öfter Jürgen
Hi Namensvetter,
wir werden das schon hinkriegen ;-)
So schwer ist das geplante Vorhaben ja gar nicht, einen alten Nadeldrucker zu ersetzen.
Ein schönes Restwochenende wünscht
Jürgen
Hallo "Namensvetter",
ich habe noch einen Drucker von Epson, "Epson stylus C66" Tintenstrahldrucker. Lohnt es sich, das ich diesen installiere und umbaue, oder soll ich erst mit einem neuen ausprobieren.
Gruß Jürgen
Moin,
mit dem müsste es klappen, laut den Datenblättern, die ich gefunden habe, müsste das Gerät ebenfalls ESC/P beherrschen, das ist das, was oben als Epson-Emulation beschrieben wurde.
Mit dem gleichen Test via FilePrint sollte hier die von dir angelegte Datei ausgedruckt werden können, vorausgesetzt, daß der Drucker erstmal ganz normal unter Windows druckt.
Gruß
Jürgen