Forum: Mikrocontroller und Digitale Elektronik Arduino - char einlesen


von Filth _. (filth)


Lesenswert?

Hallo,

ich möchte per UART Zeichen einlesen, klappt auch soweit:
1
..
2
void serialEvent() {
3
  while (Serial.available()) {
4
    // get the new byte:
5
    char inChar = (char)Serial.read(); 
6
    
7
    // add it to the inputString:
8
    inputString += inChar;
9
    
10
    int dec = inChar;
11
12
    Serial.print("CHAR: ");    
13
    Serial.print(inChar);        
14
    Serial.print(", DEC: ");       
15
    Serial.print(dec);   
16
....


Wenn ich jetzt per Serial Monitor ein "A" sende, wird es korrekt als 
Dezimalzahl 65 ausgegeben. Schicke ich aber das Sonderzeichen ← (ASCII 
Code 27) wird folgendes ausgegeben:

CHAR: ?, DEC: 63

Das ist falsch, es wurde ja ein anderes Zeichen gesendet.

Woran liegt das?

Danke

von Oliver R. (orb)


Lesenswert?

ASCII 27 ist der ESC-Code, dem ist kein Zeichen zugeordnet, der hat 
üblicherweise andere Funktionen (Abbruch, Befehlseinleitung ...)
Ich kenn die Arduinofunktionen nicht, aber es kann sein, daß die damit 
durcheinander kommen oder bei Sonderzeichen pauschal das '?' ausgibt.
ASCII 63 ist übrigend das '?', die Wandlung funktioniert.

von Filth _. (filth)


Lesenswert?

Ich glaube ich hab´ ein Verständnisproblem:

Eingabe (HEX)
01
01
01
01
76
07
00
15
01
55
C7

Ausgabe aus dem oberen Beispiel:

1.00<\r><\n>
1.00<\r><\n>
1.00<\r><\n>
1.00<\r><\n>
118.00<\r><\n>
7.00<\r><\n>
0.00<\r><\n>
21.00<\r><\n>
1.00<\r><\n>
85.00<\r><\n>
-57.00<\r><\n>

Es ist alles richtig bis C7, was Dezimal 199 entspricht. Da gibts 
scheinbar einen Überlauf und es wird -57 ausgegeben. Wie kann man das 
korrigieren?

von H.Joachim S. (crazyhorse)


Lesenswert?

unsigned char könnte die Lösung sein.

von Kaj (Gast)


Lesenswert?

Filth __ schrieb:
> was Dezimal 199 entspricht. Da gibts
> scheinbar einen Überlauf
Könnte daran liegen das char nur bis +127 geht...

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.