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.