Parallel Port Druckeremulator (ESP32_VirtualPrinter)

  • Moin,


    ich hab hier eine Bastelei, die ich mal zeigen möchte... Nicht ganz produktreif, aber funktionsfähig und bereits ganz praktisch:

    Ein ESP32 kann ohne weitere Komponenten so tun, als wäre er ein Parallel Port Drucker (IEEE 1284/Centronics, etc.) und

    die resultierenden Daten können dann direkt per TCP/IP über WLAN verschickt werden.


    Das ganze ist dann also quasi ein Druckserver, aber Rückwärts :D

    Sowas gibts bestimmt auch Kommerziell, aber zumindest ist es mir bisher nicht in die Haende gefallen.

    Bei 5$ fuer so ein ESP32 Modul ist meine Loesung aber in jedem Fall Preis/Leistungssieger ;)


    Ein Bekannter nutzt diesen Aufbau jetzt an einer Messmaschine um die Prüfberichte statt auf Papier direkt digital wegzuschreiben.

    Eine denkbare Nutzung wäre ein Haufen historischer Computer, welche allesamt auf dem gleichen Drucker drucken können, als wäre dieser lokal an LPT1 :)

    Der ESP32 kann Druckdaten direkt auf TCP 9100 an einem modernen Netzwerkdrucker abliefern. So kann dann auch die aktuelle Generation Drucker wieder Parallel-Port.

    Alternativ kann ein CUPS/Epson ESC Emulator/etc. pp oder irgendwas anderes die Daten annehmen und damit machen, was der BenutzerIn recht ist.


    So schaut mein Versuchsaufbau aus:


    Hier ist die Firmware:

    GitHub - Manawyrm/ESP32_VirtualPrinter: ESP32 emulator for LPT/parallel port printers
    ESP32 emulator for LPT/parallel port printers. Contribute to Manawyrm/ESP32_VirtualPrinter development by creating an account on GitHub.
    github.com

    (mittels PlatformIO/Arduino)


    Hier ein Video vom Aufbau in Aktion:

    New video by Manawyrm
    photos.app.goo.gl

    Das ThinkPad T41 steht im BIOS, es wird die "Druck"-Taste betätigt und eine Hardcopy des BIOS-Setup-Bildschirms wird auf LPT1: ausgegeben.

    Die resultierende Seite wird zu einer .pdf Datei und wird auf dem PC direkt angezeigt.


    Viele Grüße

    Manawyrm

  • Wenn du da jetzt eine richtige Platine draus machst, nehme ich 1 oder 2 davon. Sowas suche ich schon länger.

    Erzähl gerne mal, wie du das gerne einsetzen würdest. Irgendwoher müssen noch 5V Strom kommen.

    Dann als kleine Platine direkt mit Stecker dran um hinten in den PC eingesteckt zu werden? Oder mit Buchse und Verbindungskabel?

    Welchen Anschluss für die 5V? Hohlstecker? USB? Beides? Molex?


    Bei den meisten meiner Rechner würde die Platine wohl hinten am Parallel Port stecken und dann z.B. vom PS/2 oder aus dem Gehäuse selbst ein wenig Strom klauen :)

  • Ich finde das auch eine interessante Lösung für meine Retro-PCs. Ich habe da zwar einen Drucker dran, aber wenn man den Druck auch auf einen modernen PC umleiten kann, der den Ausdruck aufbereitet, fände ich das ganz nett.


    5V könnte man am einfachsten über ein Steckernetzteil mit Standard Hohlstecker zuführen. Es gibt da inzwischen eine gängige Standardgröße.


    Wenn das Teil kompakt genug ist, dann am besten zum direkten Aufstecken auf den PC-Druckeranschluss.


    Ich nehme an, dass der ESP32 5V-tolerant genug sind, dass man keine Pegelwandler braucht.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Hallo, das müsste man möglichst flexibel gestalten können. Auf jeden Fall gut wäre eine USB-Buchse (B, mini, micro), so dass man das Teil aus einem sowieso vorhandenen USB-Netzteil von einem anlten Smartphone versorgen kann. Und dann zusätzlich eine verpolungssichere leicht lötbare Variante, über die man alle anderen Varianten per Selbstbauadapter anschließen kann.

    1ST1

  • Mit den Anforderungen hast jetzt mal die Kosten locker verdoppelt, wenn nicht verdreifacht. Vorher war es eine einfache eine Platine mit Sub-D-Stecker, Sockel für den ESP und Spannungsbuchse. Jetzt braucht man auf jedenfall noch einen Zwischenadapter, dann liegt das Ding irgendwo rum mit Kabelage und die USB-Stecker gibt es nur als SMD.


    Da bin ich dann schon wieder raus.


    Aber zur Not kann man sich sowas ja auch schnell selbst layouten. ;)

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Zumal diese mistigen Micro-USB Stecker nach 4 Steckzyklen Kontakprobleme haben, und nach 10 garnicht mehr funktionieren.

    Hohlbuchse dran, und fertig.

    Wer auf den USB-Kram steht, kann dann ein USB-A auf Hohlstecker-Kabel verwenden.

    +++ ATH

  • locker verdoppelt, wenn nicht verdreifacht

    Och wieso?

    Wenn ich den JLC-Chinesen die Platine zur Bestückung hinwerfe, gleich den ESP32 selbst, Spannungswandler und Stecker bestücken lasse kommt das trotzdem noch bei 5-10$ pro Stück (je nach Abnahmemenge, weil Einrichtungsgebühr) raus, würde ich tippen.


    So ein ESP32-WROOM kostet 2.80$, DB25 Stecker 0.69$, so viel Hühnerfutter kann ich da gar nicht draufbasteln, dass das ein echtes Problem wird :)

    Mein größtes Problem ist, dass ich weder Lust noch Zeit hab, sowas als Sammelbestellung zu machen und dann zu verschicken :D


    Aber ich würde die fertigen Dateien einfach wieder irgendwo hochladen und dann hat das in der Vergangenheit immer prima geklappt, dass sich die Community da abspricht :tüdeldü:

  • locker verdoppelt, wenn nicht verdreifacht

    Och wieso?

    Wenn ich den JLC-Chinesen die Platine zur Bestückung hinwerfe, gleich den ESP32 selbst, Spannungswandler und Stecker bestücken lasse kommt das trotzdem noch bei 5-10$ pro Stück (je nach Abnahmemenge, weil Einrichtungsgebühr) raus, würde ich tippen.

    Klar, dann gibt es eine einmalige Sammelbestellung und jeder, der in einem Jahr sowas braucht, der guckt in die Röhre. Solche Projekte hatten wir schon einige. Ich mache das bei solchen Projekten in der Regel so, dass ich mir erstmal 1-2 Platinen hinlege und wenn ich dann wirklich Zeit dafür haben, dann besorge ich mir die paar Teile und baue das auf. Ich brauche und will bei so einfachen Sachen eigentlich keine Fertigteile.


    Wofür brauchst du einen Spannungswandler? Kann man den ESP nicht mit 5 Volt versorgen?

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Klar, dann gibt es eine einmalige Sammelbestellung und jeder, der in einem Jahr sowas braucht, der guckt in die Röhre.

    Ist halt ein Tradeoff zwischen Freizeitnutzung und Kosten. Muss am Ende jeder selbst wissen, gerade das ist ja das schöne an Open-Source lizensierter Hard- & Software :)


    Ich möchte in meiner Freizeit nicht löten müssen, mache es aber ganz gerne als Entspannung. Aber dann doch lieber einen C64-Replika oder den 8086-PC (den ich vor 2 Jahren gebaut hatte), statt der eigenen Platine (gar noch in Stückzahl).

    Ich setze auch einfach nicht gerne auf Komponenten, die einfach grob obsolet (z.B. through-hole) sind, nur damit es einfacher zu verlöten bleibt.


    Eine Bestellung bei JLCPCB für fertige (!) Platinen kommt unter 50 Euro raus, dafür kann ich keine Teile und Platinen besorgen, etc. pp.

    Wofür brauchst du einen Spannungswandler? Kann man den ESP nicht mit 5 Volt versorgen?

    Die großen Boards (mit Pins, etc. pp) haben einen linearen Spannungswandler auf dem Board. Die reinen ESP32 Module nicht, die möchten gerne 3.3V.

  • Interessantes Projekt. Sowas ähnliches hab ich mir letztes Jahr mal überlegt, bin aber

    über das Konzeptstadium (ohne konkrete Hardware) nicht hinausgekommen.Anlass

    war daß ich keinen Drucker für meinen Sharp MZ-80B habe und

    der Originaldrucker invertierte Logikpegel und einen eigenen Zeichensatz verwendet.


    Vorgesehen waren folgende Funktionen:


    Centronics Drucker Simulator mit Ausgabe auf Netzwerk, USB, Centronics oder Seriell

    Serielle Drucker Simulation mit Ausgabe auf Netzwerk , USB, Seriell oder Parallel

    C64 Drucker Simulation mit Ausgabe auf Netzwerk, USB, seriell oder Parallel


    Der Druckersimulator sollte die speziellen Zeichensätze des Quellgerätes auf das Zielgerät umsetzen.

    Ich wollte das aber nicht alles gleichzeitig in einer Box implementieren sondern eine Hardware

    entwerfen die alle Anschlüsse hat und je nach gewünschter Funktion bestückt und mit der

    entsprechenden Software geladen wird.

  • Serielle Drucker Simulation mit Ausgabe auf Netzwerk , USB, Seriell oder Parallel

    Einen seriellen Drucker-Emulator habe ich mir auch schon programmiert.


    Die CTM 9016 Systeme (ComputerTechnik Müller) nutzen ITOS als Betriebssystem - ein CTM-eigenes Multi-User OS. Die Anwendungsprogramme sind meist in Makro-Assembler geschrieben, die dann vom ITOS beim Ausführen interpretiert weden. Eine technologie, die es CTM damals erlaubte beim Schritt des Wechsels der Hardware vom 16-BIT TTL Prozessor der CTM 70 Systeme auf die MC680x0 basierten CTM 90 Systeme, hauptsächlich ITOS und den Makro-Assembler Interpreter umzuschreiben, die Anwendungsprogramme konnten aber mehr oder weniger unverändert weitergenutzt werden!


    Der Bau eines Makro-Assembler Programms durchläuft mehrere Phasen. U.a werden die einzelnen Makros zuerst zu einer Source Datei zusammengefasst bevor diese assembliert wird. Beim Assembler-Lauf erwartet die CTM 9016 das Vohandensein eines Druckers. Dieser protokolliert dann jedes Zeile, an der er gerade etwas "macht". Die Idee ist die, dass man bei einem Assembler-Fehler, der so schwerwiegend ist, dass die CTM abschmiert, anhand des Ausdrucks eben feststellen kann, an welcher Zeile das Problem aufgetaucht ist, (und was für ein Problem) auch wenn der Bildschirm schon längst nichts mehr anzeigt. Da das aber schnell mal 50-100 Seiten werden können, und die meisten meiner CTM Drucker noch rumzicken, habe ich mich entschlossen, dafür einen Emulator zu programmieren.


    Ich habe das in JAVA realisiert. Warum?

    JAVA ist doch wegen der fehlenden Hardware-Nähe eher ungeeignet?

    Das stimmt: auch JAVA nutzt wie der CTM Makro-Assembler eine Zwischenschicht. Also erst werden die Klassen erst zu class-files kompiliert, und diese können dann auf jeder beliebigen Hardware unter jedem beliebigen OS in der virtual machine ausgeführt werden. Aber diese Abstraktion macht hardware-nahe Programmierung schwieirger, es werden dann immer OS-abhängige Systemlibraries benötigt!


    Die Antwort ist: weil ich's kann. Oder besser, da ich meine Brötchen als JAVA Entwickler verdiene, bin ich einfach in JAVA am schnellsten.

    Dachte ich jedenfalls.

    Das Problem war nur, dass die offizielle Unterstützung von seriellen Schnittstellen schon 42 Jahre abgelaufen war. Und die passende Windows library ist nicht mehr bei SUN / Oracle zu kriegen! OK, das jar ist schnell gefunden, aber die Windows dll, die dann die wirkliche Hardware-Unterstützung macht musste ich mir mühsam aus bereits vor Jahren herausgebrachter Fremd-Software aus dem Netz herausschälen.

    Hatte ich diese dann aber, war der Rest ziemlich einfach. Nur noch ein paar unerwünschte Zeichen rausfiltern und fertig ist der serielle Drucker-Emulator. Dieser zeigt die Ausgaben am Bildschirm an und schreibt sie wenn gewünscht auch in eine Datei.


    Originale Ausgabe am CTM BAP


    Selbe Ausgabe als Bildschirm-Hardcopy auf dem Bildschirm eines Windows PCs

    -------------------------------------------------------------------------------
    Suche Rechentechnik aus Deutschland, bzw. Computer Deutscher Hersteller - z.B.

    ANKER, AKKORD, CTM (CTM 70, CTM 9000, CTM 9032), DIEHL/ DDS, DIETZ, FEILER, ISE,
    HOHNER GDC, KIENZLE, KRANTZ, NIXDORF, OLYMPIA, PCS/CADMUS, RUF, SALOTA, S.E.I.,
    SIEMAG, SIEMENS, TAYLORIX, TRIUMPH ADLER - TA, WAGNER, WALTHER, WANDERER,...

    -------------------------------------------------------------------------------

  • Warum hast du keinen USB/Seriell-Wandler genommen?

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Die alten seriellen sind einfach stressfreier.

    Direkter Zugriff auf die wichtigen Parameter, kein Gezicke von den USB-Adaptern oder anderen USB Geräten.

    -------------------------------------------------------------------------------
    Suche Rechentechnik aus Deutschland, bzw. Computer Deutscher Hersteller - z.B.

    ANKER, AKKORD, CTM (CTM 70, CTM 9000, CTM 9032), DIEHL/ DDS, DIETZ, FEILER, ISE,
    HOHNER GDC, KIENZLE, KRANTZ, NIXDORF, OLYMPIA, PCS/CADMUS, RUF, SALOTA, S.E.I.,
    SIEMAG, SIEMENS, TAYLORIX, TRIUMPH ADLER - TA, WAGNER, WALTHER, WANDERER,...

    -------------------------------------------------------------------------------

  • Welche wichtigen Parameter brauchst du denn?


    Ich habe hier haufenweise USB/Seriell-Wandler im Einsatz (teilweise im Dauereinsatz). An Windows 7 und Windows 10.

    Einige hängen an meinen i-Telex-Systemen und protokollieren dort alles mögliche, einer hängt an meinem Akku-Lader und protokolliert die Ladekurven usw.

    Und die vielen Arduinos hier haben ja auch alle USB/Seriell-Wandler drin (wenn auch direkt auf dem Board). Aber das sind die gleichen CH340-Chips.


    Die Zicken alle nicht. Wenn mal einer zickt, dann war's ein marodes China-Billigteil und eines dieser Markenteile, wo es keine Windows 10 Unterstützung mehr gab. Sowas wird dann gleich aussortiert.


    Also ich kann Probleme mit den Dingern nicht nachvollziehen.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Welche wichtigen Parameter brauchst du denn?

    Damit der Drucker richtig erkannt wird und auch entsprechend Daten bekommt sind das in meinem Falle:

    com.port, baud.rate, data.bits, stop.bits, parity, flow.control (z.B. XONXOFF)


    Ich glaube zwar, dass für den Einsatz als drucker die Anforderungen an die USB nicht sehr hoch sind, aber ich hatte an mehreren Laptops schon öfter Probleme, dass z.B. die Maus USB Audio stört oder Netzwerkunterbrechungen am USB Port-Replikator provoziert (meist abhängig was an welchem USBus hängt).

    Ich will mir nur großes Rätselraten ersparen, warum gerade mal eine serielle Übertragung nicht funktioniert, und da ist bin ich mit meiner Lösung sicherer.

    Aber das ist nur meine Erfahrung...

    -------------------------------------------------------------------------------
    Suche Rechentechnik aus Deutschland, bzw. Computer Deutscher Hersteller - z.B.

    ANKER, AKKORD, CTM (CTM 70, CTM 9000, CTM 9032), DIEHL/ DDS, DIETZ, FEILER, ISE,
    HOHNER GDC, KIENZLE, KRANTZ, NIXDORF, OLYMPIA, PCS/CADMUS, RUF, SALOTA, S.E.I.,
    SIEMAG, SIEMENS, TAYLORIX, TRIUMPH ADLER - TA, WAGNER, WALTHER, WANDERER,...

    -------------------------------------------------------------------------------

  • Ja, solche Probleme kenne ich auch. Das sind üblicherweise allgmeine USB-Treiber-Probleme. Unter Windows 10 ist das deutlich besser geworden.

    Das ist aber kein spezielles Problem der USB/Seriell-Wandler.


    Ok, müssen wir dann hier nicht weiter vertiefen.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."