elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  ¿Cómo se hace un array de C# a Arduino?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo se hace un array de C# a Arduino?  (Leído 5,628 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
¿Cómo se hace un array de C# a Arduino?
« en: 30 Diciembre 2016, 08:31 am »

Hola:

Tengo un array tipo byte[] en C# que es este:
Código
  1. byte[] rawData = {
  2.    0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01,
  3.    0x01, 0x01, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0xFF, 0xDB, 0x00, 0x43
  4. };

¿Cómo es en Arduino?

Quiero la misma información que el de C#.

¿Cómo se envía por el puerto serie al pulsar un botón esos datos?

Saludos.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ¿Cómo se hace un array de C# a Arduino?
« Respuesta #1 en: 30 Diciembre 2016, 08:34 am »

has intentado googlear o leerte tutoriales? ya estás haciendo preguntas que la documentación oficial puede responder


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Simranjit

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re:
« Respuesta #2 en: 30 Diciembre 2016, 21:54 pm »

Si sabes c# es mejor usarlo en vez de usar la ide de arduino usa una que te permita hacerlo con c# que es mejor, buscalo en google merece la pena.

Enviado desde mi E2333 mediante Tapatalk
En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: ¿Cómo se hace un array de C# a Arduino?
« Respuesta #3 en: 3 Enero 2017, 04:23 am »

Hola:

