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


 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Hacer cambios de este código.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Hacer cambios de este código.  (Leído 4,014 veces)
Meta


Desconectado Desconectado

Mensajes: 3.204



Ver Perfil WWW
Hacer cambios de este código.
« en: 25 Enero 2017, 03:05 »

Hola:

Tengo este código de abajo que funciona bien. Lo que hace es, al recibir algún dato por el puerto serie, me lo almacena en un array y guarda el archivo en el disco duro. Hecho en C#.
Código
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.IO.Ports;
  5.  
  6. namespace Recibir_archivo_desde_Arduino_consola_02
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            string COM = "";
  13.  
  14.            // Tamaño ventana consola.
  15.            Console.WindowWidth = 55; // X. Ancho.
  16.            Console.WindowHeight = 15; // Y. Alto.
  17.            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro"; // Título de la ventana.
  18.  
  19.            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  20.            SerialPort Puerto_serie = new SerialPort();
  21.  
  22.            // Configuración.
  23.            Console.Write(@"
  24. Introduzca un número para seleccionar puerto COM.
  25. Por ejemplo el 4, sería COM4.
  26.  
  27. Puerto: ");
  28.            COM = Console.ReadLine(); // Escribir el número del puerto.
  29.            Console.Clear();
  30.  
  31.            Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.
  32.  
  33.  
  34.            Puerto_serie.BaudRate = 115200; // Baudios. 115200.
  35.            Puerto_serie.Parity = Parity.None; // Paridad.
  36.            Puerto_serie.DataBits = 8; // Bits de datos.
  37.            Puerto_serie.StopBits = StopBits.Two; // Bits de parada.
  38.            Puerto_serie.Handshake = Handshake.None; // Control de flujo.
  39.  
  40.            // Establecer la lectura / escritura de los tiempos de espera.
  41.            Puerto_serie.ReadTimeout = -1; // 500.
  42.            Puerto_serie.WriteTimeout = -1; // 500.
  43.  
  44.            try
  45.            {
  46.                Puerto_serie.Open(); // Abrir el puerto serie.
  47.            }
  48.  
  49.            catch (IOException)
  50.            {
  51.                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
  52.                Console.CursorVisible = false;
  53.                Console.SetCursorPosition(16, 6);
  54.                Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe
  55.                o no lo encuentra.");
  56.                Console.ReadKey(); // Pulse cualquier tecla para salir.
  57.            }
  58.  
  59.            catch (UnauthorizedAccessException e)
  60.            {
  61.                Console.WriteLine(e);
  62.            }
  63.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  64.  
  65.            Console.WriteLine("Esperando datos desde Arduino...");
  66.            Console.Read();
  67.            Puerto_serie.Close(); // Cerrar puerto.
  68.        }
  69.  
  70.        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  71.  
  72.        {
  73.            try
  74.            {
  75.                SerialPort sp = (SerialPort)sender;
  76.                int contador = 0;
  77.                byte[] datosArray = new byte[17729]; // Aquí tengo que cambiar el valor cuando recibo datos desde el puerto serie.
  78.  
  79.                while (contador < datosArray.Length)
  80.                {
  81.  
  82.                    contador += sp.Read(datosArray, contador, datosArray.Length - contador);
  83.  
  84.                    Console.SetCursorPosition(10, 2);
  85.                    Console.Write("Datos recibidos:  {0}", contador);
  86.                    Console.WriteLine("                   ");
  87.  
  88.                    if (contador == 17729)
  89.                    {
  90.                        Console.WriteLine();
  91.                        Console.WriteLine("Creando archivo al disco duro...");
  92.                        File.WriteAllBytes("fotón.jpg", datosArray); // Crear archivo en el disco duro.
  93.                        Console.WriteLine();
  94.                        Console.WriteLine("Archivo creado. Ejecutando imagen.");
  95.                        Process.Start("fotón.jpg"); // Ejecutar visualizador de imágenes.
  96.                        Console.WriteLine();
  97.                        Console.WriteLine("Imagen ejecutada.");
  98.                        Console.WriteLine();
  99.                        Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
  100.                        Console.WriteLine("FIN DE PROGRAMA.");
  101.                        Console.ForegroundColor = ConsoleColor.Gray; // Letras grises otra vez.
  102.                    }
  103.                }
  104.            }
  105.  
  106.  
  107.            catch (TimeoutException)
  108.            {
  109.                //maybe increase ReadTimeout or something, use exponential backoff, your call
  110.            }
  111.  
  112.            catch (IOException)
  113.            {
  114.                // Console.WriteLine("La operación de E/S se anuló por una salida de subproceso o por una solicitud de aplicación.");
  115.            }
  116.        }
  117.    }
  118. }
  119.  

