Autor Tema: kbhit()  (Leído 8464 veces)

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

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
kbhit()
« en: 09 de Febrero de 2011, 12:27:24 »
Esto es lo que hace la entrada de un pic, conectado a un Max232, ya que los datos vienen del pc.

void main(void) {

do{
if (kbhit(){                // Si hay una pulsación de tecla
     avance();
    ??????????            // Aquí debería volver kbhit() a FALSE
}

else {                      //Si no hay pulsación de tecla
detencion();
}

}

while (x<10);           // Para que esté leyendo siempre las entradas

}

El problema viene que una vez que recibe una pulsación kbhit() se queda siempre a TRUE luego siempre cumple la condición y corre la subrutina avance.

Donde tengo ???????? debería resetear kbhit() a FALSE y correr la subrutina detencion hasta que nuevamente se pulse una tecla.

Como puedo resetear kbhit(), o devolverlo a su estado inicial?




Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: kbhit()
« Respuesta #1 en: 09 de Febrero de 2011, 12:31:24 »
Al detectar Kbhit() hay que leer el buffer del puerto serie, ya que no hay otra forma que entre un nuevo caracter que no sea limpiando ese buffer. :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Re: kbhit()
« Respuesta #2 en: 09 de Febrero de 2011, 13:26:15 »
    if (kbhit() && getchar()=='2'){           
      avance();}


Esta orden significa que si hay una tecla pulsada y la tecla es 2 avanza?

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: kbhit()
« Respuesta #3 en: 09 de Febrero de 2011, 15:06:12 »
No se si getchar() esta bien utilizado así (deberías ver mas en el help) pero si, esa es la idea.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: kbhit()
« Respuesta #4 en: 09 de Febrero de 2011, 19:59:34 »
hola amigo

en esta web hay buen material de librerias y funciones de C.
Ponle un ojo.
ir a enlace .

Un saludo.


 

anything