Go Down

Topic: Fragen zu Serial.read() (Read 322 times) previous topic - next topic

Ballibum

Hallo Forum,
ich versuche mich gerade mit dem Serial.read();
Dabei verwende ich folgende Funktion:
Code: [Select]
void readauswerten()
{
  if (Serial.available() > 0)
  {
    char c = Serial.read();
    Serial.print("Eingegeben: ");
    Serial.println(c);
  }
}

Nun ist es so das nicht jedes Zeichen was ich eintippe auch ausgegeben wird und ansonsten jedes Zeichen einzeln. Ich hätte es jetzt gerne das meine Zeichenkette als ganzes und zusammen ausgegeben wird.
Das Problem, das einige Zeichen fehlen, liegt wohl daran das in einer meiner Funktionen ein Delay ausgeführt wird. Kann ich das dennoch kombinieren?
mfg
Balli

Hier der Part des Programmes um das es geht:
Code: [Select]
void loop()
{
  uhrzeitauswerten();
  readauswerten();
}

void readauswerten()//
{
  if (Serial.available() > 0)
  {
    char c = Serial.read();
    Serial.print("I received: ");
    Serial.println(c);
  }
}


void uhrzeitauswerten()//Zeitsteuerung
{
  DateTime now = RTC.now();
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
  //LEDs anschalten
 
  if(now.hour()>= LEDSon && now.hour()<LEDSoff)
  {
    digitalWrite(pin09,HIGH);
    digitalWrite(pin10,HIGH);
    digitalWrite(ikea,LOW);
  }
  else
  {
    digitalWrite(pin09,LOW);
    digitalWrite(pin10,LOW);
    digitalWrite(ikea,HIGH);
  }
  delay(1000); //HIER IST DAS KRITISCHE DELAY
}

Ballibum

Also ich habe das Delay jetzt einfach entfernt, das führt jedoch dazu das die Uhrzeit pro Sekunde mehrfach ausgegeben wird. Das habe ich umgangen indem ich einen Zwischenspeicher in Form einer Variable eingeführt habe und diesem den aktuellen Sekundenwert übergebe. Solange wie jetzt der Sekundenwert der RTC mit dem Zwischenspeicher übereinstand wird die Uhrzeit nicht ausgegeben, wenn sich jetzt die Sekunde der RTC ändert, wird die Uhrzeit ausgegeben und anschließend der Sekundenwert in den Zwischenspeicher geschrieben.
mfg
Tim

Go Up