Quiero tener ideas para modificar este programa.

Los datos del puerto serie puede llegar desde Arduino o desde otro PC. Como llega desde Arduino en este caso, tiene dos botones, si pulsa el primer botón, C# recibe ciertos comandos que son estos:

Si en Arduino presiono el primer botón, C# le llega este número de 5 Bytes en este caso, 17729. Ese valor tiene que incluirse aquí, en esta parte del código indicado abajo.

Código
  1. byte[] datosArray = new byte[17729];

Como puedes ver, he puesto manualmente el valor de este array 17729.

¿Cómo hago que al detectar cualquier valor, en este caso 17729 sea para el array datosArray?

Digo 17729 como ejemplo, si le llega 478, pues que sea 478.

Lo que no entiendo que luego de llegar 17729, que son solo 5 dígitos, llegará de inforamación 17729 Bytes detrás.

Si no haz entendido algo, preguntar para explicarlo de otra manera.

Saludos.


En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #1 en: 25 Enero 2017, 12:47 »

Si el protocolo es:
Código:
N -> 5 bytes
{ N BYTES }

Pues primero lees los primeros 5 bytes, los conviertes a un entero, y se lo pones de longitud al array.
Luego, lees esos N bytes (o lo que sea).


En línea

Meta


Desconectado Desconectado

Mensajes: 3.204



Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #2 en: 25 Enero 2017, 13:18 »

Hola:

Leyendo por aquí:
Cómo: Convertir una cadena en un número (Guía de programación de C#)

Se puede hacer algo como esto.
Código
  1.                int cantidadBytes = Int32.Parse("17729");
  2.                byte[] datosArray = new byte[cantidadBytes];

Lo que hace Arduino en enviar esta trama así:

Código
  1. 17729pcomsfgocfgmpsomhgpodmgpdfgsioidchg954y90y4h30x50hg98c9oc0m9vy509hc596h509

Como se puede ver, los 5 primeros bytes corresponde al 17729, es es la cantidad del tamaño del array llamado datosArray en el ejemplo de arriba.

Lo veo así complicado. A lo mejor hay que cambiar la forma de hacer las cosas.

1. C# espera que le lleguen datos.
2. Arduino envía solo este valor 17729.
3. C# convierte de string a int y el arrayDatos ya tiene el tamaño deseado.
4. C# le envía por el puerto serie estos caráscteres, OK.
5. Arduino entiende el OK y envía el resto de tramas de bytes.
6. C# almacena los datos en el arrayDatos, crea el archivo al disco duro y lo abre, en este caso es una foto.

Me parece que aí está mejor que enviar todo de golpe como pretendía en un principio. La pregunta es.

¿Cómo se hace?

Mira que me lavé el cerebro, ajjajaj jaj ajaja para lograr donde he llegado.

Saludos.
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #3 en: 25 Enero 2017, 13:31 »

Si lo que quieres es responderle al Arduino tras recibir el número, pues nada, es eso. Tras enviar el número, el Arduino tendrá que esperar la respuesta. NO sé qué es exactamente lo que no sabes hacer (solo es enviar, esperar y recibir, al fin y al cabo)


Otra opción es recibir el número en una cantidad de bytes fija. Es decir, 2 posibilidades:
1) Enviar el número "en binario". Un int son 4 bytes, así que solo tendrías que leer 4 bytes. (Si nunca trabajaste con datos binarios, puedes saltarte esta opción temporalmente)
2) Enviar, por ejemplo, 8 caracteres fijos, y rellenarcon ceros: 00015678<datos>.

