
embedded24.net - USB HID Host Treiber für Windows
USB Schnittstellen für Steuerungsaufgaben zu verwenden ist allgemein üblich in der Elektronik. Es gibt unzählige Mikrocontroller mit USB von einer ganzen Menge Hersteller, welche die notwendige Firmware schon mitbringen. Aber auf PC Seite ist es immer noch mit einigem Aufwand verbunden, wenn man den USB nutzen will. Sparen Sie sich die Mühe und verwenden Sie die AHID Bibliothek.
Funktionen
- AHid_Init(): Initialisiert den Treiber.
- AHid_Register(): Registriert die Schnittstelle.
- AHid_Deregister(): Entfernt eine Schnittstelle.
- AHid_Write(): Schreibt Daten.
- AHid_Read(): Ließt Daten ein.
- AHid_Request(): Fordert einen Feature Report an.
- AHid_Attached(): Stellt Anschluß an den USB fest.
- AHid_Find(): Sucht die Schnittstelle am Bus.
- AHid_Info(): Zeigt Treiber-Infos an.
Konzept
Die Bibliothek wird durch einmaligen Aufruf der Funktion AHid_Init() initialisiert.
Mit AHid_Register() erhält man Zugriff auf das gewünschte USB-Gerät. Die Funktion öffnet eine
Schnittstelle für den Datentransfer.
AHid_Write() sendet Daten an das USB-Gerät. Hierbei wird ein Interrupt-
oder Control-Transfer (Feature Report) verwendet (je nach Festlegung bei der Registrierung)

Bild: Transfer zwischen USB-Gerät und Host-Anwendung
Der Datenempfang erfolgt durch AHid_Read(). Bei Interrupt-Transfers wird ein eigener Thread gestartet, der fortlaufend
die Schnittstelle auf ankommende Daten hin prüft. Sobald Daten vorliegen, wird an die Anwendung eine
RECEIVED-Nachricht verschickt. Innerhalb der Nachrichtenschleife kann man dann auf diese Daten mit
AHid_Read() zugreifen. Der Empfang von Feature Reports unterscheidet sich etwas von diesem Ablauf.
Feature Reports müssen nämlich aktiv angefordert werden, was die Funktion AHid_Request() erledigt. Nach
erfolgreichem Erhalt des Feature Reports wird wiederum eine RECEIVED-Nachricht verschickt und AHid_Read()
erledigt dann den Rest.
Durch dieses Konzept werden alle eingehenden Daten (unabhängig vom Transfertyp) an eine Stelle
der Nachrichtenschleife transportiert. Das erleichtert das Erstellen einer Zustandsmaschine.
Die Funktion AHid_Attached() stellt fest, ob das USB-Gerät am Bus angeschlossen oder entfernt wurde und gibt einen
entsprechenden Wert zurück. AHid_Find() macht in etwa das Gleiche. Die Funktion sucht das USB-Gerät und gibt über
den Rückgabewert den entsprechenden Zustand aus.
AHid_Info() hat im normalen Betrieb keine Funktion. Es zeigt lediglich ein paar
Informationen über die AHID Bibliothek an.

Bild: Transfer zwischen USB-Gerät und Host-Anwendung
Features
- HID USB Host Treiber DLL fuer Windows
- Kombinierbar mit C++, C++/CLI, C#, VB und mehr
- Unterstützt 32 und 64 Bit Windows
- Unterstützung fuer USB Verbundgeräte
- Automatische Geräte-Erkennung
- Multithread-Ansatz für nicht blockierenden Datentransfer
- Basiert auf dem Windows Nachrichten-System
- Arbeitet mit Input, Output und Feature Reports
- Erlaubt unterschiedliche Report Id's
- Empfohlen für niedrige und hohe Datenraten
- Unterstützt sehr hohe Datenraten mit bis zu 64 kBytes/s
- Demo Anwendungen für C++/CLI, C# and VB verfügbar
