Octubre 17, 2017, 12:25:40 am

Autor Tema: Pasar este código a Java  (Leído 1277 veces)

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

Desconectado Meta

  • Me das tu IP?
  • *
  • Mensajes: 26
    • Ver Perfil
Pasar este código a Java
« en: Marzo 25, 2017, 05:21:21 am »
Hola:

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



Instalar Java actualizado:
You are not allowed to view links. Register or Login

Compilador You are not allowed to view links. Register or Login (En español), Java SE:
You are not allowed to view links. Register or Login

Tutorial sobre instalación del NetBeans y las librerías RxTx para controlar el puerto serie de Arduino:
You are not allowed to view links. Register or Login

Librería oficial RxTx solo para 32 bits:
You are not allowed to view links. Register or Login

Librería alternativa RxTx de 32 y de 64 bits. Usaremos 64 bits. (Recomendado):
You are not allowed to view links. Register or Login

El código de C# es este aquí abajo.
Código: You are not allowed to view links. Register or Login
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.
« Última modificación: Marzo 25, 2017, 07:28:19 am por Meta »

Desconectado Hu3c0

  • Me das tu IP?
  • *
  • Mensajes: 61
  • Sexo: Masculino
  • a=navigator.setcookieEnabled();
    • Ver Perfil
Re:Pasar este código a Java
« Respuesta #1 en: Marzo 26, 2017, 01:12:12 pm »
Discúlpame por lo que te voy a decir pero creo que  ¡NO... ! tienes idea de C# y te voy a fundamentar mis palabras.

Yo no tengo ni pelotuda idea de C# y estoy viendo el código y lo estoy entendiendo con lo cual estoy en el
otro lado a tí.

Si yo sé modestamente Java y leo el código y lo entiendo a vos le debería de pasar lo mismo...!

Los using son los equivalentes a los import en Java, la estructura de la Clase es exactamente la misma
incluso StringBuilder es un Objeto que se puede instanciar en Java, los bloques de código ,la forma de
instanciar objetos de una clase, la creación de métodos estáticos en fin todo a un simple vistazo me resul
ta cómodo y entendible para un aprendiz como yo.

Por consiguiente aprende bien sobre programación orientada a objetos y después te será muy fácil com-
prender cualquier lenguaje orientado a objetos, puedo decirte de forma personal que me ha sido muy muy
útil para la creación de Object en php y en javascript.

Suerte en tu aprendizaje.

« Última modificación: Marzo 26, 2017, 01:13:50 pm por Hu3c0 »


question
pasar este codigo a visual basic

Iniciado por DarkProgrammer

3 Respuestas
1136 Vistas
Último mensaje Abril 11, 2009, 09:38:11 am
por -Gosw-
xx
necesito pasar este codigo a pseudocodico....ayuda!!!!

Iniciado por mmrf

2 Respuestas
1373 Vistas
Último mensaje Abril 28, 2011, 03:36:23 pm
por WaesWaes
question
Pasar este código de un antiguo modula bas.(VB6.0) a VB 2008

Iniciado por angelcont22

0 Respuestas
619 Vistas
Último mensaje Marzo 30, 2014, 11:54:57 pm
por angelcont22
resuelto
Por q da error al incluir este código para pasar datos entre 2 textbox de 1 form

Iniciado por angelcont22

1 Respuestas
697 Vistas
Último mensaje Abril 02, 2014, 12:23:39 pm
por angelcont22
question
[Java/C++] ¿Como pasar un método de c++ a java?

Iniciado por klaine

0 Respuestas
1013 Vistas
Último mensaje Abril 13, 2011, 03:16:45 pm
por klaine
question
Como hago para pasar codigo de ensamblador a codigo octal

Iniciado por Hatake

1 Respuestas
1451 Vistas
Último mensaje Mayo 28, 2009, 03:39:40 pm
por alex19910218
exclamation
Codificar en java - Ideal para pasar data con calculadoras o por papel

Iniciado por blue.drag00n

0 Respuestas
2088 Vistas
Último mensaje Enero 03, 2011, 08:19:40 pm
por blue.drag00n
question
Pasar de codigo a programa con interfaz?

Iniciado por rayder1

4 Respuestas
622 Vistas
Último mensaje Marzo 30, 2014, 12:50:22 pm
por rayder1
exclamation
[Codigo]Pasar de Minusculas a Mayusculas. - JaAViEr

Iniciado por JaAViEr

3 Respuestas
2427 Vistas
Último mensaje Mayo 19, 2010, 05:57:17 pm
por JaAViEr
question
codigo para pasar de decimal a Binario y al revez

Iniciado por coki123456

5 Respuestas
2003 Vistas
Último mensaje Abril 22, 2011, 02:39:46 pm
por coki123456