Forum: Compiler & IDEs parseInt und parseFloat über Serial1


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 Belo L. (belo)


Bewertung
0 lesenswert
nicht lesenswert
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 ?

: Bearbeitet durch User
von N. G. (newgeneration) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
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.

von yesitsme (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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?

von yesitsme (Gast)


Bewertung
0 lesenswert
nicht lesenswert
"If no valid digits were read when the time-out occurs, 0 is returned;" 
(https://www.arduino.cc/en/Serial/ParseInt)

Vielleicht ist es auch nützlich zu testen ob überhaupt Zeichen zum 
parsen da sind.

von Jürgen S. (jurs)


Bewertung
0 lesenswert
nicht lesenswert
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?

von besserwisser (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Belo L. (belo)


Bewertung
0 lesenswert
nicht lesenswert
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

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.