PIC reconocimiento de comandos mandados por RS232

Hola a todos, me gustaria que me dijesen si hay alguna forma (codigo) para reconocimiento de comandos que recibimos por el rs232 en el pic, el pic que estoi utilizando es 16f628A y utilizo ccs como copilador en c.

Hasta ahora habia pensado de hacer de esta forma pero no consigo que funcione correctamente.Lo que quiero hacer es desglozar la palabra caracter a caracter para luego poder analizar de que comando se trataba.

Código:
....configuraciones y eso...
#int_rda
void procesar() {
getc(cadena[4]);
*puntero = cadena ;
if(i==0){
i=i+1;
sprintf(var1,"%c\n",puntero);
printf(var1);
puntero++;
sprintf(var2,"%c\n",puntero);
printf(var2);
puntero++;
sprintf(var3,"%c\n",puntero);
printf(var3);
puntero++;
sprintf(var4,"%c\n",puntero);
printf(var4);
}


haber si alguien me puede guiar un poco en este tema.

bueno tambien deciros que estoi empezando con esto de la programacion en C y la utilizacion de PIC perdonarme si es una pregunta un poco absurda. Pero eso si llevo dos dias intentando de todo con bibliotecas..y diferentes funciones y siempre me da error y ya bueno me estoi desesperando un poco. GRACIASops:
 
Última edición por un moderador:
Es muy simple... imagina que mandaste un comando "suma" entonces solo tienes que ir haciendo comparaciones contra tu matriz... supon que tienes el dato recibido en una matriz char de 4 valores (char cadena[4]), entonces solo haces el siguiente codigo

Código:
if (cadena[0]=='s'){
	if (cadena[0]=='u'){
		if (cadena[0]=='m'){
			if (cadena[0]=='a'){
				a++;			//Ejecutar accion
			}
		}
	}
}

En cuanto a los errores con las bibliotecas si quieres ponlos en este post o en alguno de los temas destacados que tratan de C y con gusto te podemos desesperar mas... :D
 
Para ese tipo de código se utiliza algo parecido a esto.

Código:
int caseSwitch = 1;
switch (caseSwitch)
{
    case 1: 
        Console.WriteLine("Case 1");
        break;
    case 2:
        Console.WriteLine("Case 2");
        break;
    default:
        Console.WriteLine("Default case");
        break;
}

Mira los manuales en PDF y te harás una idea de comunicación del RS232 al PIC.

http://www.abcdatos.com/tutoriales/tutorial/z9521.html
http://www.abcdatos.com/tutoriales/tutorial/v12.html

Saludo.
Hola gracias por responder tan rapido...bueno en relacion a la hacerlo con if , else if... pues era mi primer opcion pero creo que aparte de que seria muy laborioso comparar tantos caracteres. y hacerlo con case pos estube mirando pero o no se hacerlo o no se puede.intento poner en vez de buscar un valor de numero o letra.buscar palabra.. no se si me entendeis.

switch (caseSwitch)
{
case "palabra":printf("ok");
etc....
pero no me funciona

he encontrado otra forma de acerlo es coger el dato recibido y meterlo caracter a caracter en un char variable[32]. lo malo es que si comparo por ejemplo.

if(variable=="variable")

no funciona siendo la variable igual.
bueno espero que me vallais entendido..os habreis dado cuenta de que mis conocimientos son muy basico la verdad estoi empezando ahora..perdonarme si son preguntas tontas pero la verdad llevo ya varios dias con esto y estoi un poco estancado. gracias
 
La comparacion if(variable=="variable") no funciona por que C maneja las variables char como caracteres individuales y no como una palabra completa....

En todo caso lo que podrias hacer es guardar el caracter de comparacion en alguna variable de matriz y hacer una rutina con un for que vaya comparando letra a letra....
 
Atrás
Arriba