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

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.

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.