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.