Arduino serielle Kommunikation

OP #3161913
Lesenswert?

Hallo,
ich möchte zu meinen Datenlogger einen Datumstempel hinzufügen. Es gibt 
ja die Funktion setTime(Datum+Uhrzeit). Mit der geht das ja alles sehr 
gut. Ich finde es nur nervig, dass man jedesmal das Datum erst im Sketch 
eintragen und anschließend den Sketch auf das Arduino übertragen muss.
Ich wollte jetzt über den serial Monitor eine Abfrage dazu 
programmieren.
Jedoch wartet der Arduino nicht auf die Eingabe und schreibt sofort 255.
Ich muss zugeben, dass ich nicht so fit bin mit c und auch deswegen mich 
mit dem Arduino befasse. Hab jetzt schon viel gesucht im Web, jedoch 
ohne Erfolg.
Vlt such ich auch unter den falschen Stichwörtern.

Mein Code:
1
 Serial.print("Jahr in jj: ");
2
    jj = Serial.read();
3
    Serial.println(jj);
4
    Serial.print("Monat in MM: ");
5
    mm = Serial.read();
6
    Serial.println(mm);
7
    Serial.print("Tag in TT: ");
8
    tt = Serial.read();
9
    Serial.println(tt);
10
    Serial.print("Stunde in HH: ");
11
    hh = Serial.read();
12
    Serial.println(hh);
13
    Serial.print("Minute in mm: ");
14
    mo = Serial.read();
15
    Serial.println(mo);
16
    Serial.print("Sekune in SS: ");
17
    ss = Serial.read();
18
    Serial.println(ss);
19
    
20
  
21
  setTime(hh,mm,ss,tt,mo,jj);

danke schon mal
#3161951
Lesenswert?

I have no arduino experience. However, read() functions are usually made 
to read a single byte and they do not wait if a byte is avaiable.

You probably want to set a timeout and read many bytes until a carriage 
return (Enter-key) has been received. You should also checkout the 
documentation about the available() function.
#3161974
Lesenswert?

Die "Serial.read()" Methode liest sofort den Serial Input Buffer aus. 
Stehen dort keine Daten, dann ist der Returnwert -1 (255).

Du kannst jetzt so oft "Serial.read()" aufrufen bis der Rückgabewert 
nicht mehr -1 ist oder du nutzt die Methode  "Serial.available()" vor 
dem Aufruf von "Serial.read()".

So steht es auch in den Beispielen zur Klasse "Serial".

http://arduino.cc/en/Serial/Read

Dann gibt es noch die Methode "SerialEvent". Diese wird automatisch 
aufgerufen, sobald Daten auf der Seriellen Schnittstelle eintreffen.

http://arduino.cc/en/Tutorial/SerialEvent

Du musst als in den Griff bekommen, nur dann Daten zu lesen, wenn auch 
welche eingetroffen sind.


Grüsse

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren