Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc (http://foros.zackyfiles.com/forumdisplay.php?f=370)
-   -   problema funcion kbhit(); (http://foros.zackyfiles.com/showthread.php?t=406246)

kokun_72 15/02/2006 22:18

problema funcion kbhit();
 
hola, tengo el problema ke ,hasta ke no toco una tecla todo bien, pero cuando pulso una tecla el programa se vuelve loco y no para de ejecutarse, he leido algo de ke se keda la ultima tecla en el buffer y supongo ke habra ke vaciarlo, pero nose como, lo suyo seria ke se kedara como al principio para ke me devuelva un 0.
bueno gracias por adelantado y salu2!!!!

Coke 16/02/2006 00:13

Si no nos das mas datos, no sabremos porque te pasa, ¿puedes pegar el código?.

Por curiosidad he hecho una pequeña prueba y no me da ningún problema, si pulso una tecla devuelve 1 y si la suelto devuelve 0.

Coke.

kokun_72 16/02/2006 00:42

#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <iostream.h>
#include "libreria\senal.h"


char opc;
float sen1=90,sen2=90,sen3=90,sen4=90,sen5=90;

int main()
{
int fin=0;

do{
char opc;

cout<<"*-------------------------------------------*"<<endl;
cout<<"| BRAZO MECANICO por CHRISTIAN ALABART |"<<endl<<'|'<<'\t'<<'\t'<<'\t'<<'\t'<<'\t'<<" "<<'|'<<endl;
cout<<"| Escoge una opcion: |"<<endl<<'|'<<'\t'<<'\t'<<'\t'<<'\t'<<'\t'<<" "<<'|'<<endl;
cout<<"| 1- Movimiento libre con teclado |"<<endl;
cout<<"| 2- Programar movimientos |"<<endl;
cout<<"| 3- Ver programacion |"<<endl;
cout<<"| 4- Ver estado de los servos |"<<endl;
cout<<"| 5- Borrar programacion |"<<endl;
cout<<"| 6- Ver paso a paso |"<<endl;
cout<<"| 7- Salir |"<<endl;
cout<<"*-------------------------------------------*"<<endl<<endl;

senal(sen1,sen2,sen3,sen4,sen5); //funcion donde se manda señal al puerto
//paralelo y no sale de ay hasta presionar
//tecla
if (!kbhit())
{
opc=getch();
switch (opc)
{
case '1':
{
//movimiento();
break;
}
case '2':
{
//programar();
break;
}
case '3':
{
//ver_prog();
break;
}
case '4':
{
//servos();
break;
}
case '5':
{
//borrar_prog();
break;
}
case '6':
{
//paso();
break;
}
case '7':
{
fin = 1;
break;
}
}
}
clrscr();
}while (fin==0);

}

no se si estare utilizando mal esta funcion o ke pero no me va muy bien, seguramente es una tonteria o no, pero gracias por la ayuda

Coke 16/02/2006 01:19

a mi no me da problemas, de todas formas haz una prueba con este....

[PHP]
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <iostream.h>
//#include "libreria\senal.h"


char opc;
float sen1=90,sen2=90,sen3=90,sen4=90,sen5=90;

int main()
{
bool fin=false;
cout<<"*-------------------------------------------*"<<endl;
cout<<"| BRAZO MECANICO por CHRISTIAN ALABART |"<<endl<<'|'<<'\t'<<'\t'<<'\t'<<'\t'<<'\t'<<" "<<'|'<<endl;
cout<<"| Escoge una opcion: |"<<endl<<'|'<<'\t'<<'\t'<<'\t'<<'\t'<<'\t'<<" "<<'|'<<endl;
cout<<"| 1- Movimiento libre con teclado |"<<endl;
cout<<"| 2- Programar movimientos |"<<endl;
cout<<"| 3- Ver programacion |"<<endl;
cout<<"| 4- Ver estado de los servos |"<<endl;
cout<<"| 5- Borrar programacion |"<<endl;
cout<<"| 6- Ver paso a paso |"<<endl;
cout<<"| 7- Salir |"<<endl;
cout<<"*-------------------------------------------*"<<endl<<endl;

while(!fin){

//senal(sen1,sen2,sen3,sen4,sen5); //funcion donde se manda señal al puerto
//paralelo y no sale de ay hasta presionar
//tecla
if (kbhit())
{
opc=getch();
switch (opc)
{
case '1':
{
//movimiento();
cout <<"has pulsado el 1"<<endl;
break;
}
case '2':
{
//programar();
cout <<"has pulsado el 2"<<endl;
break;
}
case '3':
{
//ver_prog();
cout <<"has pulsado el 3"<<endl;
break;
}
case '4':
{
//servos();
cout <<"has pulsado el 4"<<endl;
break;
}
case '5':
{
//borrar_prog();
cout <<"has pulsado el 5"<<endl;
break;
}
case '6':
{
//paso();
cout <<"has pulsado el 6"<<endl;
break;
}
case '7':
{
fin = true;
cout <<"has pulsado el 7"<<endl;
break;
}
}
}
//clrscr();
}
return 0;
}
[/PHP]

kokun_72 16/02/2006 21:02

muchas gracias coke, parece ke si funciona bien y es justo lo ke yo keria, de verdad gracias
Salu2!!!


La franja horaria es GMT +2. Ahora son las 19:36.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate