parseInt und parseFloat über Serial1

OP #4924949
Hallo Forum,

ich möchte beim Arduino gerne über die Schnittstelle Serial1 (RX/TX) 
Integer- und Floatzahlen übertragen. Ich habe das mit parseInt() 
versucht. Da kommt aber nichts an. Hier die Programme:
Der eine Leonarde sendet:
1
void setup() {
2
    Serial.begin(9600);
3
}
4

5
void loop() {
6
    Serial1.println(222);
7
}

Der andere Leonardo empfängt die Daten:
1
void setup() {
2
    Serial.begin(9600);
3
}
4

5
void loop() {
6
    int fff;
7
    fff = Serial1.parseInt();
8
    Serial.print(fff);
9
    Serial.println();
10
}

Die Ausgabe ist immer 0.
Die Verbindung zwischen den beiden Arduinos funktioniert aber.

Die Abfragen parseInt/parseFloat sind eigentlich ohnehin zu langsam. 
Gibt es da eine bessere Methode ?
Persönliche Seite #4925026
Hallo,

(ich vermeide Arduino wo es nur geht und habe deswegen auch wenig Ahnung 
von der API, aber)

parseInt() kingt so, als ob aus mehreren ASCII-Zeichen ein Int 
zusammengebaut wird, also aus
1
"1234" /* entspricht */ '1', '2', '3', '4'
 wird
1
(int)1234

das bedeutet aber auch, dass man eine ASCII codierte Zahl senden muss, 
also
nicht
1
Serial1.println(222);
 sondern
1
Serial1.println("222"); /* als stringin Anfuehrungszeichen */

Die (sehr wahrscheinlich) schnellere Methode wäre die 
Standard-C-Funktion atoi().

Mit freundlichen grüßen,
N.G.
Gast #4925213
Es wird beim Senden Serial initialisiert und Serial*1* benutzt. 
Funktioniert das so? Ähnliches auch beim Empfangen.

Hast du schon das Senden und Empfangen von Strings probiert?
#4925264
Belo L. schrieb:
> ich möchte beim Arduino gerne über die Schnittstelle Serial1 (RX/TX)
> Integer- und Floatzahlen übertragen. Ich habe das mit parseInt()
> versucht. Da kommt aber nichts an.
Hast Du die RX/TX-Leitungen zwischen den Schnittstellen der Boards 
gekreuzt?

Und wie lang sind die Leitungen zwischen den Boards?
Breadboard-Jumperkabel mit 20cm Länge, oder was?
Gast #4925266
yesitsme schrieb:
> Es wird beim Senden Serial initialisiert und Serial*1* benutzt.
> Funktioniert das so? Ähnliches auch beim Empfangen.
>
> Hast du schon das Senden und Empfangen von Strings probiert?
Jürgen S. schrieb:
> Belo L. schrieb:
>> ich möchte beim Arduino gerne über die Schnittstelle Serial1 (RX/TX)
>> Integer- und Floatzahlen übertragen. Ich habe das mit parseInt()
>> versucht. Da kommt aber nichts an.
> Hast Du die RX/TX-Leitungen zwischen den Schnittstellen der Boards
> gekreuzt?
>
> Und wie lang sind die Leitungen zwischen den Boards?
> Breadboard-Jumperkabel mit 20cm Länge, oder was?


Belo L. schrieb:
> Die Verbindung zwischen den beiden Arduinos funktioniert aber.
OP #4925603
ui, vielen Dank für die Antworten. Sorry für die späte Antwort. Ich 
hatte wohl Thread beobachten nicht eingeschaltet und wurde deswegen 
nicht benachrichtigt.

Inzwischen klappt es. Weiß nicht mehr genau, was es war. Vielleicht, 
weil ich Seral initialisiert habe und auf Serial1 geschrieben habe.

Vielen Dank, waren nützliche Hinweise.

Belo

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.