Hola:
Tengo hecho un programa en C# para leer y enviar datos al puerto serie. En C# me funciona, quiero pasarlo al C++ y como no estoy familiarizado con C++, me cuesta hacer hasta lo más básico. Aquí dejo el código de C# para me me ayuden si es posinle, pasarlo de C# a C++.
El programa de C++ lo tengo hecho pero funciona a medias.
Código C#:
	
	
	
		
Código C++:
	
	
	
		
En C++ he hecho lo que puse, usé esta librería y Visual Studio Community 2017.
¿Alguna idea?
Saludos.
				
			Tengo hecho un programa en C# para leer y enviar datos al puerto serie. En C# me funciona, quiero pasarlo al C++ y como no estoy familiarizado con C++, me cuesta hacer hasta lo más básico. Aquí dejo el código de C# para me me ayuden si es posinle, pasarlo de C# a C++.
El programa de C++ lo tengo hecho pero funciona a medias.
Código C#:
		Código:
	
	using System;
using System.Text;
using System.IO.Ports;
namespace Envio_y_recepcion_puerto_serie_cs
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Recibir datos desde Arduino con C#";
            // Tamaño ventana consola.
            Console.WindowWidth = 55; // X. Ancho.
            Console.WindowHeight = 18; // Y. Alto.
            // Cree un nuevo objeto SerialPort con la configuración predeterminada.
            SerialPort Puerto_serie = new SerialPort("COM4");
            Puerto_serie.BaudRate = 115200;
            Puerto_serie.Parity = Parity.None;
            Puerto_serie.StopBits = StopBits.One;
            Puerto_serie.DataBits = 8;
            Puerto_serie.Handshake = Handshake.None;
            Puerto_serie.RtsEnable = true;
            // Establecer los tiempos de espera de lectura / escritura.
            Puerto_serie.ReadTimeout = 500; // Milisegundos.
            Puerto_serie.WriteTimeout = 500;
            // Detecta cualquier dato recibido.
            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            Puerto_serie.Open(); // Abrir puerto.
            ConsoleKey tecla;
            Console.WriteLine("Pulse tecla 1 para encender y 2 para apagar:");
            do
            {
                tecla = Console.ReadKey(true).Key; // Espera pulsación de teclas.
                switch (tecla)
                {
                    case ConsoleKey.D1: // Tecla 1 del teclado estandar.
                    case ConsoleKey.NumPad1: // Tecla 1 del número del pad.
                        byte[] miBuffer1 = Encoding.ASCII.GetBytes("Luz_ON"); // Codificación ASCII y guarda en la variable array tipo byte.
                        Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length); // Envía los datos del buffer todo su contenido.
                        break;
                    case ConsoleKey.D2:
                    case ConsoleKey.NumPad2:
                        byte[] miBuffer2 = Encoding.ASCII.GetBytes("Luz_OFF");
                        Puerto_serie.Write(miBuffer2, 0, miBuffer2.Length);
                        break;
                    default:
                        Console.WriteLine("Tecla el 1, el 2 y Escape para salir.");
                        break;
                }
            }
            // Pulsa Escape para salir del menú.
            while (tecla != ConsoleKey.Escape);
            Console.WriteLine("Presione cualquier tecla para terminar...");
            Console.WriteLine();
            Console.ReadKey(); // Espera pulsar una tecla cualquiera.
            Puerto_serie.Close(); // Cierra el puerto serie.
        }
    // Detecta cualquier dato entrante.
    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string entradaDatos = sp.ReadExisting(); // Almacena los datos recibidos en la variable tipo string.
            Console.WriteLine("Dato recibido desde Arduino: " + entradaDatos); // Muestra en pantalla los datos recibidos.
        }
    }
}Código C++:
		Código:
	
	// Para crear conexión con los puertos COM1 - COM9.
// Serial* Arduino = new Serial("COM7");
// Para crear conexión con los puertos COM10 en adelante.
// Serial* Arduino = new Serial("\\\\.\\COM10");
#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(1);
        }
        cout << "Recibido: " << lectura << endl;
        cout << "-------------------" << endl;
        }
}En C++ he hecho lo que puse, usé esta librería y Visual Studio Community 2017.
¿Alguna idea?
Saludos.
 
   
				 
						 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		