Autor Tema: Problemas con Kbhit() y puerto serie  (Leído 1660 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Estudiante PFC

  • PIC10
  • *
  • Mensajes: 1
Problemas con Kbhit() y puerto serie
« en: 28 de Noviembre de 2008, 08:15:03 »
Hola amig@s.
En estos momentos estoy realizando mi PFC y me he encotradoc on un problemilla.
Tengo que enviar tramas a mi pic (PIC 18F252) y para ello uso la funcion kbhit(). El problema viene por que parece que se me llena el buffer, y el pic, sigue mostranso por pantalla tramas de estado, pero no ejecuta ninguna instruccion de las enviadas.
La parte del codigo dnd creo que esta el problema es esta:


void recepcion_tramas2(){


   unsigned int16 iCon=0;

   //putc('E');

   output_high(PIN_B6);

   if(iTramaAcabada==VERDADERO){
//   putc('S');
//   putc('2');
      return;
   }

   while(kbhit() && iCon < TAM_BUFFER ){
         iCon++;
         //se pone una bandera
         //putc('HOLA');
         //buffer lleno desechamos lo cogido
         if( iIndiceVector >= TAM_BUFFER ){
            //n=0;
            iTramaAcabada=FALSO;
            iIndiceVector=0;
            iTramaIniciada = FALSO;
            break;//si se da este caso, que salga de la funcion
         }   

         //lectura de puerto serie            
         vRecibir[iIndiceVector]=getc();
         //bandera2
      //   putc('99\n');
         putc(vRecibir[iIndiceVector]);
         //putc(')');
         //caracteres++;

         //lectura inicio trama
         if(iIndiceVector == 0 &&
            vRecibir[iIndiceVector] == '$'){ 
            iTramaIniciada = VERDADERO;
               
         }
         //lectura fin trama
         if(vRecibir[iIndiceVector]=='#'){
            vRecibir[iIndiceVector+1]='\0';
            //n=i;
            iTramaAcabada=VERDADERO;
            iIndiceVector=0;
            iTramaIniciada = FALSO;
            output_low(PIN_B6);
            break;
         }
         //guardamos trama
         if(iTramaIniciada == VERDADERO){
            iIndiceVector++;
         }
      }   
   //putc('S');
   //putc('1');
}

Cabe decir, que el tamño del buffer lo he limitado a 80 caracteres.
Muchas gracias por vuestra ayuda!!!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas con Kbhit() y puerto serie
« Respuesta #1 en: 29 de Noviembre de 2008, 16:19:02 »
Hola.

Porque no mejor usas la interrupcion RDA para adquirir las tramas?

Saludos
El papel lo aguanta todo


 

anything