=========================================================
USB2LPT.SYS  -  macht, dass der USB2LPT-Konverter mittels
USB2LPT.DLL	IN- und OUT-Zugriffen ansprechbar ist.
=========================================================

USB2LPT ist ein Konverter vom Universellen Seriellen Bus
zu einem altbekannten Parallelport.
Diese gibt es massenhaft zu kaufen, denkt man, aber _kein_ Exemplar
davon emuliert die _Portzugriffe_!

Achtung! Dieser Treiber ist beta, also nicht
ausreichend getestet! Vieles ist geplant, manches eingebaut,
vieles noch tot.
Bisher war ja jeder in comp.os.programmers.ms-windows.nt.kernel-mode
der Meinung, dass einen solchen Treiber zu schreiben, ich zitiere:
 V  L L I G   U N M  G L I C H   ist. - Mission impossible?

Es geht, der "Trap" von Portzugriffen und deren Umleitung
auf USB2LPT (lies: USB-zu-LPT), als ob das Parallelport direkt
im Rechner eingebaut wre. Das "vllig unmgliche".

Zustzlich ist eine Anzapfung von READ_PORT_UCHAR und WRITE_PORT_UCHAR
implementiert worden, die -> sehr sicher <- luft.
Und auerdem Zugriffe auf reale Ports verhindert.

Das erste Gert bekommt automatisch 378h..37Ah (LPT1) zugewiesen.
Ein zweites USB2LPT-Gert sollte die Adressen 278h..27Ah "schlucken",
ein drittes die Adressen 3BCh..3BEh.
Die emulierte Portadresse sowie Betriebsart knnen im Gerte-Manager
eingestellt werden, siehe Screenshot.

Getestet wurde hier nur auf einem W2K-System.
Unter Windows XP verschwindet im Sekundentakt der Debugregister-Trap.
Korrekte Funktion auch unter Win98 und WinMe.
Fr Win98 ist ein Klassentreiber zur Druckeruntersttzung beigefgt.

Das zu verwendende Programm muss an sich unter Windows verwendbar sein, also
mit echtem Parallelport laufen und dazu einen entsprechenden Treiber
mitbringen! Oder man nehme Universaltreiber wie PortTalk, zlportio u..


Inbetriebnahme:
---------------
System mit Windows, mit oder ohne "echtes" Parallelport.

Zur Installation des Treibers bentigen Sie Administratorrechte.
Auerdem mssen unzertifizierte Treiber zugelassen werden.

Wegen einer echten USB-Hersteller-ID kommt es ab sofort nicht mehr
zum Bluescreen bei Kollision mit Cypress.

Ich habe an das "richtige" LPT eine LED-Anzeige ("Musekino") angehangen:
http://www.tu-chemnitz.de/~omat/bastelecke/Rund%20um%20den%20PC/lptchk/

Das Musekino ist wirklich immer wieder ntzlich, ich wrde es stets
zum Nachbau empfehlen.

Daran einen SHT11 Temperatur- und Feuchte-Sensor:
http://www.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/SHT11/

Gestartet mit Kommandozeile:
AllowIO sht11_nt.exe

AllowIO stammt aus dem PortTalk-Paket.
Die LEDs fr D6, D7 und S6=/ACK flackern fleiig im Sekundentakt.
Das Programm zeigt gro Temperatur und Feuchte an.

Nun das Ensemble an den frisch aufgebauten USB2LPT:
http://www.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/

Nun Anstecken von USB2LPT. Es wird die usb2lpt.inf-Datei verfttert.

Zu kleine Ausgangsspannungen an den Datenleitungen sorgen dafr, dass
die Pollin-Anzeige LSU7S1011A nichts anzeigt. D5 mit 5V verbinden, geht!
Auch dieses Problem wird sich mit den Pull-Ups lsen.
Inzwischen ist in der Firmware Kode enthalten, der die Datenleitungen
im Offenen Kollektormodus betreiben lsst (m.a.W., da kommen dann
5V raus). Zur Aktivierung bentigt man ein Mini-Programm.


So nicht:
---------
Wenn Sie nun denken, Sie schalten die LEDs einfach mittels debug:
-o378 ff

der hat sich geirrt. Das wird vom 2K/XP komplett abgefangen und zum
(hypothetischen) Drucker umgeleitet.
Es geht schlielich mit einem "echten" Parallelport auch nicht!

Unter 98/Me sollte es aber gehen.


Anwendungen:
------------
In erster Linie wird es um (teure) Programmiergerte gehen, die an
irrtmlich gekauften, zu neuen PCs/Laptops zum Laufen gebracht werden
mssen. Der Privatanwender wird tunlichst darauf achten, bei notwendiger
Parallelschnittstelle auch einen PC _mit_ Schnittstelle zu kaufen.
(Das gilt in etwas abgeschwchter Hrte auch fr die seriellen Ports.)

Im zweiten Schritt wird man sicher den USB2LPT als ein nahezu vollwertiges
Entwicklungs-Kit sehen, den man fr 1001 Zweck gebrauchen kann.

Dafr ist noch der USB2LPT.SYS-Treiber auszufeilen.
Das schne am EZUSB ist ja bekanntlich, dass dieser kein Daten-Flaschenhals
ist wie viele andere USB-Chips.


IOCTL-Schnittstelle (Das API):
------------------------------
... ist zurzeit nicht dokumentiert; sonst wrde USB2LPT sein Ziel
verfehlen, OHNE Software-nderung zum Parallelport zu kommen.

Die in der USB2LPT.H angegebene Dokumentation hat jedoch endgltigen
Charakter; ich habe nicht vor, die IOCTL-Kodes zu verndern.
Zu ffnen ist das erste Gert mit CreateFile(TEXT("\\\\.\\LPT1"),...).

brigens, ber diese Software-Schnittstelle ist es mglich:
- IN- und OUT-Befehle zwecks Geschwindigkeitssteigerung zusammenzufassen
- jedes der 17 Portpins einzeln auf Ein- und Ausgang zu schalten
  (so knnen auch die Statuseingnge zu Ausgngen werden)
- Extra-Features wie die Offene Kollektorsteuerung fr die Datenpins
  zu aktivieren
- den RAM- und EEPROM-Inhalt des Mikrocontrollers zu lesen + schreiben

**************

haftmann#software, 07/06
henrik.haftmann@e-technik.tu-chemnitz.de
