valor_B es un caracter ASCII y llega desde la UART, en ese ejemplo.
Creo que es mas simple asi, pero si queres hacer un string y luego comparar, entonces deberias esperar a que lleguen todos los datos e ir guardandolos.
Pero el micro no sabe cuando comienza un dato o que longitud tiene. Entonces tendrias que enviar mas cosas, como un byte de comiezo + un byte que indique la cantidad de datos, o un byte de final
Ejemplo si quisiera mandar un 'A1'
Start Cant Dato
0xFF 0x02 0x41 0x31
o
DATO----- Final
0x41 0x31 0xFF
Esto lo vas guardando en un array
char valor_B[4];
i=0;
while(1)
{
if (valor_B[i]==0xFF)
{
valor_B[i]='\0';
break;
}
i++;
}
Creo que algo asi lo haria.
--------------
Un switch es como varios if anidados. Esto es basico en C
Un equivalente por ejemplo de esto:
switch(valor_B)
{
case '1':
xxxxxx;
break;
case '2':
yyyyyy;
break;
default:
zzzzzz;
break;
}
es lo mismo que :
if (valor_B=='1')
{
xxxxxx;
}
else if(valor_B=='2')
{
yyyyyy;
}
else
{
zzzzzz;
}
Tenes que tener ojo que los if no pueden comparar un string ( valor_B == "A1" <- NO SE PUEDE) igual que en los switch solo se puede 1 solo caracter y no un string.
Vuelvo a repetir, un string es un array, vector como quieras llamarlo, una coleccion de bytes ( en caso de una string de caracteres, rempresentados en ASCII, pero siguen siendo bytes)