|
|
USB HID Host TreiberUSB HID 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.
[Bearbeiten] Funktionen
[Bearbeiten] KonzeptDie Bibliothek wird durch einmaligen Aufruf der Funktion AHid_Init() zu Beginn 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() dient zum Senden von Daten an das USB-Gerät. Hierbei wird ein Interrupt- oder Control-Transfer (Feature Report) verwendet (je nach Festlegung bei der Registrierung). Der Datenempfang erfolgt durch AHid_Read(). Bei Interrupt-Transfers wird hierfür ein eigener Thread gestartet, der fortlaufend die Schnittstelle auf ankommende Daten hin prüft. Sobald Daten vorliegen, wird an die Anwendung eine AHID_DATARECEIVED-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 AHID_DATARECEIVED-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 überhaupt am Bus verfügbar ist 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. Mit der Funktion AHid_Flush() werden die internen Datenpuffer gelöscht. Das kann notwendig sein, falls z.B. das USB-Gerät vom Bus abgeklemmt wird, und man noch nicht ausgelesene Daten sicher löschen möchte. AHid_Info() hat im normalen Betrieb keine Funktion. Es zeigt lediglich ein paar Informationen über die AHID Bibliothek an. Die AHID Library ist eine Dynamic Link Library (DLL) und arbeitet mit verschiedenen Programmiersprachen zusammen. Sie steht als Download auf http://embedded24.net bereit. Beispiel-Anwendungen:
[Bearbeiten] Download[Bearbeiten] Diskussionhttp://www.mikrocontroller.net/topic/210792 [Bearbeiten] Kontaktrh(at)basic.io [Bearbeiten] AlternativenZu obigem Treiber gibt es u.a. folgende Alternativen, deren Sourcen frei zugänglich sind:
|