Forum: Mikrocontroller und Digitale Elektronik arduino code-durchlauf


von Max (Gast)


Lesenswert?

Hallo,
ich habe mal eine frage zum ablauf eines durchlaufes.
ich habe den beispielcode um daten per Serial.read() einzulesen
1
int incomingByte = 0;   // for incoming serial data
2
3
void setup() {
4
  Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
5
}
6
7
void loop() {
8
9
  // send data only when you receive data:
10
  if (Serial.available() > 0) {
11
    // read the incoming byte:
12
    incomingByte = Serial.read();
13
14
    // say what you got:
15
    Serial.print("I received: ");
16
    Serial.println(incomingByte, DEC);
17
  }
18
}

dazu hätte ich jetzt zwei fragen. Was macht der controller, wenn er in 
der zeile
incomingByte = Serial.read();
ist? bleibt er dort stehen? also wartet er dort so lange, bis etwas 
kommt?
Das zweite wäre, was genau ich eingebe. gebe ich eine 1 rein, bekomme 
ich eine 49 heraus. bei 2 -> 50 usw. a ist 97.
Das werde ich aber wohl noch rausfinden.

von isidor (Gast)


Lesenswert?

Die Zeile vorher sagt es doch schon:

if (Serial.available() > 0)
{
.......  dann Zeichen abholen
}

Das Ergbins des Aufrufs Serial.available() ist ungleich null
wenn ein oder mehrere Zeichen abhgeholt werden können.

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Max schrieb:
> Das zweite wäre, was genau ich eingebe. gebe ich eine 1 rein, bekomme
> ich eine 49 heraus. bei 2 -> 50 usw. a ist 97.
> Das werde ich aber wohl noch rausfinden.
Stichwor: ASCII-Code 
(http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange)
Du gibts keine 1 sondern eine '1', also den String bzw. den Charakter 
'1', ein. Die 49 die du siehst, ist der ASCII-Code fuer die '1', 50 ist 
der ASCII-Code fuer die '2', usw.

Max schrieb:
> Was macht der controller, wenn er in
> der zeile
> incomingByte = Serial.read();
> ist? bleibt er dort stehen? also wartet er dort so lange, bis etwas
> kommt?
http://arduino.cc/en/Serial/Read
1
Returns
2
3
the first byte of incoming serial data available (or -1 if no data is available) - int

von Jonas L. (Firma: JL-Elektronik) (jonas1984) Benutzerseite


Lesenswert?

Hallo,
Also am der Stelle incomingByte=Serial.Read() hält das Programm nicht 
an. Falls Daten empfangen wurde (wird ja mit der if Abfrage geprüft) 
werden diese in der variable incomingByte abgelegt.
Zu deiner Frage nach der Ausgabe befragt mal google nach ASCI Code.
Gruß Jonas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.