Creo que ya he encontrado la solucion, era una tonteria en la que no me habia fijado. En un bit de flanco que tenia para saber si habian llegado datos en vez de ponerlo a 0 haciendo flag=0 habia puesto flag==0 sin querer y solo por esa tonteria, ni lo detectaba el CCS ni me habia dado cuenta yo, pero no funcionaba.
Otra pregunta, a lo mejor tendira que abrir otro hilo pero por si es de facil solucion lo digo aqui, una vez que me han llegado los datos los guardo en un bufer y los muestro en una LCD asi:
printf(gclcd_putc,"1.%c 2.%c 3.%c",cbuff[0],cbuff[1],cbuff[2]);
y me queda lo siguiente:
1. 2.O 3.K // esto solo es para ver que llega bien el dato y en que posicion del bufer esta cada letra.
y luego para saber si ha llegado un OK hago esto:
if(cbuff[1]=="O" && cbuff[2]=='K'){ // Comparo inicio del buffer con comando
gclcd_gotoxy(10,40);
printf(gclcd_putc,"OK");
}
Pero esto no me funciona y no se por que. El codigo es el siguiente:
void procesa_comando(void){
flagcommand=0;
if(cbuff[1]=="O" && cbuff[2]=='K'){ // Comparo inicio del buffer con comando
gclcd_gotoxy(10,40);
printf(gclcd_putc,"OK");
}
if(cbuff[1]=='C' && cbuff[2]=='O'){ // Comparo inicio del buffer con comando
gclcd_gotoxy(10,50);
printf(gclcd_putc,"Conexion");
}
if(cbuff[1]=='D' && cbuff[2]=='I'){ // Comparo inicio del buffer con comando
gclcd_gotoxy(10,60);
printf(gclcd_putc,"Desonexion");
}
gclcd_gotoxy(10,n);
printf(gclcd_putc,"1.%c 2.%c 3.%c",cbuff[0],cbuff[1],cbuff[2]);
inicbuff(); // Borro buffer.
if(n<120){
n=n+10;
}else{
n=10;
}
}
Alguien sabe por que puede ser???