Arduino --> Android bluetooth-Kommunikation (empfangen von text-mit-App-Inventor)
Ich bin erstellen einer Arduino-basierten Drohne, die ferngesteuert werden können durch eine Android-Applikation.
Um die Benutzerfreundlichkeit zu verbessern, ich möchte den Beschleunigungsmesser/Kompass-sensor die Werte auf, so dass ich benötigen, senden Sie von Arduino auf Android, via Bluetooth. Die Werte sind einfache integer-Zahl zwischen 0 und 180.
Die beste Lösung, die ich dachte, ist die Verkettung alle Werte (mit Komma getrennt) in einer Zeichenkette, und senden Sie es an die app, das wird trennen Sie die einzelnen Werte (die Zeichenfolge wird nur gesendet, wenn die Anwendung es erfordern, wenn in diesem Fall ein 'z' byte empfangen wird durch den Arduino).
if (Serial.available() > 0) {
if (Serial.read()=='z'){
Serial.println(String((int)sensor1) + ',' + String((int)sensor2) + ',' + String((int)sensor3));
}
}
Hier sind die App-Inventor-Blöcke:
Scheint es, dass die Werte empfangen werden ziemlich gut, aber es ist ein kritisches Problem: somethimes der string ist nicht gut erhalten, und dass die Ursache für viele Fehler. Manchmal ist die empfangene Zeichenfolge (zum Beispiel) 10,10,10, aber somethimes es ist 10,10,1010 oder nur 10,10 ecc...
Ich habe auch versucht zu senden die Werte eins nach dem anderen, aber das Ergebnis war fast das gleiche.
Ich habe sogar set 'numberOfBytes' -1, mit einem delimiter-byte, aber auch dies war leider nicht erfolgreich.
Ich immer ganz verrückt, also ich hoffe es gibt einen anderen Weg zu schicken thoose ganzen zahlen zu Android, oder um das system zu reparieren ich bereits mit.
- siehe diesem thread in der App-Inventor-forum oder führen Sie eine Suche für mehr information im forum gibt
- danke! in dem forum, die Sie vorgeschlagen, ich fand die Lösung für dieses problem!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
das problem ist, dass Sie nicht signalisiert das Ende des Strings
Ich nutzte seine Beispiel für ein Projekt und war so etwas wie dieses:
Vergleicht man die beiden codes der Unterschied wird sein " , " am Ende des print-und es löste das problem für Sie sitad
Ich benutzte Serielle.drucken senden jedes Ergebnis und dann
Serial.write('>');
als Ende-Markierung.In
appinventor
designer-Fenster festlegen der Delimiter-byte für Bluetooth-client 62 (der ASCII-Wert für die > - Zeichen ).In den Blöcken Fenster, verwenden Sie die Bluetooth -
cliant1.Receive
text und legen Sie die Anzahl der bytes, -1App erfunden werden dann gelesen, bis ein Trennzeichen gefunden wird.
Allerdings wird dazu führen, dass die app hängen bleibt, wenn Sie es nicht finden.