Resultados 1 al 2 de 2

Pasar este código a Java

  1. #1 Pasar este código a Java 
    Iniciado
    Fecha de ingreso
    Jun 2007
    Mensajes
    19
    Descargas
    0
    Uploads
    0
    Hola:

    Quiero pasar este código de C# a Java con NetBeans.



    Instalar Java actualizado:
    https://www.java.com/es/download/

    Compilador NetBeans (En español), Java SE:
    https://netbeans.org/downloads/index.html

    Tutorial sobre instalación del NetBeans y las librerías RxTx para controlar el puerto serie de Arduino:
    https://es.slideshare.net/Metaconta2/interfaz-java-y-arduino

    Librería oficial RxTx solo para 32 bits:
    Download - Rxtx

    Librería alternativa RxTx de 32 y de 64 bits. Usaremos 64 bits. (Recomendado):
    RXTX for jLog

    El código de C# es este aquí abajo.
    Código:
    using System;
    using System.Text;
    using System.IO.Ports;
    using System.IO;
    using System.Diagnostics;
    using System.Threading;
    
    namespace Recibir_archivo_desde_Arduino_consola_06
    {
        class Program
        {
            static int cantidadBytes;
            static StringBuilder sb = new StringBuilder();
    
            static void Main(string[] args)
            {
                string COM = "";
                // Título de la ventana.
                Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro";
    
                // Tamaño ventana consola.
                Console.WindowWidth = 55; // X. Ancho.
                Console.WindowHeight = 18; // Y. Alto.
                
    
                // Crear un nuevo objeto SerialPort con la configuración predeterminada.
                SerialPort Puerto_serie = new SerialPort();
    
                // Configuración.
                Console.Write(@"
    Introduzca un número para seleccionar puerto COM.
    Por ejemplo el 4, sería COM4.
    
    Puerto: ");
                COM = Console.ReadLine(); // Escribir el número del puerto.
                Console.Clear();
    
                Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.
    
    
                Puerto_serie.BaudRate = 115200; // Baudios. 115200.
                Puerto_serie.Parity = Parity.None; // Paridad.
                Puerto_serie.DataBits = 8; // Bits de datos.
                Puerto_serie.StopBits = StopBits.One; // Bits de parada.
                Puerto_serie.Handshake = Handshake.None; // Control de flujo.
    
                // Establecer la lectura / escritura de los tiempos de espera.
                Puerto_serie.ReadTimeout = -1; // 500.
                Puerto_serie.WriteTimeout = -1; // 500.
    
                try
                {
                    Puerto_serie.Open(); // Abrir el puerto serie.
                }
    
                catch (IOException)
                {
                    Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
                    Console.CursorVisible = false;
                    Console.SetCursorPosition(16, 6);
                    Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe
                    o no lo encuentra.");
                    Console.ReadKey(); // Pulse cualquier tecla para salir.
                }
    
                catch (UnauthorizedAccessException e)
                {
                    Console.WriteLine(e);
                }
                Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
    
                Console.WriteLine("Esperando datos desde Arduino... \n");
                Console.ReadKey();
                Puerto_serie.Close(); // Cerrar puerto.
            }
    
            private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
            {
                try
                {
                    SerialPort sp = (SerialPort)sender;
                    string indata = sp.ReadExisting();
                    // string[] data = indata.Split('A');
                    string[] data = indata.Split(new char[] { 'A' });
                    cantidadBytes = int.Parse(data[0]);
    
    
                    switch (data[1].ToString())
                    {
                        case "1":
                            Console.WriteLine("Tamaño: " + cantidadBytes + " Bytes.");
                            Console.WriteLine("Foto: " + data[1] + ". Tipo de archivo: JPG");
                            break;
    
                        case "2":
                            Console.WriteLine("Tamaño: " + cantidadBytes + " Bytes.");
                            Console.WriteLine("Foto: " + data[1] + ". Tipo de archivo: PNG.");
                            break;
    
                        default:
                            Console.WriteLine("Cosas raras en 'data': " + data.ToString()); // Por si hal algún error.
                            break;
                    }
    
                    int contador = 0;
                    byte[] datosArray = new byte[cantidadBytes];
    
                    switch (indata)
                    {
                        case "17729A1":
                            Thread.Sleep(100); // Retardo.
                            byte[] miBuffer = Encoding.ASCII.GetBytes("OK1"); // Codificación ASCII.
                            sp.Write(miBuffer, 0, miBuffer.Length); // Envía OK1 al puerto serie.
                            break;
    
                        case "2065A2":
                            Thread.Sleep(100); // Retardo.
                            byte[] miBuffer2 = Encoding.ASCII.GetBytes("OK2"); // Codificación ASCII.
                            sp.Write(miBuffer2, 0, miBuffer2.Length); // Envía OK2 al puerto serie.
                            break;
    
                        default:
                            Console.WriteLine("Cosas raras en 'indata': " + indata.ToString()); // Por si hal algún error.
                            break;
                    }
    
                    while (true)
                    {
    
                        contador += sp.Read(datosArray, contador, datosArray.Length - contador);
    
                        Console.SetCursorPosition(10, 6);
                        Console.Write("Datos recibidos:  {0}", contador + " Bytes.");
                        Console.WriteLine("                   ");
    
                        if ((contador == cantidadBytes) && (contador == 17729))
                        {
                            Mensaje1();
                            File.WriteAllBytes("fotón.jpg", datosArray); // Crear archivo en el disco duro.
                            Mensaje2();
                            Process.Start("fotón.jpg"); // Ejecutar visualizador de imágenes.
                            Mensaje3();
                            break; // Garantiza que el ciclo termine.
                        }
    
                        if ((contador == cantidadBytes) && (contador == 2065))
                        {
                            Mensaje1();
                            File.WriteAllBytes("fotón.png", datosArray); // Crear archivo en el disco duro.
                            Mensaje2();
                            Process.Start("fotón.png"); // Ejecutar visualizador de imágenes.
                            Mensaje3();
                            break; // Garantiza que el ciclo termine.
                        }
                    }
    
                    void Mensaje1()
                    {
                        Console.WriteLine();
                        Console.WriteLine("Creando archivo al disco duro...");
                    }
    
                    void Mensaje2()
                    {
                        Console.WriteLine();
                        Console.WriteLine("Archivo creado. Ejecutando imagen.");
                    }
    
                    void Mensaje3()
                    {
                        Console.WriteLine();
                        Console.WriteLine("Imagen ejecutada.");
                        Console.WriteLine();
                        Console.WriteLine("Cabecera recibida: " + indata + "\n");
                        Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
                        Console.WriteLine("FIN DE PROGRAMA.");
                        Console.ForegroundColor = ConsoleColor.Gray; // Letras grises otra vez.
                    }
                }
    
                catch (FormatException)
                {
                    // System.FormatException: 'La cadena de entrada no tiene el formato correcto.'
                }
            }
        }
    }
    En estos momentos estoy instalando la librería RxTx de 64 bits para Windwos 10 de 64 bits que es el que uso actualmente. El código de C# arriba fucniona de maravilla.

    Esto de Java para adaptarme tardaré una eternidad, al menos se que el Hola mundo es Console.WriteLine("Hola mundo"); de C# es el equivalente a System.out.println("Hola mundo"); de Java.

    Cualquier ayuda es bienvenida.
    Citar  
     

  2. #2  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Buenas,

    Tampoco son tantas líneas... Aún así prueba con Net2Java.

    Un saludo.
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

Temas similares

  1. Resolver este ejercicio JAVA
    Por gregowebs01 en el foro PROGRAMACION DESKTOP
    Respuestas: 2
    Último mensaje: 25-09-2012, 21:59
  2. Enviar codigo y recibir codigo
    Por cluberjaime en el foro INGENIERIA INVERSA
    Respuestas: 1
    Último mensaje: 03-07-2009, 01:29
  3. Ayuda con código Java
    Por Lajacr en el foro PROGRAMACION DESKTOP
    Respuestas: 1
    Último mensaje: 09-03-2009, 10:07
  4. Convertir código C# a java
    Por hystd en el foro PROGRAMACION DESKTOP
    Respuestas: 1
    Último mensaje: 07-09-2007, 12:05
  5. Scott McNealy: Java no será código abierto
    Por aerial25 en el foro NOTICIAS
    Respuestas: 1
    Último mensaje: 28-03-2004, 15:11

Marcadores

Marcadores