Lee como 0 todo el rato.
El código que hice es este.
Código:
using System;
using System.IO;
using System.IO.Ports;
using System.Text;
namespace Recibir_archivo_desde_Arduino_consola
{
class Program
{
public static string Recibidos = "";
//public static byte[] datosArray = Encoding.ASCII.GetBytes(Recibidos);
public static byte[] datosArray = Encoding.ASCII.GetBytes(Recibidos);
static void Main(string[] args)
{
string COM = "";
// Tamaño ventana consola.
Console.WindowWidth = 55; // X. Ancho.
Console.WindowHeight = 15; // Y. Alto.
Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro"; // Título de la ventana.
// 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.
Puerto_serie.Parity = Parity.None; // Paridad.
Puerto_serie.DataBits = 8; // Bits de datos.
Puerto_serie.StopBits = StopBits.Two; // Bits de parada.
Puerto_serie.Handshake = Handshake.None; // Control de flujo.
// Establecer la lectura / escritura de los tiempos de espera.
Puerto_serie.ReadTimeout = 500;
Puerto_serie.WriteTimeout = 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.");
}
Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
Console.Read();
Puerto_serie.Close(); // Cerrar puerto.
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
//int ByteLeidos = sp.Read(datosArray, 0, 28256);
string contador = "";
contador += Recibidos.Length;
Console.WriteLine(contador);
Recibe por el puerto serie siempre en hexadecimal sin codificar, es decir, binaros pero se leen como hex, dejo esto claro por si acaso.
¿Alguna ayuda?
Saludos.