Autor Tema: Recibir por rs232 una cadena de caracteres (del cual nose su longitud)  (Leído 2850 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado djdapinrmx

  • PIC10
  • *
  • Mensajes: 6
Hola a todos, buen dia.

Datos:
PIC18F4550
ADM232
24FC256
PCWH CCS C IDE 4.020


Problematica:

Recibir por el puerto rs232 una cadena de caracteres (del cual nose su longitud), procesar y mostrar los datos deseados.


Como estoy aprendiendo a usar punteros decidi hacerlo con el codigo de abajo:



#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C0,rcv=PIN_B2,bits=8,stream=PC1)

int1  fi=0;
int   i=0;
char  eti=0, *ptr, *pt, probe[];

#int_RDA
RDA_isr()
{
*ptr = getchar(PC1);
fi=1;
i++;
}

void main()
{
   fprintf(PC1,"Encendido!\n\r");
   ptr = (unsigned int)&eti;
   fprintf(PC1,"\n\reti mide :%u bytes\n\r", sizeof(eti));
   fprintf(PC1,"\n\reti se localiza en :%u\n\r", &eti);
   fprintf(PC1,"\n\rUn char mide :%u bytes\n\r", sizeof(char));
   fprintf(PC1,"\n\rptr mide :%u bytes\n\r", sizeof(ptr));
   
   while(TRUE)
   {
      if (fi==1)
      {
         fprintf(PC1,"\n\rSe recibio:%c\n\r", *ptr);
         fprintf(PC1,"\n\rCon tamano de:%u bytes\n\r", sizeof(*ptr));
         fprintf(PC1,"\n\rSe escribio en la direccion:%u\n\r", ptr);
         /*if (((*ptr) == 'E'))
         {
            pt = &eti;
            for (j=0; j<=i; j++)
            {
               fprintf(PC1,"\n\rSe recibio:%c\n\r", *pt);
               delay_ms(25);
               fprintf(PC1,"\n\rEn la direccion:%u\n\r", pt);
               delay_ms(25);
               pt++;
            }
         }*/
         ptr++;
         fi=0;
      }
   } 
     
}

Como se puede ver apenas estoy comenzando con el proyecto, o mejor dicho, aquí me estoy quedando atorado ya que cuando le empiezo a mandar datos desde la computadora me maraca lo que se recibio, el tamaño (que es el tamaño de un char) y la direccion donde se escribio.

Al principio todo va bien como ejemplo: cuando envio la letra A (por la computadora con el Serial Port Monitor que viene en tools de ccs ) :
En el Serial Port Monitor aparece:

Se recibio: A
Con tamaño de: 1 bytes
Se escribio en la direccion: 115

Pero cuando empiezo a mandar y mandar letras, la direccion varia indefinidamente, por ejemplo:

El primer caracter lo guarda en la 115 luego en la 116 y luego en la 117 pero de repente se guarda en la 113 (que no siempre es la 113) y vuelve a empezar la cuenta normal hasta llegar a un limite (que es variante) y vuelve a empezar en la 113 y asi cíclicamente.

Espero haberme explicado bien y que me puedan ayudar; si hay otra alternativa sera bienvenida. Gracias de antemano y espero sus comentarios.

Desconectado djdapinrmx

  • PIC10
  • *
  • Mensajes: 6
Re: Recibir por rs232 una cadena de caracteres (del cual nose su longitud)
« Respuesta #1 en: 17 de Noviembre de 2010, 11:22:20 »
Pido disculpas por abrir dos temas, pero nunca vi que se abriera este, pense que hubo un error. Podria cerrar este y abri el de punteros? Gracias


 

anything