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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  No muestra visualmente los datos al variar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No muestra visualmente los datos al variar  (Leído 1,495 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
No muestra visualmente los datos al variar
« en: 3 Marzo 2016, 16:07 pm »

Hola:

Hice un pequeño programa, más bien adaptado del AWP a WPF bajo Visual C# 2015. En AWP me funciona en tiempo real a la hora de recibir datos diferentes, en WPF se queda congelado en el momento de recibir el primer dato. Si cambio los datos, cierro el programa y lo vuelvo abrir, se muestra los nuevos valores y se queda congelado.



El código fuente de C# WPF.
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15.  
  16. using System.IO.Ports; // No olvidar.
  17.  
  18. namespace Arduino_In_Analogico_Prueba_01_WPF
  19. {
  20.    /// <summary>
  21.    /// Lógica de interacción para MainWindow.xaml
  22.    /// </summary>
  23.    public partial class MainWindow : Window
  24.    {
  25.        // Utilizaremos un string como buffer de recepción.
  26.        string Recibidos;
  27.        SerialPort serialPort1 = new SerialPort();
  28.  
  29.        public MainWindow()
  30.        {
  31.            InitializeComponent();
  32.  
  33.            // Configuramos el puerto serie.
  34.            serialPort1.BaudRate = 115200; // Baudios, tiene que ser el mismo que Arduino.
  35.            serialPort1.PortName = "COM4"; // Elegijos el mismo puerto que de Arduino.
  36.            serialPort1.Parity = Parity.None; // Nada de paridad.
  37.            serialPort1.DataBits = 8; // 8 bits.
  38.            serialPort1.StopBits = StopBits.Two; // Recomendado con 2 bits de Stop o parada.
  39.  
  40.            // Abrir y mantener abierto el puerto serie mientras se ejecute la aplicación.
  41.            if (!serialPort1.IsOpen)
  42.            {
  43.                try
  44.                {
  45.                    serialPort1.Open();
  46.                }
  47.                catch (System.Exception ex)
  48.                {
  49.                    MessageBox.Show(ex.ToString());
  50.                }
  51.            }
  52.  
  53.            // Ejecutar la función Recepción por disparo del evento ¡DataReived!
  54.            serialPort1.DataReceived += Recepcion;
  55.        }
  56.  
  57.        private void Recepcion(object sender, SerialDataReceivedEventArgs e)
  58.        {
  59.            // Acumular los caracteres recibidos a nuestro "buffer" (string).
  60.            Recibidos += serialPort1.ReadExisting();
  61.  
  62.            // Invocar o llamar al proceso de tramas.
  63.            this.Dispatcher.Invoke(Actualizar);
  64.        }
  65.  
  66.  
  67.        // Como variables de clase
  68.        private string[] Separador = new string[] { ",", "\r", "\n", "/n" };
  69.        private List<string> Leo_Dato1 = new List<string>();
  70.  
  71.        // Procesar los datos recibidos en el bufer y extraer tramas completas.
  72.        private void Actualizar()
  73.        {
  74.            double Voltaje = 0;
  75.            double Porcentaje = 0;
  76.  
  77.            // En el evento
  78.            Leo_Dato1.Clear();
  79.            Leo_Dato1.AddRange(Recibidos.Split(Separador, StringSplitOptions.RemoveEmptyEntries));
  80.  
  81.            label_Lectura_Potenciometro.Content = Leo_Dato1[0].ToString();
  82.            progressBar.Value = Convert.ToInt32(Leo_Dato1[0].ToString());
  83.  
  84.            double Dato_Voltaje = Convert.ToDouble(Leo_Dato1[0]);
  85.            double Dato_Porcentaje = Convert.ToDouble(Leo_Dato1[0]);
  86.  
  87.            Voltaje = Dato_Voltaje * (5.00 / 1023.00);
  88.            Porcentaje = Dato_Porcentaje * (100.00 / 1023.00);
  89.  
  90.            label_Voltaje.Content = Voltaje.ToString("N2") + " V.";
  91.            label_Portentaje.Content = Porcentaje.ToString("N0") + " %";
  92.        }
  93.    }
  94. }
  95.  

¿Hay alguna solución?

Saludos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Para variar
Foro Libre
Delt_hack 3 3,108 Último mensaje 27 Abril 2010, 05:05 am
por ignorantev1.1
No me muestra bien los datos
PHP
carlosuc99 1 1,564 Último mensaje 24 Noviembre 2012, 16:35 pm
por gowend
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines