Desde que pulse una tecla, que ejecuta dicha acción
Publicado por Meta (45 intervenciones) el 02/02/2023 22:48:56
Buenas gente:
Aquí tengo un programa que solo se ejecuta una orden si pulso el 1 y luego Enter.
¿Hay alguna manera que pulse la tecla 1 y me ejecute una acción sin luego pulsar Enter?
Trabajo con Visual Studio Community 2022 con C++ nativo.
El código que es este.
Saludos.
Aquí tengo un programa que solo se ejecuta una orden si pulso el 1 y luego Enter.
¿Hay alguna manera que pulse la tecla 1 y me ejecute una acción sin luego pulsar Enter?
Trabajo con Visual Studio Community 2022 con C++ nativo.
El código que es este.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <fstream>
#include <Windows.h> // Para mostrar texto en el título de la ventana.
#include <stdio.h> // Cambio color de fondo y letras.
#include "SerialClass.h"
using namespace std;
//using std::cout;
//using std::cin;
// Función posición del cursor.
void gotoxy(int x, int y)
{
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
SetConsoleCursorPosition(hcon, dwPos);
}
int main()
{
#pragma region "Configuración ventana."
// Mostrar caracteres correctamente en pantalla y título de la ventana.
SetConsoleOutputCP(65001);
wchar_t titulo[128];
MultiByteToWideChar(CP_UTF8, 0, "Led Arduino C++ nativo", -1, titulo, 128);
SetConsoleTitleW(titulo);
// Tamaño de la pantalla. Se cambia en los dos últimos dígitos.
SMALL_RECT r = { 0, 0, 80, 20 }; // X = 49, Y = 9.
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &r);
// Cambio color de 6 (naranja claro), color letras 0 (negro).
system("color 60");
// Ocultar cursor.
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
cci.bVisible = 0; // 0 oculta. 1 muestra cursor.
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
#pragma endregion
// Puerto serie.
Serial* Puerto = new Serial("COM4");
// Comandos para Arduino.
char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
char Luz_OFF[] = "Luz_OFF";
char lectura[50] = "\0"; // Guardan datos de entrada del puerto.
int opc; // Guarda un 1 o 2 tipo entero queintroduces desde la consola.
while (Puerto->IsConnected())
{
cout << endl; // Retorno.
cout << "Introduzca la opcion deseada: " << endl;
cout << "Pulse 1 para encender el Led, pulse 2 para apagar." << endl << endl; // Muestra texto en pantalla.
cin >> opc; // Aquí introduces un número, el 1 o el 2.
switch (opc) // Espera recibir un 1 o un 2.
{
case 1:
// Encener luz.
cout << "Enviando: " << Luz_ON << endl; // Muestra en pantalla textos.
Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
break;
case 2:
// Apagar luz.
cout << "Enviando: " << Luz_OFF << endl;
Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
break;
default: // Si haz pulsado otro número distinto del 1 y 2, muestra
cout << "Puse del 1 al 2."; // este mensaje.
}
Sleep(500);
int n = Puerto->ReadData(lectura, 49); // Recibe datos del puerto serie.
if (n > 0)
{
lectura[n + 1] = '\0'; // Limpia de basura la variable.
cout << "Recibido: " << lectura << endl; // Muestra en pantalla dato recibido.
cout << "-------------------" << endl;
}
cin.ignore(256, '\n'); // Limpiar buffer del teclado.
}
}
Saludos.
Valora esta pregunta


0