serial print

Hallo,
ich übe gerade alles zu Klassenerstellung. Klappt soweit prima. Aber der print-Befehl im der Methode liefert ein komisches Ergebnis: ⸮Ձklein
Kann mir jemand erklären, warum die Sonderzeichen auftauchen und die Buchstaben "zu" garnicht angezeigt werden?
Danke schon mal

class Kreis {

  public:

    Kreis (float r){
      setRadius(r);
    }
    void setRadius(float r) {
      if (r > 0) {
        _radius = r;
      } else {
        Serial.println(" zu klein");
      }
    }
    float flaeche() {
      return PI * _radius * _radius;
    }
  private:
    float _radius;
};

Kreis frank(-10.);

void setup() {
  Serial.begin(9600);

  Serial.print(" frank.flaeche ");
  Serial.println(frank.flaeche());
 }

void loop() {
}

Dein

Kreis frank(-10.);

wird "lange" vor setup() und damit vor Serial.begin() ausgeführt.
Allerdings gebe ich dir Recht: Erstaunlich, dass der bereits gefüllte Puffer bei .begin() nicht neu initialisiert wird. (Oder was sonst den Effekt verursacht)

Kann mir jemand erklären, warum die Sonderzeichen auftauchen und die Buchstaben "zu" garnicht angezeigt werden?
Danke schon mal

Das kann ich dir sagen!

Der Konstruktor ruft setRadius und setRadius ruft Serial Print
Jetzt wird aber der Konstruktor schon aufgerufen, bevor Serial initialisiert wird.
Das gibt Scherben.

Beispiel:

Erst den Eimer richtig hinstellen, und dann Wasser rein kippen.
Andersrum wird das nichts.

Das ist der Grund weshalb viele Arduino Klassen init() oder begin() Methoden haben die man selbst in setup() aufrufen muss

Danke.
Hat geholfen, wie gesagt, ich bin noch neu bei Klassen und auch unbeholfen.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.