Hex Wert wird nicht erkannt

Gast #4932840
Lesenswert?
• ▲
▼
HI, ich habe ein kleines Problem mit einer If abfrage...

ich empfange ein Array..  dort HAT der [8] den Wert 0xDD.
Allerdings reagiert meine if Abfrage nicht dadrauf.
1
if(uart_string[8] == 0xDD){
2
  uart_string[0] = uart_string[8];
3
  rs485_puts(uart_string,sizeof(uart_string));
4
}

gehe ich hin und sage != 0xDD dann springt der auch in meine Abfrage und 
sendet meinen uart_string zurück, dann sehe ich auch dass es 0xDD ist.
1
if(uart_string[8] != 0xDD){
2
  uart_string[0] = uart_string[8];
3
  rs485_puts(uart_string,sizeof(uart_string));
4
}

Ausgabe:
 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|16|17|18|19|
DD| 0| 0| 0| 0| 0| 0| 0|DD| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| A|
Gast #4932896
Lesenswert?
• ▲
▼
Auch hier gilt wieder: Warnungen einschalten! Zumindest bei der != 
-Version wird der Compiler sagen, dass es "immer" true ist.

Ansonsten generell: Speicher-Bereiche (auch "uart"-"Strings") nach 
möglichkeit immer UNSIGNED. Ich weiss, es ist ein risiges Feld, aber das 
ist sicher auch ein grund, warum es (anders als bei int) 3 
unterschiedliche char-typen gibt:

- signed char
- unsigned char
- char (per Schalter oder Definition signed ODER unsigned)

wenn man etwas als char definiert, dann bitte auch nur Zeichen von 
0..127 und nicht 0xdd.
Gast #4933408
Lesenswert?
• ▲
▼
Achim S. schrieb:
> Auch hier gilt wieder: Warnungen einschalten! Zumindest bei der !=
> -Version wird der Compiler sagen, dass es "immer" true ist.
>
> Ansonsten generell: Speicher-Bereiche (auch "uart"-"Strings") nach
> möglichkeit immer UNSIGNED. Ich weiss, es ist ein risiges Feld, aber das
> ist sicher auch ein grund, warum es (anders als bei int) 3
> unterschiedliche char-typen gibt:
>
> - signed char
> - unsigned char
> - char (per Schalter oder Definition signed ODER unsigned)
>
> wenn man etwas als char definiert, dann bitte auch nur Zeichen von
> 0..127 und nicht 0xdd.

Danke!!!
das wars:) habe nun sowohl sende als auch empfangs "char" auf unsigned 
gesetzt.

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