También puedes poner un delimitador:
15678;<datos>
Pones el punto y coma (o cualquier caracter no-numérico) después, y ya sabes cuando dejar de leer el número.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.204



Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #4 en: 25 Enero 2017, 15:26 »

Buenas:

Gracias porlainformación.
Cómo: Analizar cadenas mediante String.Split (Guía de programación de C#).

Antes de seguir programando, hay que tener las ideas claras y se me ha cambiado.

Cosas tener en cuenta.

Arduino tiene dos fotos dentro del microcontrolador.
Usa tres pulsadores.
Pulsador 1: Le envía información del contenido sobre Arduino que lee C. Por ejemplo:
Citar
Arduino UNO r3.
Versión: 1.26.
---------------------
Contenido:
Foto 1: 17729 Bytes. (Pulsador 2).
Foto 2: 5000 Bytes. (Pulsador 3).
---------------------

Como puedes ver arriba, Arduino le envía esa información y C# lo lee y muestra en pantalla.

Pulsador 2: Envía la primera foto a C#.
Pulador 3: Envía la otra foro.

Está bien lo de usar delimitadores, en este caso prefiero comandos y respuesta.

1. C# espera algún dato por parte de Arduino.
2. Como la placa de Arduino usa tres botones, pues si pulsa el primero envía información del contenido de Arduino.
3. Si pulsa el segundo o tercer botón, lo primero que hace Arduino es enviar números, por ejemplo, pulso el segundo pulsador y le envía solo esto: 17729.
4. C# lo recibe, en el cual ya modifica el tamaño del array.
5. C# le envía un este dato: OK.
6. Arduino empieza a enviar tramas de bytes de la primera foto.

¿Qué les parece?

Saludos.

PD: Dejo claro que es una idea, no tiene que ser la mejor, de esta idea puede aparecer otras ideas por parte de los visitantes, pueden participar. Ánimos y adelante.
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #5 en: 25 Enero 2017, 16:02 »

Si vas a hacer un protocoo con varios comandos, entonces ponle un identificador del comando al principio:

Código:
CMD -> 1 byte
if CMD = A {
    protocolo A 
}else if CMD = B {
    protocolo B
}

Ej. Este mismo protocolo, pero del lado del Arduino: https://github.com/ivancea/Arduino-Interpreter/blob/master/arduino_program.c
En línea

Meta


Desconectado Desconectado

Mensajes: 3.204



Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #6 en: 25 Enero 2017, 23:29 »

Hola:

Lo que tengo hecho en Arduino y aún no está como debe estar es este.
Código
  1. // Enviar tramas de byte al puerto serie y LCD Keypad Shield.
  2.  
  3. #include <LiquidCrystal.h>
  4.  
  5. int estadoActual1 = 0;
  6. int estadoActual2 = 0;
  7. int estadoUltimo = 0;
  8. char caracter;
  9. String comando;
  10.  
  11. // Teide 22-02-2016.
  12. PROGMEM const unsigned char rawData[] = {
  13.  0xFF, 0xD8, 0xFF, 0xE1, 0x00, 0x18, 0x45, 0x78, 0x69, 0x66, 0x00, 0x00
  14. };
  15.  
  16. // Inicializa la librería con sus pines indicados.
  17. // RS, RW, Enable, D4, D5, D6, D7.
  18. LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);
  19.  
  20. // Pin 10 para saber que es luz de fondo.
  21. //int LuzFondo = 10
  22.  
  23. void setup()
  24. {
  25.  pinMode(2, INPUT); // Entrada digital donde está el pulsador.
  26.  
  27.  // Baudios.
  28.  Serial.begin(115200);
  29.  
  30.  // Formato de pantalla.
  31.  lcd.begin(16, 2);
  32. }
  33.  
  34. void enviarImagen()
  35. {
  36.  for (unsigned int i = 0; i < sizeof(rawData); ) // El i++ de aquí se quita.
  37.  {
  38.    Serial.write(pgm_read_byte(&rawData[i]));
  39.    lcd.setCursor(0, 0); // Posiciona el cursor donde quieras que se imprima la cantidad de bytes enviados.
  40.    // Procura dejar un espacio de entre 5 y 8 caracteres según la cantidad de dígitos a representar.
  41.    lcd.print(++i);
  42.  }
  43. }
  44.  
  45. void loop()
  46. {
  47.  estadoActual1 = digitalRead(2); // Leer entrada digital número 2.
  48.  delay(10);
  49.  estadoActual2 = digitalRead(2);
  50.  
  51.  if (estadoActual1 == estadoActual2)
  52.  {
  53.    if (estadoActual1 != estadoUltimo)
  54.    {
  55.      if (estadoActual1 == HIGH)
  56.      {
  57.        Serial.write(0x51); // Envía 0x51 que es ARCHIVO_1_OK en C#.
  58.      }
  59.    }
  60.  }
  61.  
  62.  estadoUltimo = estadoActual1;
  63.  
  64.  /* Voy leyendo carácter a carácter lo que se recibe por el canal serie
  65.       (mientras lelgue algún datoallí), y los voy concatenando uno tras otro
  66.       en una cadena. En la práctica, si usamos el "Serial monitor" el bucle while
  67.       acabará cuando pulsamos Enter. Eldelay es conveniente para no saturar el
  68.       canal serie y que la concatenación se haga de forma ordenada.
  69.   */
  70.  
  71.  while (Serial.available() > 0)
  72.  {
  73.    caracter = Serial.read();
  74.    comando.concat(caracter);
  75.    delay(10);
  76.  }
  77.  
  78.  /* Una vez ya tengo la cadena "acabada", compruebo su valor y hago que
  79.       la placa Arduino reacciones según sea este. Aquí podríamos hacer lo
  80.       que quisiéramos: si el comando es "tal", enciende un Led,si es cual,
  81.       mueve un motor... y así.
  82.   */
  83.  
  84.  if (comando.equals(0x01) == true)
  85.  {
  86.    Serial.write("17729");
  87.  }
  88.  
  89.  if (comando.equals(0xA1) == true)
  90.  {
  91.    enviarImagen(); // Enviar imagen o foto hacia el puerto serie al PC.
  92.    lcd.setCursor(0, 1); // Crusor segunda línea del LCD.
  93.    lcd.print("Archivo: JPG    ");
  94.  }
  95.  
  96.  // Limpiamos la cadena pra vovler a recibir el siguiente comando.
  97.  comando = "";
  98. }
  99.  