Teniendo el código hecho.
Código
  1. using System;
  2. using System.IO;
  3. using System.IO.Ports;
  4. using System.Text;
  5.  
  6. namespace Recibir_archivo_desde_Arduino_consola
  7. {
  8.    class Program
  9.    {
  10.        public static string Recibidos = "";
  11.        public static byte[] datosArray = Encoding.ASCII.GetBytes(Recibidos);
  12.  
  13.        static void Main(string[] args)
  14.        {
  15.            string COM = "";
  16.  
  17.            // Tamaño ventana consola.
  18.            Console.WindowWidth = 55; // X. Ancho.
  19.            Console.WindowHeight = 15; // Y. Alto.
  20.            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro"; // Título de la ventana.
  21.  
  22.            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  23.            SerialPort Puerto_serie = new SerialPort();
  24.  
  25.            // Configuración.
  26.            Console.Write(@"
  27. Introduzca un número para seleccionar puerto COM.
  28. Por ejemplo el 4, sería COM4.
  29.  
  30. Puerto: ");
  31.            COM = Console.ReadLine(); // Escribir el número del puerto.
  32.            Console.Clear();
  33.  
  34.            Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.
  35.  
  36.  
  37.            Puerto_serie.BaudRate = 115200; // Baudios.
  38.            Puerto_serie.Parity = Parity.None; // Paridad.
  39.            Puerto_serie.DataBits = 8; // Bits de datos.
  40.            Puerto_serie.StopBits = StopBits.Two; // Bits de parada.
  41.            Puerto_serie.Handshake = Handshake.None; // Control de flujo.
  42.  
  43.            // Establecer la lectura / escritura de los tiempos de espera.
  44.            Puerto_serie.ReadTimeout = 500;
  45.            Puerto_serie.WriteTimeout = 500;
  46.  
  47.            try
  48.            {
  49.                Puerto_serie.Open(); // Abrir el puerto serie.
  50.            }
  51.  
  52.            catch (IOException)
  53.            {
  54.                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
  55.                Console.CursorVisible = false;
  56.                Console.SetCursorPosition(16, 6);
  57.                Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe
  58.                o no lo encuentra.");
  59.            }
  60.  
  61.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  62.  
  63.            Console.Read();
  64.            Puerto_serie.Close(); // Cerrar puerto.
  65.        }
  66.  
  67.        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  68.  
  69.        {
  70.            SerialPort sp = (SerialPort)sender;
  71.            int ByteLeidos = sp.Read(datosArray, 0, 28256);
  72.  
  73.            Console.Write(ByteLeidos);
  74.        }
  75.    }
  76. }

Para saber la cantidad de byte recibidos hice esto.
Código
  1.            SerialPort sp = (SerialPort)sender;
  2.            int ByteLeidos = sp.Read(datosArray, 0, 28256);

Me da error.


Exactamente puse los mismos bytes que dice aquí.


El programa de Arduino IDE ya lo saqué.
Código
  1. // Enviar tramas de byte al puerto serie.
  2.  
  3. int estadoBoton = 0; // Guardará el estado del botón HIGH o LOW.
  4. int anteriorBoton = 0;
  5. char caracter;
  6. String comando;
  7. int flagMensaje = 0;
  8.  
  9. // Esta trama de bytes corto en realidad es extremadamente largo, en este caso es como ejemplo.
  10. PROGMEM const unsigned char rawData[] = {
  11.  0xFF, 0xD8, 0xFF, 0xE1, 0x00, 0x18, 0x45, 0x78, 0x69, 0x66, 0x00, 0x00
  12. };
  13.  
  14. void setup()
  15. {
  16.  pinMode(13, OUTPUT); // Donde está el Led 13.
  17.  pinMode(8, INPUT); // Entrada digital donde está el pulsador.
  18.  Serial.begin(115200);
  19. }
  20.  
  21. void enviarImagen() {
  22.  for (unsigned int i = 0; i < sizeof(rawData); i++)
  23.    Serial.write(pgm_read_byte(&rawData[i]));
  24. }
  25.  
  26. void loop()
  27. {
  28.  estadoBoton = digitalRead(8); // Leer entrada digital número 8.
  29.  
  30.  // Si el pulsador está pulsado, se enciende el Led 13 y
  31.  // envía comando HIGH por el puerto serie.
  32.  
  33.  if (estadoBoton != anteriorBoton) // Comprueba si ha habido un cambio en el estado del botón.
  34.  {
  35.    flagMensaje = 0;                // Resetea la bandera a 0.
  36.    anteriorBoton = estadoBoton;    // Guarda el estado actual del botón.
  37.  }
  38.  
  39.  if (estadoBoton == HIGH && flagMensaje == 0) // Comprueba que el botón esté pulsado y que no se haya enviado el mensaje.
  40.  {
  41.    digitalWrite(13, HIGH);
  42.    //Serial.write("ON");
  43.    enviarImagen(); // Enviar imagen o foto hacia el puerto serie al PC.
  44.    delay(50);
  45.  
  46.    if (flagMensaje == 0) // Si se envío el mensaje aumenta la variable a 1 para no enviarlo la próxima vez.
  47.      flagMensaje++;
  48.  }
  49.  
  50.  // De lo contrario, Led 13 epagado y envía LOW al puerto serie.
  51.  else if (flagMensaje == 0) // Si el botón no está presionado y aún no se envía el mensaje.
  52.  {
  53.    digitalWrite(13, LOW);
  54.    //Serial.write("OFF");
  55.    delay(50);
  56.  
  57.    if (flagMensaje == 0) // Si se envió el mensaje aumenta la variable en 1 para no enviarla la próxima vez.
  58.      flagMensaje++;
  59.  }
  60. }

Dentro del los bytes hay una foto, en Arduino IDE, en el cual C# debe captar los datos y no me sale. Cuando lo capte, tiene que usar estas instrucciones que aún no he puesto, que es crear el archivo en el disco duro,luego ejecutar la foto.

Código
  1. File.WriteAllBytes("fotón.jpg", datosArray); // Crear archivo en el disco duro.

Código
  1. Process.Start("fotón.jpg"); // Ejecutar visualizador de imágenes.

Antes, C# tiene que ser capaz de capturar los datos desde el puerto serie y guardarlo en memoria en C#.

Feliz año nuevo 2017.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arduino y atmel328, como lo saco del socket?
Electrónica
Debci 6 6,226 Último mensaje 30 Mayo 2010, 12:57 pm
por Dracomega
No se como reproducir sonidos en la cpu con arduino.
Electrónica
LaRazonQueTeDemora 3 5,520 Último mensaje 10 Agosto 2013, 03:45 am
por engel lex
¿Como crear un Array de Array's en C++?
Programación C/C++
welms28 1 1,875 Último mensaje 7 Febrero 2014, 18:17 pm
por rir3760
como se usan las targetas RFID en arduino?
Electrónica
priorigi_10 0 3,887 Último mensaje 29 Marzo 2014, 01:02 am
por priorigi_10
Como programo esto en arduino?
Electrónica
JCRb 6 5,461 Último mensaje 2 Diciembre 2014, 10:07 am
por JCRb
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines