Ich schreibe eine App in Galaxy Registerkarte P7300 mit einem Schlüssel (SCSI-Gerät) über otg Kabel zu kommunizieren. Ich kann Daten erstmalig mit bulkTransfer() lesen, kann es aber beim nächsten Mal nicht. Dann benutze ich Ellisys Visual USB, um Daten zu schnüffeln, und ich finde, dass der Schlüssel wirklich 13 Bytes Daten zurückgibt. Aber im Android-Client (GT-P7300) bekomme ich -1, dass BulkTransfer zurückgibt. Ich habe meine Idee ausgelaufen. Danke für alle, die mir ein paar Hinweise geben können.Android BulkTransfer Return -1 beim Lesen von Daten, aber es gibt wirklich einige Daten im Puffer
Antwort
Wenn die Übertragung USB-Massen verwenden, hier ist eine Liste der Dinge zu überprüfen, wenn Transaktion
a) Überprüfen Sie die Richtung des Endpunkt fehlschlägt Sie die bulkTransfer Funktion
b bestanden haben) dafür sorgen, dass der Puffer hat eine ausreichende Länge eingehende Daten speichern
c) das Längenfeld ist vielleicht das wichtigste. Wenn Sie die genaue Größe der Antwort kennen, verwenden Sie sie.
d) Der Timeout-Parameter. Wenn Sie eine Abfrage an das Gerät senden und beim Abhören der Antwort nicht genügend Zeitlimit angeben, kann der BulkTransfer -1 zurückgeben.
Es sieht so aus, als ob das Timeout das Verhalten in Ihrem Fall beeinflusst. Mein Vorschlag ist, die genaue Anzahl der Bytes in den Längenfeldern für jede Antwort zu verwenden und ein längeres Zeitlimit (wie 1000) zu verwenden, so dass Sie genügend Zeit geben, um die Massenanforderung abzuschließen.
Danke Jan, was du gesagt hast Ich habe versucht, mein Problem ist die bulkIn Endpunkt zurückgeben ein Stall-Signal, also sende ich einen Befehl, um den Stall zu löschen.Nachdem kann ich die Daten normal erhalten, aber wenn das Stall-Signal wieder auftrat Ich sende den Befehl, um es zu löschen, während es nicht gut funktionierte, wenn ich Daten erhalte. Es gibt -1 zurück, aber es gibt einige Daten tatsächlich. Ich habe meine Ideen auslaufen lassen. –
@ Wayne.liu sind Sie in der Lage, dieses Problem zu lösen? Wenn ja, bitte teilen Sie Ihre Erkenntnisse! –
@ Wayne.liu Bitte teilen Sie die Lösung für das Problem, das Sie konfrontiert waren. Danke – Sagar
Es ist zu spät, um eine Lösung zu posten, aber für den Fall, dass jemand in Zukunft Hilfe braucht, kann man von hier eine Antwort bekommen.
Ich konfrontiert das gleiche Problem. Ich benutzte Android (Samsung Galaxy S3) als USB-Host-Gerät. Ich habe den Lese-Endpunkt herausgefunden und schreibe den Endpunkt, der keine Daten mit USB BulkTransfer überträgt. Ich habe versucht, die Endpunkte für den Host-Modus zu wechseln, es erkannt und erfolgreich die Daten geschrieben/gelesen.
mReadEndpoint = mDataInterface.getEndpoint(0);// tweaking endpoints // 1 was for read and 0 was for write
mWriteEndpoint = mDataInterface.getEndpoint(1);
P.S gibt es eine Anwendung für Android namens "USB-Gerät Info". Es hat mir sehr geholfen, Schnittstellen und Endpunkte meines USB-Geräts zu verstehen.
- 1. Warum Cassandra Daten lesen kann es einige Daten überspringen?
- 2. Lesen von Inode gibt ungültige Daten zurück
- 3. Syntaxfehler beim Lesen von Daten mit Eingabe()
- 4. Apache Cassandra Lesen von Daten gibt ReadFailureException
- 5. Fehler beim Einfügen von Daten im Binärbaum
- 6. Gibt es eine Möglichkeit, HD-Daten nach EOF zu lesen?
- 7. psycopg2 nicht wirklich Einfügen von Daten
- 8. Highstock Bereich Diagramm macht eine Lücke, aber es gibt Daten
- 9. Hinzufügen von Daten zu ArrayList beim Lesen von Daten aus Excel mit POI Apache
- 10. Puffer Aufgaben Daten mit Timeout
- 11. Daten von SDCard in Android lesen
- 12. select() blockiert, wenn einige Daten zu lesen sind
- 13. hadoop mongodb Konnektor Daten lesen, aber Ausgabe als mysql Daten
- 14. Serielle Daten mit Puffer sortieren
- 15. USB BulkTransfer zwischen Android Tablet und Kamera
- 16. Gibt es Immortal Object wirklich?
- 17. Lesen von unformatierten Daten
- 18. OpenGL es 2.0 Lesen Tiefe Puffer
- 19. Lesen von Daten von außerhalb erstellt von
- 20. android Fehler beim Empfangen von Daten von Android ins Web
- 21. Wie lösche ich vorherige Daten im Socket-Puffer?
- 22. Return Daten von Dialog für den Benutzer in Android angezeigt
- 23. Anzeige von SQLite-Daten im Dialogfeld Android
- 24. OleDb vs DataReader beim Lesen von Daten von Oracle
- 25. Android-Post-Daten im Web
- 26. Android - Sicherheit beim Speichern von Daten
- 27. lesen komprimierte Daten gibt verschiedene Ergebnisse
- 28. Ich habe einige wirklich große String-Daten, die ich mit meiner Android-App bekommen soll.
- 29. SAS beim Lesen von Varbinary-Daten von Amazon RDS fügt Leerzeichen am Ende der Daten an. Können wir es vermeiden?
- 30. Lesen von Daten aus Excel
Eine Rückgabe einer negativen Zahl entspricht normalerweise einem Fehlercode für eine Funktion wie diese. Überprüfen Sie, welche Klasse Sie für 'ERROR_'-Variablen verwenden. –
Danke, Matt Clark. Mach mich verwirrt ist, dass der Schlüssel tatsächlich die Ture-Daten zurückgibt, aber BulkTransfer gibt -1 zurück. –
Ich bin froh, dass du dein Problem herausgefunden hast. Glückliche Kodierung! Und frohe Weihnachten! : p –