Forum: PC-Programmierung USB zu LPT - Umsetzer (hardwarenahe Win-Programmierung)


von Michael K. (damichl)


Lesenswert?

Hallo,

ich stelle mir folgendes vor:
USB zu Parallel - Umsetzer.
Ich stecke eine µC-Schaltung mit FTDI (USB) an einen USB-Port des PCs 
an. Dieser erkennt das ganze als virtuellen Parallelport (Programme 
sollen diesen auch als Parallelport nutzen können). Wenn nun das 
Programm eine Pegelkombination am LPT setzt, wird diese in einer 
Variable zwischengespeichert. Diese Variable wird zyklisch über USB an 
den µC gesendet, welcher dann das ganze "quasi-parallel" ausgibt.
Mir ist bekannt, dass man hier natürlich mit gewissen Latenzzeiten 
klarkommen muss.

folgendes Wissen ist vorhanden:
gute E-Technik Kenntnisse (Student), besonders µC und FPGA/CPLD, 
Signalverarbeitung analog und digital (DSP), ausbaufähige Kenntnisse in 
C/C++, auch Win32API.

Wie leicht/schwer ist es, so etwas zu realisieren? Gibt es evtl. viele 
Funktionen schon fertig? Natürlich kann man alles lernen wenn man 
möchte, aber ginge das auch in akzeptabler Zeit? Oder soll ich es besser 
gar nicht erst versuchen? Das ganze wäre nur ein kleiner Teil (etwa 1/6) 
meiner Diplomarbeit, d.h. der Zeitfaktor spielt auch irgendwie eine 
gewisse Rolle.

mfg

Michael

PS: beispielsweise gibt es ja für den STM32 bereits eine fertige 
Virtual-COM-Port-Umgebung. Vielleicht kann man damit was anfangen?

von Arc N. (arc)


Lesenswert?

Je nach dem was tatsächlich umgesetzt werden soll geht es
1. ohne virtuellen Parallelport, da die FTDIs von Haus aus einen 
BitBang-Modus unterstützen, der die Anforderungen erfüllt 
http://www.ftdichip.com/Support/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf
2. mit virtuellem Parallelport, je nach Anforderungen, gar nicht, da zum 
einen die Spezifikation des Protokolls von FTDI nicht (vollständig?) 
offen gelegt ist (Rest siehe Linux-Kerneltreiber), zum anderen dann ein 
Windows-Kernelmode-Treiber inkl. Signierung, falls x64 unterstützt 
werden muss, erstellt werden muss.
3. mit virtuellem Parallelport, falls z.B. kein FTDI, sondern z.B. was 
von Cypress genommen wird siehe 
http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/

von Michael K. (damichl)


Lesenswert?

Die BitBang-Sache hört sich interessant an. Doch das Problem dabei ist 
weiterhin, wie ein Programm, dass für LPT ausgelegt ist, mit dem FTDI 
Treiber kommunizieren kann. Wenn das noch irgendwie ginge, wäre es wohl 
lösbar.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Michael K. schrieb:
> Doch das Problem dabei ist
> weiterhin, wie ein Programm, dass für LPT ausgelegt ist, mit dem FTDI
> Treiber kommunizieren kann. Wenn das noch irgendwie ginge, wäre es wohl
> lösbar.

Eine gute Anlaufstelle dafür ist der von Henrik Haftmann geschriebene 
Treiber, der per I/O-Traps die I/O-Zugriffe auf die Hardware-IO-Adressen 
der PC-Druckerschnittstelle abfängt und auf entsprechende Befehle 
umsetzt, die an den per USB angebundenen Controller gesendet werden.

Das hat Henrik auf seiner Seite recht anständig dokumentiert.

Mir scheint, daß Henrik schon einen Großteil dessen erreicht hat, was Du 
erzielen möchtest, und daher dürfte seine Arbeit einen guten 
Ausgangspunkt für weiteres darstellen. Allerdings müsstest Du dann auf 
den FTDI-Controller verzichten, aber was sollte dabei das Problem sein?

von Michael K. (damichl)


Lesenswert?

Hallo,

das hört sich sehr interessant an. Ich habe auf der Homepage das Projekt 
"SPE" gefunden, welches allerdings genau das Gegenteil macht (seriell zu 
parallel). Meintest Du das?


mfg


Michael

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, ich meine das bereits von "Arc Net" in diesem Thread verlinkte 
Projekt USB2LPT:

http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/

von Michael K. (damichl)


Lesenswert?

D.h. ich baue das Teil nach, schließe es an, stelle ganz normal den LPT 
in der Software ein und das ganze Problem ist damit erledigt? Das wäre 
natürlich was ;)

von Christian R. (supachris)


Lesenswert?

Genau. Bei vielen Programmen klappt das dann. Leider nicht bei allen, 
und offenbar leider nur bis Windows XP. Den LPT-Debugger für den MSP430 
hab ich damit leider nicht zum Laufen bekommen....

von Michael K. (damichl)


Lesenswert?

Lt der FAQ funktioniert er sogar in Windows 7. Ich werd ihn einfach mal 
aufbauen und testen, die Kosten dafür sind jetzt nicht so gigantisch ;)


mfg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.