Android.hardware.usb API Beschreibungen...

  • Antworten:0
Christian S.
  • Forum-Beiträge: 43

21.08.2012, 20:42:16 via Website

Hallo ihr,
ich schreibe derzeit eine Anwendung, um Daten von einem USB-Device zu empfangen / zu senden. In der Google Reference ist auch einiges zu finden, sodass das Device und die Endpoints richtig erkannt werden. Leider ist die Reference zum Teil etwas dürftig beschrieben, was beispielsweise "controlTransfer" in der Klasse UsbConnection gut zeigt:

requestType request type for this transaction
request request ID for this transaction
value value field for this transaction
index index field for this transaction
buffer buffer for data portion of transaction, or null if no data needs to be sent or received
length the length of the data to send or receive
timeout in milliseconds

hierbei ist mir leider nicht ganz klar, was die Variablen "value" und "index" sein sollen.


Dann beantworte ich mir meine Frage eben selbst:

Ich habe mir die USB-Kommunikation im Allgemein etwas genauer zu Gemüte geführt (Link). Und konnte nun den richtigen requestType zusammenstellen. Um die richtigen Variablen für request, value und index zu finden, habe ich zwar eine weniger schöne, aber effektive Lösung gewählt -> Try and Error.

Hierfür habe ich mehrere for-Schleifen geschachtelt und die sinnvollen Variablen durchprobiert.

Mein Quellcode ist dabei wie folgt aufgebaut:

Zu Beginn wird nach Devices gesucht und nach Zugriffsrechte gefragt.

Anschließend suchte ich nach allen auffindbaren Interfaces des USB-Gerätes.

Als nächstes wurden die Endpunkte (Endpoints) gesucht und bestimmt ob es sich bei den Endpoints um OUT oder IN handelt.
In der HID-Device-Spezifikation steht u.a. drin, dass jedes HID-Device mindestens einen Interrupt IN haben muss.

Und abschließend eine Verbindung geöffnet. Und die verschiedenen Variablen durchprobiert.

Quellcode folgt noch...

— geändert am 22.08.2012, 19:48:42

Antworten