"We are back" « oc.at

USB Programmierung

Geigerzeiger 14.01.2004 - 17:51 990 12
Posts

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Hi Leutz!

Ich stell mir immer die Frage wie man die USB Schnittstelle in C++ ansteuert. Ich will nämlich eine APP realisieren, von der ich Daten zu einem angeschlossenen Rechner übertragen kann. Muß ich mir erinen USB-Treiber schreiben oder gibt's in der WIN32API Funktionen die das erledigen?

Ist das so ähnlich wie bei der RS232 Schnittstelle also wie beim senden/empfangen über den COM-Port?

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
AFAIK gibts im Win32 API keine USB-Funktionen, und es geht auch nicht so einfach über Files. Auf welcher Hardware würde deine App laufen, weil du schreibst "angeschlossener Rechner"?

Smoldi

rape diem
Avatar
Registered: Oct 2000
Location: Wien
Posts: 1371
da sollte einiges zu finden sein

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Ich hab gelesen dass man sog. endpipes für USB programmiern muss. (in einer eigenen VXD). Also den USBChip auf der Hardware selbst.
Ich will aber Daten zw. 2 computer übertragen.
Aber die frage ist: Wie stuere ich diesen Chip an und wie greife ich auf meinen selbst geschriebenen USBTreiber zu?

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
im tutorial-thread gibts imho einen link. du muesstest aber womöglich genau wissen, mit welchem usb-computer-2-computer-konverter chipsatz du es zu tun hast, bzw die api des herstellers verwenden.

oder, da diese konverter sowieso meist ein netzwerk simulieren: verwende ganz normale netzwerkprotokolle.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Wenn schon zwei Computer im Spiel sind, warum dann nicht gleich Ethernet?

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
plz, Geigerzeiger, nenne uns doch dein konkretes setup und sinn&zweck... die beschreibung läßt vermuten, daß du unnötig akrobatische tricks versucht, die man womöglich anders einfacher auch lösen kann.

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
naja... vielleicht hast du recht atrox.
habe nachgefragt, dass usb für so etwas nicht gebaut ist.
wenn ich's übrts ethernet probier, gehts wahrscheinlich einfacher.

Aber weisst du einiges über USB?

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
also ich hab usb bei meinem maturaprojekt verwendet, du musst da erst mal wissen was für einen chip du verwendest
entweder bietet der hersteller einen treiber für windows an oda du müsstest erm selba schreiben (i bin froh, dass i des net musste)
dann kannst du auf usb zugreifen mit den befehlen:
CreateFile() (handle erzeugen)
DeviceIOControl() (lese und schreibzugriffe)
CloseHandle() (handle löschen)
ob die anderen befehle (glaub writefile und readfile gehen weiß i net)

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Aha! Ich kann also ein Handle auf den treiber setzten oder wie?

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
... nachdem du den treiber geschrieben oder bekommen hast. dann verwendest du die treiber-api.

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
jo, nur musst du natürlich auch informationen haben wo (adresse) die daten die du schreibst/liest sind

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
is dann e so ähnlich wie bei der rs232. brauch halt nur mehr informationen
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz