Enero 18, 2018, 12:30:48 am

Autor Tema: Transformar el código de C# a C++  (Leído 3124 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Meta

  • Me das tu IP?
  • *
  • Mensajes: 26
    • Ver Perfil
Transformar el código de C# a C++
« en: Marzo 25, 2017, 04:30:44 am »
Hola:

Hice un código en C# primero porque lo manejo mejor que en C++. Por curiosidad quiero probar un poco de C++ Win32. El código consiste en enviar por el puerto serie datos a Arduino, él responde. También desde Arduino puede enviar datos a el PC lo recibe. La ventaja de C#, que no necesita librerías de terceros para controlar el puerto serie.

Código C#:
Código: You are not allowed to view links. Register or Login
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;
                }
            } while (tecla != ConsoleKey.Escape); // Pulsa Escape para salir del menú.

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

En C++ si necesita librería, en este caso lo puedes You are not allowed to view links. Register or Login. He intentado hacerlo en C++ y me funciona a medias, aún hace cosas raras, no se hacerlo y necesito ayuda. Por ahora he hecho esto.

Código C++:
Código: You are not allowed to view links. Register or Login
// 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;
}
}

¿Alguna ayuda? ;)

Saludos.


exclamation
[Código]Transformar Texto Mayuscula a Minuscula+Inverso ~ Python ~ JaAViEr

Iniciado por JaAViEr

5 Respuestas
8453 Vistas
Último mensaje Julio 15, 2010, 08:36:55 pm
por .:WindHack:.®
exclamation
[Código-Python]Transformar texto a teclado del celular - JaAViEr(0x5d)

Iniciado por JaAViEr

0 Respuestas
961 Vistas
Último mensaje Enero 23, 2012, 07:27:11 pm
por JaAViEr
xx
TRansformar

Iniciado por newie

2 Respuestas
1062 Vistas
Último mensaje Marzo 13, 2009, 05:15:22 pm
por alexmanycool
resuelto
¿Como transformar un .flv a .mp3?

Iniciado por Avoidance25

8 Respuestas
1319 Vistas
Último mensaje Diciembre 01, 2010, 04:31:31 pm
por Avoidance25
xx
Transformar el cursor en una mira

Iniciado por Vassily

8 Respuestas
4648 Vistas
Último mensaje Febrero 09, 2008, 09:35:47 am
por gonzoxo
xx
Transformar diagrama a miniespecificacion.

Iniciado por crashh

5 Respuestas
2657 Vistas
Último mensaje Enero 13, 2011, 04:56:39 pm
por crashh
xx
Trojantoworm, Transformar tu troyano en gusano.

Iniciado por jorgelio300

20 Respuestas
5967 Vistas
Último mensaje Octubre 27, 2010, 05:35:05 pm
por Sthefano02
exclamation
Transformar una foto en una pintura china

Iniciado por Chow

4 Respuestas
5664 Vistas
Último mensaje ſeptiembre 02, 2008, 09:27:25 pm
por maxwellnewage
xx
Transformar tplink 5210g en wireless card

Iniciado por shyvano

0 Respuestas
654 Vistas
Último mensaje Enero 19, 2014, 11:14:08 am
por shyvano
question
transformar juegos pal para jugarlos en android

Iniciado por rube.app

1 Respuestas
669 Vistas
Último mensaje Agosto 31, 2013, 12:10:30 pm
por seth