Fix crashes in C ++

Hello again:

Starting at 0 and more basic. In C ++ it sends data to the serial port and receives. If I pulse 1 or 2, it sends me data and Arduino returns it to C ++. It is able to turn on and off a LED on the pin 13 that comes built into the Arduino board. The problem is when you press another key other than 1 or 2, it gets stuck C ++ and does nothing.

Arduino Code:

  const byte pinLed = 13;   
    char caracter;
    String comando;
     
    void setup()
    {
      pinMode(pinLed, OUTPUT); 
      Serial.begin(115200); 
    }
     
    void loop()
    {

      while (Serial.available() > 0)
      {
        caracter = Serial.read();
        comando.concat(caracter);
        delay(10);
      }
     

      if (comando.equals("Luz_ON") == true)
      {
        digitalWrite(pinLed, HIGH); 
        Serial.write("Luz ON.");    
      }
     

      if (comando.equals("Luz_OFF") == true)
      {
        digitalWrite(pinLed, LOW); 
        Serial.write("Luz OFF."); 
      }
     
      comando = "";
    }

C++ code:

#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 (true) {
     int n = Puerto->ReadData(lectura, 49);
     if (n > 0) {
     lectura[n + 1] = '\0';
     break;
     }
     Sleep(500);
     }
     cout << "Recibido: " << lectura << endl;
     cout << "-------------------" << endl;
     }
    }

For now solve that problem I do not get.

Greetings.

Metaconta:
The problem is when you press another key other than 1 or 2, it gets stuck C ++ and does nothing.

Don't press anything other than 1 or 2.

#include <Windows.h>

This is an Arduino forum.

While(true) is usually an infinite loop.

It is an Arduino forum in the C ++ code is related to Arduino, boy ready.

How do we fix this situation?

Metaconta:
It is an Arduino forum in the C ++ code is related to Arduino, boy ready.

How do we fix this situation?

Read post #1 and #2 again.

Metaconta:
It is an Arduino forum in the C ++ code is related to Arduino, boy ready.

But you seem to be saying that its the Windows C++ code that gets stuck ?

Does the same thing happen when you completly remove the Arduino ?

Done:

#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.
		}


		Sleep(250);
		int n = Puerto->ReadData(lectura, 49);
		if (n > 0) 
		{
			lectura[n + 1] = '\0';
			cout << "Recibido: " << lectura << endl;
			cout << "-------------------" << endl;
		}

		opc = NULL; // Vaciar el buffer.
	}
}

You can now turn on and off an LED, receive messages and send it with C ++ and Arduino.