Arduino - char einlesen

OP #3697567
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
#3697572
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.
OP #3697633
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?

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