USB auf Parallel Adapter ansprechen geht. Aber Register??
-
Hallo
Ich habe mit vor geraumer Zeit ein Programm geschrieben, mit dem ich ein LCD über den LPT1 ansteuere. Jetzt muss ich das Programm bzw. die Kommunikation ändern da ich keinen LPT1 mehr habe. Ich habe mir einen Adapter von USB auf Parallel (Sub D Buchse) besorgt.
Im Forum hier habe ich schon etwas geblättert. Mittels „CreateFile“ kann ich auf den USB Port zugreifen. Mein Problem (vielleicht auch nur in meinem Kopf
) ist jetzt die Frage nach den Registern.
Im alten Programm ging das so:
#define PORTADDRESS 0x378 #define DATA PORTADDRESS+0 #define STATUS PORTADDRESS+1 #define CONTROL PORTADDRESS+2 #define ZEICHEN 40 #define REIHEN 2 static void InitDriver (void) { WriteControl(0x38); WriteControl(0x38); WriteControl(0x38); WriteControl(0x06); WriteControl(0x0c); } void WriteControl(unsigned char data) { schreiben(CONTROL,0x03); schreiben(DATA,data); schreiben(CONTROL,0x02); schreiben(CONTROL,0x03); schreiben(CONTROL,0x01); Sleep(3); } void schreiben(unsigned short port, unsigned char value) { Out(port, value); }
(wobei der Out-Aufruf auf die eingebundene ioport.dll geht)
Hier ist ja die Portadresse klar und damit auch die Adressen der Register (DATA,STATUS,CONTROL).
In neuen Programm:
hTreiber = CreateFile(device.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hTreiber == INVALID_HANDLE_VALUE) { ShowMessage("Verbindung zum USB-HID konnte nicht hergestellt werden!"); CloseHandle (hTreiber); } else { ShowMessag ("Verbindung zum USB-HID konnte hergstellt werden! "); WriteFile(hTreiber, string, sizeof(string), &BytesWritten, NULL);
Und wie läuft das jetzt mit den Registern??
Wie spreche ich die an?
Bin für jeden Tip dankbar.
-
hm,
vielleicht helfen dir folgende Links weiter:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/msdn_serial.asp
http://www.usb.org/developers/onthego/
http://www.microsoft.com/whdc/system/bus/USB/default.mspx
http://www.beyondlogic.org/
http://www.usbdeveloper.com/
http://www.lvr.com/usb.htm
http://www.bcb-box.de/Downloads/downloads.html#USBhttp://www.b-kainka.de/usb.htm
Bücher:
http://www.amazon.com/exec/obidos/tg/detail/-/0965081958/ref=pd_sim_books_1/002-5050663-3502469?v=glance&s=books
http://www.usb-by-example.com/
http://www.amazon.com/exec/obidos/tg/detail/-/0735618038/002-5050663-3502469?vi=glance
-
Hallo
Danke für die Links.
Ich werd mich heute abend mal da durchwurschteln.Gruss
-
Hallo
Ich glaube ich habe die Portadresse gefunden.
Nach ner größeren Google-Session habe ich diese Seite hier gefunden.http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund um den PC/USB2LPT/
Der, unter "Häufig gestellte Fragen", angebildetet Adapter dürfte meinem entsprechen.
Unter
http://members.datafast.net.au/dft0802/downloads/usbdevs.txt
gibt es eine Liste mit verschieden Geräten und Adressen (zumindest sehe ich das so).
Jetzt hab ich aber mal noch ne Frage zu dem WriteFile Befehl.
WriteFile(hTreiber,
string,
sizeof(string),
&BytesWritten,
NULL);Ich habe ja sozusagen 3 Werte die ich benutzen muss.
Das sind Handle, Register und der Wert den ich übergeben möchte.
Wie Handle in den Befehl passt ist klar. Jetzt weiß ich aber nicht wie bzw. an welcher Stelle ich die Register- und Wert-Angabe unterbringe.Gruss
Hawk
-
bist du inzwischen weiter gekommen? Ich muss mir vermutlich auch einen USB to
Paralell Wandler kaufen um damit einen Sensor ansprechen. Wenn die Sache
funktioniert wäre das doch ein wunderbarer Artikel fürs Archiv
-
Hallo
Schaut düster aus. Die Adapter emulieren keinen 100% kompletten LPT.
Ich habe noch ne Idee bekommen die ich am WE testen möchte.
Dann melde ich mich nochmal.Gruss
Hawk