El tema esta en que en la rutina se hace una comuncacion con un modulo bluetooth con comandos AT, el bluetooth le devuelve al PIC unos caracteres ("\n\rOK\n\r\n\r000982737283823,002002902,Nombre\n\rDONE\n\r") los del parentesis me los he inventado, ahora mismo no se cuales son de memoria pero es algo asi. La cuestion es que lo descarto todo menos 000982737283823,002002902,Nombre que es lo que guardo en el data[50].
Antes de llegar al return los saco por la pantalla para ver si han llegado bien, hasta aqui todo bien, se imprimen correctamente en la pantalla. Justo despues de esto hago un return data; para volver al programa principal donde se ha llamado a esta rutina. En el programa principal llamo a la rutina de esta manera:
datos[0]=BT_busqueda();
y a continuacion vuelvo a imprimir esta vez datos una linea mas abajo, con lo cual se deberian imprimir las mismas cosas en una linea y en otra. Lo que pasa es que en la linea de abajo se escriben unos pocos caracteres y no tienen nada que ver con los que deberian ser.
Por cierto en el programa que he puesto en el primer mensaje no sale la parte de imprimir en pantalla.
Os paso el nuevo codigo:
char data_in[50],data[50];
char BT_busqueda(){
int8 i;
for(i=0;i<50;i++){
data_in=" ";
data=" ";
}
printf("ATDI,1,00000000\r");
for(i=0;i<50;i++){
data_in=fgetc(BLUETOOTH);
if(data_in=='D'){
if(data_in[i-1]==10){
break;
}
}
}
for(i=9;i<50;i++){
if(data_in==13){
break;
}
data[i-9]=data_in;
}
gclcd_gotoxy(5,35);
printf(gclcd_putc,"%S"data); // imprimo en pantalla, hasta aqui todo bien
return data;
}