USB Port (direkt) ansprechen

Guten Tag,

da mein Laptop keine COM-Schnittstellen besitzt, habe ich nur 2 Möglichkeiten, Hardware in C++ anzusprechen:
USB oder Druckerport, wobei ich USB bevorzuge.
Ich habe bereits in diversen Foren die Boardsuche und Google bemüht, bisher nur mit dem Ergebnis, dass sich die Fragenden letztendlich entschieden, den COM-Port zu benutzen oder sich einen Adapter zu kaufen.
Ich aber möchte den USB-Port ansprechen. Es würde schon reichen, wenn ich nur „Rohdaten“, also einfache Bits, senden könnte, ich könnte mir zu diesem Zweck Funktionen schreiben, die das Ganze dann etwas abstraktieren.

Ich benutze als Betriebssystem hauptsächlich Windows XP (ich besitzte zwar auch die Linux Distribution „Ubuntu“, habe aber nur selten Verwendung für diese) und möchte somit auch für dieses programmieren.

Ich fand heraus, dass mein Ziel mit der DirectX API möglich ist, doch ich möchte wenn möglich ohne zusätzliche Libraries auskommen.
Doch DirectX beweist genau das, dass es möglich ist, den USB Port ohne APIs anzusprechen, denn es selbst tut ja schließlich genau das.

Ich hoffe jemand kann mit weiterhelfen.

Gruß

Mal nachgefragt, woher hast Du denn den Beweiss bei DirectX ???
Bzw wie kommst Du darauf das Direct X keine anderen API functionen nutzt.
Noch ne frage , wer regelt denn bei deinem Computer den USB port ,ich denke doch mal das Betriebsystem :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich fand heraus, dass mein Ziel mit der DirectX API möglich
ist, doch ich möchte wenn möglich ohne zusätzliche Libraries
auskommen.
Doch DirectX beweist genau das, dass es möglich ist, den USB
Port ohne APIs anzusprechen, denn es selbst tut ja schließlich
genau das.

Ich hoffe jemand kann mit weiterhelfen.

Gruß

Hallo,

da hast du viel mehr herausgefunden, als irgendeinem anderen Experten auf diesem Planeten bekannt ist - wie soll dir da jemand weiterhelfen? Setz einfach deine Forschungen fort.

Gruss Reinhard

Danke für die Antworten!

@Reinhard Kern: Nun ja, ich bin heute schon den ganzen Tag am suchen und das, was ich rausgefunden habe reicht trotzdem noch nicht aus, um sich meinem Ziel auch nur zu nähern… Aber natürlich bin ich fortlaufend am suchen, bisher immer noch ohne Erfolg.

@RakonDark: Entschuldigung, ich hatte mich mit DirectX ein wenig vertan, mein ursprüngliches Ziel war es nämlich eigentlich, das Bild einer Webcam auszulesen, aber ich hatte schon lange vor auf die USB Schnittstelle zuzugreifen und wenn ich das schaffen würde, wäre es auch nicht schwer, das mit der Webcam zu realisieren.
Der Thread befindet sich hier: http://www.softgames.de/forum/viewtopic.php?t=114740
Naja, aber ich nehme an, dass DirectX auch irgendwie Zugriff auf USB-Ports hat, man denke mal an Gamecontroller, etc.
Zurück zum eigentlichen Thema:

Bzw wie kommst Du darauf das Direct X keine anderen API functionen :nutzt.
Noch ne frage , wer regelt denn bei deinem Computer den USB port ,ich :denke doch mal das Betriebsystem :wink:

Auch wenn DirectX API Funktionen benutzt, wird diese oder eine noch weiter unten liegende API die Standard-Windows-Funktionen zu diesem Zweck benutzen. Und diese brauche ich ja.
Das mit dem Betriebssystem ist wahr, aber ich weiß nicht was du mir damit sagen willst :smiley:

Gruß

Hallo Fragewurm,

Naja, aber ich nehme an, dass DirectX auch irgendwie Zugriff
auf USB-Ports hat, man denke mal an Gamecontroller, etc.

Auch wenn DirectX API Funktionen benutzt, wird diese oder eine
noch weiter unten liegende API die Standard-Windows-Funktionen
zu diesem Zweck benutzen. Und diese brauche ich ja.

Zugriff auf den USB-Port haben nur die Treiber, alles Andere greift auf diese Treiber zu.
Für dein Vorhaben, musst du dich also mit der Treiberprogrammierung auseinandersetzen.
Ein kleiner Unterschied zwischen Treiber und Applikation besteht darin, dass ein Treiber in einem anderen Ring als eine Applikation läuft. Je nach Ring sind manche CPU-Befehle gesperrt. Zudemist die SPeicherverwaltung, je nach Ring auch noch unterschiedlich. Du musst dich halt in das Thema Treiberprogrammierung einarbeiten.

MfG Peter(TOO)

Hallo Shari,

mein ursprüngliches Ziel war es nämlich eigentlich, das
Bild einer Webcam auszulesen, aber ich hatte schon
lange vor auf die USB Schnittstelle zuzugreifen und wenn
ich das schaffen würde, wäre es auch nicht schwer,
das mit der Webcam zu realisieren.

Die USB-Schnittstelle hat mit dem Zugriff auf
den Video-Stream nichts zu tun.

Das machst Du mit dem Media-SDK, insbesondere
‚Direct-Show‘ (http://msdn2.microsoft.com/en-us/library/ms867701.as…):

 The DirectShow SDK offers a powerful digital 
 media streaming architecture, high-level APIs, and 
 an extensive library of plug-in components called 
 filters that have been field-tested over several years 
 of use

Hier findest Du noch einige Infos zu diesem Thema:
http://www.codeproject.com/useritems/VideoImageGrabb…

 ... have been looking for some simple code to 
 read images from movies in any format and from 
 the webcam. Here, I want to share my experiences 
 in this API jungle with you.

Grüße

CMБ

Schau dir mal http://libusb.sourceforge.net/ an.

lg

Bzw. http://libusb-win32.sourceforge.net/

Guten Tag,

ich bedanke mich hiermit herzlich für die Antworten und Links!
Ich hatte mich bereits ein wenig mit Treiberdevelopment auseinandergesetzt, das werde ich dann nun fortsetzen.
Sollte ich währenddessen weitere Fragen haben, werde ich mich hier melden :smile:

Gruß
Shahri