Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Pulsar tecla y enviar datos

Estas en el tema de Pulsar tecla y enviar datos en el foro de C/C++ en Foros del Web. Buenas: Tengo un programa aquí que no está bien hecho del todo. Envía datos al puerto seria, concretamente llega a Arduino. Los datos llegan bien, ...
  #1 (permalink)  
Antiguo 16/03/2017, 15:24
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 11 meses
Puntos: 8
Pulsar tecla y enviar datos

Buenas:

Tengo un programa aquí que no está bien hecho del todo.

Envía datos al puerto seria, concretamente llega a Arduino. Los datos llegan bien, al recibir, ya no tanto.

Si pulsas la tecla, por ejemplo 5, primero se ve reflejado y luego tengo que pulsar Enter. Lo que quiero lograr es que si pulse el número 5, automáticamente ejecuta la instruacción del case 5 del Switch.

Otra cosa, es que no me llegan los datos desde Arduino cuando le pulso un botón. C++ tiene que ser capaz, desde que le llegue algún dato, reflejarlo en pantalla.

La librería a usar es esta.

https://github.com/Gmatarrubia/LibreriasTutoriales

El código de C++ es:
Código:
#include <iostream>
#include <fstream>
#include <Windows.h>
#include "SerialClass.h"
using namespace std;

void main()
{
	SetConsoleTitle("Control Led 13 de Arduino UNO y saludos.");

	Serial* Puerto = new Serial("COM4");

	while (Puerto -> IsConnected())
	{

		// Comandos para Arduino.
		char L_ON[] = "Led13_ON";
		char L_OFF[] = "Led13_OFF";
		char Saludar[] = "Hola Arduino. Saludos desde el PC con C++ bajo  Win32.";
		char Luz_ON[] = "Luz_ON";
		char Luz_OFF[] = "Luz_OFF";
		char lectura[50];

		int opc;

		cout << "Introduzca la opcion deseada: ";

		cin >> opc;

		switch (opc)
		{
		case 1:
			cout << "caso 1\n";
			// Enviar encender Led.
			cout << "Enviando: " << L_ON << endl;
			Puerto -> WriteData(L_ON, sizeof(L_ON) - 1);
			break;

		case 2:
			cout << "caso 2\n";
			// Enviar apagar Led.
			cout << "Enviando: " << L_OFF << endl;
			Puerto -> WriteData(L_OFF, sizeof(L_OFF) - 1);
			break;

		case 3:
			cout << "caso 3\n";
			// Mensaje saludar.
			cout << "Enviando: " << Saludar << endl;
			Puerto -> WriteData(Saludar, sizeof(Saludar) - 1);
			break;

		case 4:
			cout << "caso 4\n";
			// Mensaje saludar.
			cout << "Enviando: " << Luz_ON << endl;
			Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1);
			break;

		case 5:
			cout << "caso 5\n";
			// Mensaje saludar.
			cout << "Enviando: " << Luz_OFF << endl;
			Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
			break;

		default:
			cout << "Puse del 1 al 5.";
		}

		Puerto -> ReadData(lectura, 50);
		cout << "Recibido: " << lectura << endl;

		cout << "-------------------" << endl;

		// system("PAUSE");
	}
}

¿Alguna ayuda?

Un cordial saludo.

PD: Uso Visual Studio Community 2017, lenguaje C++ bajo Win32.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #2 (permalink)  
Antiguo 26/04/2017, 14:25
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pulsar tecla y enviar datos

Emmm yo usaría la librería conio.h

Y como quedamos a la espera de la pulsación usamos un while luego usamos dos funciones de conio:

kbhit() que detecta la pulsación
getch() que guarda el valor de la tecla que se presionada.

Entonces podría ser algo asi:

Código C++:
Ver original
  1. while(true){
  2.     if(kbhit()){
  3.     char t = getch();
  4.     if(t == '5'){ /*hacer algo*/ }
  5.     if(t == '4'){ /*hacer otra cosa*/ }
  6.     /* etc... */
  7.     }
  8. }

Eso saludos...

Etiquetas: int, main, pulsar, tecla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:47.