Forum: Mikrocontroller und Digitale Elektronik Teensy 2.0 ++ Keyboard Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich würde gerne einen Teensy 2.0 ++ als Keyboard benutzen.
Ich habe zur "Entwicklung" Teensyduino verwendet (wird über Arduino 
drüber installiert und enthält passende libs).

Mit folgendem Codebeispiel funktioniert der Teensy bei fast allen 
Geräten.
1
loop(){
2
   delay(2000);
3
   Keyboard.press('c');
4
   Keyboard.release('c');
5
}

Leider funktioniert das ganze bei genau einem Android Gerät (und genau 
für dieses brauche ich das ganze) nicht: Ab und an, wird ein c 
ausgegeben, dann wieder nicht. Und mit einem mal werden nur noch Keydown 
Events gesendet, so dass etwa 5 c's pro Sekunde getippt werden.
Eine normale USB Tastatur geht aber an dem Gerät.

Ich hab nicht herausfinden können, woran es liegt, dass sich der Teensy 
gerade mit dem einen Android Gerät nicht verträgt. Die Android Version 
ist hier 5.1.1

Auf meinem Handy mit Android 6 irgendwas geht es.


Soweit ich das verstehe, emuliert der Teensy das USB Softwaretechnisch?
Ist hier eventuell ein Timing Problem vorhanden? Weiß jemand was ich 
noch versuchen könnte, um das Problem in den Griff zu bekommen?

Hier gibt es auch einen Post dazu: 
https://electronics.stackexchange.com/questions/24112/teensy-usb-keyboard-android

Seine Lösung war eine gewissen Modus zu verwenden (Disk(internal) + 
Keyboard), das hat bei mir aber nicht gefruchtet.
Ohne die Arduino IDE habe ich das ganze noch nicht gebaut. Aber wenn das 
ja so geht, scheint ein Timing Problem doch in Frage zu kommen, da das 
Arduinozeug anscheinend ziemlich aufbläht.

Ich wäre für ein paar Tipps sehr dankbar.


Schöne Grüße

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Delay von ca. 20 ms zwischen keydown und keyup einfügen.

Die Zeit kann man anpassen, muss etwas größer als das Abfrageintervall 
vom USB sein. Idee ist das das keyup und keydown Event nicht in 
demselben USB Paket landet.

von Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

das habe ich schon probiert.
Ich hatte die Werte 1, 10, 20 und 100 versucht.
Hat leider nichts gebracht.

von Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also mit einem KEyEventViewer auf Android sehe ich, dass wie wild 
KeyDown Events gesendet werden und diese als RepeatKeyPress erkannt 
werden.

Ich weiß leider nicht wie eine USB Keyboard konrekt funktioniert, aber 
es scheint mir, als ob der Controller diese Events immer und immer 
wieder sendet, weil er in irgendeiner Schleife hängt.

Soweit ich weiß pollt der Host die Daten, und der Teensy soll diese dann 
schicken. Werden die Daten quittiert? Ich nehme an schon. Wenn die 
Quittung nicht zeitnahe kommt, wird wohl eine Retransmission versucht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.