En C#:
Código
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.IO.Ports;
  5.  
  6. namespace Recibir_archivo_desde_Arduino_consola_02
  7. {
  8.    class Program
  9.    {
  10.        // Comandos a enviar a Arduino.
  11.        public enum Arduino_Comandos
  12.        {
  13.            ARCHIVO_1 = 0x01,
  14.            ARCHIVO_2 = 0x02
  15.        }
  16.  
  17.        // Respuestas de Arduino.
  18.        public enum Arduino_Respuestas
  19.        {
  20.            INFO = 0x50,
  21.            ARCHIVO_1_OK = 0x51,
  22.            ARCHIVO_2_OK = 0x52
  23.        }
  24.  
  25.        static void Main(string[] args)
  26.        {
  27.            string COM = "";
  28.  
  29.            // Tamaño ventana consola.
  30.            Console.WindowWidth = 55; // X. Ancho.
  31.            Console.WindowHeight = 15; // Y. Alto.
  32.            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro"; // Título de la ventana.
  33.  
  34.            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  35.            SerialPort Puerto_serie = new SerialPort();
  36.  
  37.            // Configuración.
  38.            Console.Write(@"
  39. Introduzca un número para seleccionar puerto COM.
  40. Por ejemplo el 4, sería COM4.
  41.  
  42. Puerto: ");
  43.            COM = Console.ReadLine(); // Escribir el número del puerto.
  44.            Console.Clear();
  45.  
  46.            Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.
  47.  
  48.  
  49.            Puerto_serie.BaudRate = 115200; // Baudios. 115200.
  50.            Puerto_serie.Parity = Parity.None; // Paridad.
  51.            Puerto_serie.DataBits = 8; // Bits de datos.
  52.            Puerto_serie.StopBits = StopBits.Two; // Bits de parada.
  53.            Puerto_serie.Handshake = Handshake.None; // Control de flujo.
  54.  
  55.            // Establecer la lectura / escritura de los tiempos de espera.
  56.            Puerto_serie.ReadTimeout = -1; // 500.
  57.            Puerto_serie.WriteTimeout = -1; // 500.
  58.  
  59.            try
  60.            {
  61.                Puerto_serie.Open(); // Abrir el puerto serie.
  62.            }
  63.  
  64.            catch (IOException)
  65.            {
  66.                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
  67.                Console.CursorVisible = false;
  68.                Console.SetCursorPosition(16, 6);
  69.                Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe
  70.                o no lo encuentra.");
  71.                Console.ReadKey(); // Pulse cualquier tecla para salir.
  72.            }
  73.  
  74.            catch (UnauthorizedAccessException e)
  75.            {
  76.                Console.WriteLine(e);
  77.            }
  78.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  79.  
  80.            Console.WriteLine("Esperando datos desde Arduino...");
  81.            Console.Read();
  82.            Puerto_serie.Close(); // Cerrar puerto.
  83.        }
  84.  
  85.        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  86.  
  87.        {
  88.            try
  89.            {
  90.                SerialPort sp = (SerialPort)sender;
  91.                int contador = 0;
  92.  
  93.                int cantidadBytes = int.Parse("17729");
  94.                byte[] datosArray = new byte[cantidadBytes];
  95.  
  96.                if (/* Algo hay que poner aquí y no tengo idea. */ == 0x51)
  97.                {
  98.                    byte[] miBuffer = new byte[1];
  99.                    miBuffer[0] = 0x01;
  100.                    sp.Write(miBuffer, 0, miBuffer.Length);
  101.                }
  102.  
  103.                    while (contador < datosArray.Length)
  104.                {
  105.                    contador += sp.Read(datosArray, contador, datosArray.Length - contador);
  106.  
  107.                    Console.SetCursorPosition(10, 2);
  108.                    Console.Write("Datos recibidos:  {0}", contador);
  109.                    Console.WriteLine("                   ");
  110.  
  111.                    if (contador == 17729) // 17729.
  112.                    {
  113.                        Console.WriteLine();
  114.                        Console.WriteLine("Creando archivo al disco duro...");
  115.                        File.WriteAllBytes("fotón.jpg", datosArray); // Crear archivo en el disco duro.
  116.                        Console.WriteLine();
  117.                        Console.WriteLine("Archivo creado. Ejecutando imagen.");
  118.                        Process.Start("fotón.jpg"); // Ejecutar visualizador de imágenes.
  119.                        Console.WriteLine();
  120.                        Console.WriteLine("Imagen ejecutada.");
  121.                        Console.WriteLine();
  122.                        Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
  123.                        Console.WriteLine("FIN DE PROGRAMA.");
  124.                        Console.ForegroundColor = ConsoleColor.Gray; // Letras grises otra vez.
  125.                    }
  126.                }
  127.            }
  128.  
  129.  
  130.            catch (TimeoutException)
  131.            {
  132.                //maybe increase ReadTimeout or something, use exponential backoff, your call
  133.            }
  134.  
  135.            catch (IOException)
  136.            {
  137.                // Console.WriteLine("La operación de E/S se anuló por una salida de subproceso o por una solicitud de aplicación.");
  138.            }
  139.        }
  140.    }
  141. }
  142.  

No se si te dirá algo.

Por ahora solo uso un pulsador para no volvernos locos, cuando todo funcione, pondré los otros dos pulsadores.

Si en Arduino pulsas el pulsador del pin 2, envía este código al PC y C# lo lee.
Código
  1. Serial.write(0x51); // Envía 0x51 que es ARCHIVO_1_OK en C#.

C# debe leer 0x51 que significa el pulsador 1.
Si C# detecta 0x51 desde Arduino, ejecuta esta instrucción y envía el valor 0x01. (Es lo que me falta por corregir y no capto ideas).
Código
  1. if (/* Algo hay que poner aquí y no tengo idea. */ == 0x51)
  2.                {
  3.                    byte[] miBuffer = new byte[1];
  4.                    miBuffer[0] = 0x01;
  5.                    sp.Write(miBuffer, 0, miBuffer.Length);
  6.                }

Arduino lee 0x01 enviado desde C#. Como le llegó 0x01, pues Arduino le envía a C# el valor 17729, que es el valor donde debe ir el array llamado datosArray, ajusta el tamaño de dicho array en C#.
Código
  1. if (comando.equals(0x01) == true)
  2.  {
  3.    Serial.write("17729");
  4.  }

Dejo claro que el programa no está completado y necesito orientación para completarlo.
Cuando ya reciba el dato 17729 en C#, el array ya tiene que tener este valor así.
Código
  1.                int cantidadBytes = int.Parse("17729");
  2.                byte[] datosArray = new byte[cantidadBytes];
No se como se hace, cualquier ayuda en bienvenida.

Luego C# envía otro comando al acabar el redimensionado del array datosArray, este comando que debe enviar es 0xA0.

El código de Arduino se ejecuta esto.
Código
  1.  if (comando.equals(0xA1) == true)
  2.  {
  3.    enviarImagen(); // Enviar imagen o foto hacia el puerto serie al PC.
  4.    lcd.setCursor(0, 1); // Crusor segunda línea del LCD.
  5.    lcd.print("Archivo: JPG    ");
  6.  }

Por fin ya puede recoger C# dicha foto.

Saludos.
« Última modificación: 26 Enero 2017, 03:18 por Meta » En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #7 en: 26 Enero 2017, 16:01 »

Dejo claro que el programa no está completado y necesito orientación para completarlo.
Cuando ya reciba el dato 17729 en C#, el array ya tiene que tener este valor así.
Código
  1.                int cantidadBytes = int.Parse("17729");
  2.                byte[] datosArray = new byte[cantidadBytes];
No se como se hace, cualquier ayuda en bienvenida.

No entiendo exactamente qué es lo que no sabes cómo se hace.
¿Cómo leer el número que envía Arduino? Igual que leerías la imagen, por supuesto.
¿Como convertir el número a un número para el array? Igual que pusiste en ese código ahí.
¿?
En línea

Meta


Desconectado Desconectado

Mensajes: 3.204



Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #8 en: 26 Enero 2017, 23:40 »

Ese código lo puse manualmente en 17729, mi idea es que tiene que captar desde Arduino ese valor y modificar dicho array.
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Hacer cambios de este código.
« Respuesta #9 en: 27 Enero 2017, 15:11 »

Código
  1. int.Parse(loQueAcabasDeLeerDelArduino)

Lees del Arduino, lo metes en una variable y lo conviertes a int. ¿Qué parte exactamente de esto no das?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines