Hola:
Tengo este código hecho en C++ y no me gusta mucho como funciona, se me queda atascado.
Lo que hace el programa es, enviar datos al puerto serie, por ejemplo, si pulso la tecla 1 o la tecla 2, envía datos al puerto serie y recibe datos en el cual muestra en pantalla. Si pulso otra tecla que no sea el 1 o el 2, me salta en Default y no sale de ahí, es cuando y está atascado.
¿Es posible solucionarlo?
cpp
#include <iostream> #include <fstream> #include <Windows.h> #include "SerialClass.h" using namespace std; void main() { // Título de la ventana SetConsoleTitle("Control Led Arduino."); // 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; // Dejamos un retorno. cout << "Introduzca la opcion deseada: " << 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. } while ((opc == 1) == (opc == 2)) { int n = Puerto->ReadData(lectura, 49); if (n > 0) { lectura[n + 1] = '\0'; break; } Sleep(500); } cout << "Recibido: " << lectura << endl; cout << "-------------------" << endl; } }
Gracias por su tiempo. ;)