C/Visual C - Detector de pulsado con temporizador

   
Vista:

Detector de pulsado con temporizador

Publicado por Dendi (5 intervenciones) el 10/07/2017 04:43:32
Hola, lo que estoy buscando es medio raro, por eso voy a tratar de explicarlo bien:

Busco un código que permita que en un cierto tiempo (por ejemplo 2 segundos) lea un carácter, pasado ese tiempo diga que no ingresaste nada. Y que el carácter que se lea en esos dos segundos se guarde, sin necesidad de apretar enter.

Los datos pueden leerse solamente en esos dos segundos, pasado ese tiempo se muestra el cartel.

Es posible le estoy? Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Detector de pulsado con temporizador

Publicado por Martín (18 intervenciones) el 10/07/2017 19:18:51
Hola; sí, es posible, pero la forma de leer un carácter desde la consola depende del sistema operativo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detector de pulsado con temporizador

Publicado por Dendi (5 intervenciones) el 10/07/2017 19:55:46
Hola, utilizo Windows 10 pro de 64 bits
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detector de pulsado con temporizador

Publicado por Martín martinlareto@gmail.com (18 intervenciones) el 10/07/2017 21:08:29
Acá estoy usando la biblioteca <conio.h> de Visual Studio,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <future>
#include <chrono>
#include <conio.h> // getch, _kbhit
 
using namespace std::chrono_literals;
 
std::atomic_bool esperando;
 
char getChar()
{
    while (esperando) {
        if (_kbhit())
            return _getch();
        std::this_thread::sleep_for(10ms);
    }
    return '\0';
}
 
int main()
{
 
    esperando = true;
    auto tp = std::chrono::system_clock::now() + 2000ms;
 
    auto f = std::async(std::launch::async, getChar);
 
    if (f.wait_until(tp) == std::future_status::ready) {
        std::cout << "caracter leido: " << f.get() << '\n';
    }
    else {
        esperando = false;
        std::cout << "timeout.\n";
    }
 
}

Saludos!
Martín
tutorías de C++
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detector de pulsado con temporizador

Publicado por Dendi (5 intervenciones) el 10/07/2017 22:40:06
Hola, disculpa... el codigo no me compila.. esta escrito en lenguage C? yo uso codeblocks.. y me marca como mal las 3 primeras librerias y la palabra using.. ¿es porque me faltan las librerias?

Desde ya muchas gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detector de pulsado con temporizador

Publicado por Martín (18 intervenciones) el 11/07/2017 00:09:29
Hola; el código que puse fue compilado con el Visual C++ 2017.

Ten en cuenta que Code::Blocks es un editor de código, y que a la vez usa un compilador, que si lo instalaste con las opciones por defecto debe estar usando el compilador MinGW, y dependiendo de las opciones de instalación, tendrá disponible las funciones de biblioteca <thread> o no; verifica eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detector de pulsado con temporizador

Publicado por Dendi (5 intervenciones) el 11/07/2017 05:42:08
Muchisimas gracias, ya solucione lo de las bibliotecas y es justo lo que buscaba, muchisimas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad