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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Temas
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 66
211  Programación / .NET (C#, VB.NET, ASP) / No refresca la barra al volver a 0. en: 29 Mayo 2016, 09:44 am
Hola:

Antes cuando mostraba los datos la pantalla de modo consola en C# parpadeada porque ponía el Console.Clear();

Ahora uso las coordenadas donde supuestamente deben de parpadear cuando cambia el valor.

Lo que le ocurre y quiero solucionar. Recibo datos de 0 a 1023, en el cual muestra la barra de progreso, cuando aumento de valor, la barra de progreso escrito en modo consola, aunmenta.

Si bajo el valor, la barra de progreso no baja, se queda donde alcanzó su valor máximo.

Quiero saber la forma de solucionarlo. Aquí abajo dejo el código.

Código
  1. using System;
  2. using System.IO.Ports; // No olvidar.
  3. using System.IO;
  4.  
  5. namespace Porcentaje_Barra_P_Serie_Consola_3_CS
  6. {
  7.    class Program
  8.    {
  9.        public static string Recibidos = "";
  10.        public static double Resultado_Porcentaje = 0;
  11.        public static double Resultado_Voltios = 0;
  12.        public static double Mitad_barra = 0;
  13.  
  14.  
  15.        static void Main(string[] args)
  16.        {
  17.            string COM = "";
  18.  
  19.            // Tamaño ventana consola.
  20.            Console.WindowWidth = 55; // X.
  21.            Console.WindowHeight = 15; // Y.
  22.            Console.Title = "Serial Port C# - v.02"; // Título de la ventana.
  23.  
  24.            SerialPort Puerto_serie;
  25.  
  26.            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  27.            Puerto_serie = new SerialPort();
  28.  
  29.            // Configuración.
  30.            Console.Write(@"
  31. Introduzca un número para seleccionar puerto COM.
  32. Por ejemplo el 4, sería COM4.
  33.  
  34. Puerto: ");
  35.            COM = Console.ReadLine(); // Escribir el número del puerto.
  36.            Console.Clear();
  37.  
  38.            Puerto_serie.PortName = "COM" + COM; // Número del puerto serie.
  39.  
  40.  
  41.            Puerto_serie.BaudRate = 115200; // Baudios.
  42.            Puerto_serie.Parity = Parity.None; // Paridad.
  43.            Puerto_serie.DataBits = 8; // Bits de datos.
  44.            Puerto_serie.StopBits = StopBits.Two; // Bits de parada.
  45.            Puerto_serie.Handshake = Handshake.None; // Control de flujo.
  46.  
  47.            // Establecer la lectura / escritura de los tiempos de espera.
  48.            Puerto_serie.ReadTimeout = 500;
  49.            Puerto_serie.WriteTimeout = 500;
  50.  
  51.            try
  52.            {
  53.                Puerto_serie.Open(); // Abrir el puerto serie.
  54.            }
  55.  
  56.            catch (IOException)
  57.            {
  58.                Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo.
  59.                Console.CursorVisible = false;
  60.                Console.SetCursorPosition(16, 6);
  61.                Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe
  62.                o no lo encuentra.");
  63.            }
  64.  
  65.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  66.  
  67.            Console.Read();
  68.            Puerto_serie.Close(); // Cerrar puerto.
  69.        }
  70.  
  71.        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  72.  
  73.        {
  74.  
  75.            try
  76.            {
  77.                SerialPort sp = (SerialPort)sender;
  78.                Recibidos = sp.ReadExisting();
  79.                //Console.Clear();
  80.  
  81.                Recibidos = Recibidos.Replace("\n\r", "");
  82.  
  83.                int Variar_este_valor = Convert.ToInt32(Recibidos);
  84.  
  85.                Resultado_Porcentaje = Variar_este_valor * (100.00 / 1023.00);
  86.                Resultado_Voltios = Variar_este_valor * (5.00 / 1023.00);
  87.  
  88.  
  89.                Console.SetCursorPosition(0, 1);
  90.                Console.Write("Datos recibidos: ");
  91.                Console.SetCursorPosition(17, 1);
  92.                Console.Write("    ");
  93.                Console.SetCursorPosition(17, 1);
  94.                Console.Write(Recibidos);
  95.  
  96.  
  97.                Console.SetCursorPosition(0, 3);
  98.                Console.Write("0 %                     50 %                   100 %");
  99.                Console.SetCursorPosition(0, 4);
  100.                Console.Write("┌────────────────────────┬───────────────────────┐");
  101.                Console.Write("                                                  ");
  102.                Console.ForegroundColor = ConsoleColor.Yellow;
  103.  
  104.                // Se dibide por dos la barra del porcentaje para que quepa decuadamente en la pantalla.
  105.                Mitad_barra = Resultado_Porcentaje / 2;
  106.  
  107.                if (Mitad_barra > 50)
  108.                {
  109.                    Mitad_barra = 50;
  110.                }
  111.  
  112.                Console.SetCursorPosition(0, 5);
  113.                // Barra de progreso.
  114.                for (int i = 1; i <= Mitad_barra; i++)
  115.                {
  116.                    Console.Write("&#9608;"); // Muestra ASCII 219 Dec y DB en Hex.
  117.                }
  118.                //Console.SetCursorPosition(0, 5);
  119.                //Console.Write("                                                  ");
  120.                Console.SetCursorPosition(0, 5);
  121.                Console.Write("--------------------------------------------------");
  122.  
  123.                // Si sobre pasa 100, muestra # al final de la barra del porcentaje de color rojo.
  124.                if (Resultado_Porcentaje >= 100)
  125.                {
  126.                    Console.ForegroundColor = ConsoleColor.Red;
  127.                    Console.Write("#");
  128.                }
  129.  
  130.                Console.ForegroundColor = ConsoleColor.Gray; // Vuelve al color gris.
  131.  
  132.                // Línea 7.
  133.                Console.SetCursorPosition(0, 7);
  134.                Console.Write("Porcentaje: ");
  135.                Console.SetCursorPosition(12, 7);
  136.                Console.Write("            ");
  137.                Console.SetCursorPosition(12, 7);
  138.                Console.Write(Resultado_Porcentaje.ToString("N0") + " %.");
  139.  
  140.                // Línea 8.
  141.                Console.SetCursorPosition(0, 8);
  142.                Console.Write("Voltios: ");
  143.                Console.SetCursorPosition(12, 8);
  144.                Console.Write("            ");
  145.                Console.SetCursorPosition(12, 8);
  146.                Console.Write(Resultado_Voltios.ToString("N2") + " V.");
  147.  
  148.            }
  149.  
  150.            catch (FormatException)
  151.            {
  152.                // Console.WriteLine("La cadena de entrada no tiene el formato correcto.");
  153.                return;
  154.            }
  155.        }
  156.    }
  157. }
  158.  
  159.  

Saludos.
212  Seguridad Informática / Hacking / ¿Qué servidor es más hackeado? en: 28 Abril 2016, 16:26 pm
Hola:

DE Call of Duty de la X-Box 360 o PlayStation 3.

Los de PS3 dicen que son los de 360 más hackeados, los de la 360 dicen que son los de PS3.

¿En qué quedamos?

Saludos.
213  Programación / .NET (C#, VB.NET, ASP) / Se me cuelga Windows Form en: 27 Abril 2016, 01:18 am
Hola:

Tengo un programa que recibe datos una y otra vez por el puerto serie. A 0.1 segundos datos del 0 al 1023. Si no hay datos que esté leyendo porque en el otro lado no lo está enviando, puedo cerrar el programa sin problemas. Si hay datos que le llega y lee, al cerrar el programa aunque pongas SerialPort1.Close(); El programa se cuelga.

En el Load de Windwos Form he puesto esto.
Código
  1. Control.CheckForIllegalCrossThreadCalls = false;
https://msdn.microsoft.com/es-es/library/system.windows.forms.control.checkforillegalcrossthreadcalls%28v=vs.100%29.aspx

Se sigue colgando. No ha funcionado.

Por lo que he leído hay que usar hilos y es más complejo, no lo se.

¿Alguna solución?

Saludos.
214  Programación / .NET (C#, VB.NET, ASP) / Recibe datos por el puerto serie en modo consola y lo interpreta en: 21 Abril 2016, 15:11 pm
Hola:

Quiero recibir datos por el puerto serie. He hecho varios ejemplos. Lo más sencillo es este código de abajo, solo tiene que mostrar número en la posición que yo quiera X, Y del 0 al 1023 que recibe todo el rato. El código le llega desde Arduino y su código es.

Código Arduino:
Código
  1. int valorPot=0;
  2.  
  3. void setup(){ Serial.begin(115200); }
  4.  
  5. void loop(){
  6.     valorPot=analogRead(2);
  7.     Serial.println(valorPot);
  8.     delay(100); // 0.1 segundos.
  9. }

Código C#:
Código
  1. using System;
  2. using System.IO.Ports; // No olvidar.
  3. using System.Collections.Generic;
  4.  
  5. namespace Porcentaje_Barra_P_Serie_Consola_2_CS
  6. {
  7.    class Program
  8.    {
  9.        public static string Recibidos = "";
  10.  
  11.        // Como variables de clase
  12.        public static string[] Separador = new string[] { ",", "\r", "\n", "/n" };
  13.        public static List<string> Leo_Dato = new List<string>();
  14.  
  15.        static void Main(string[] args)
  16.        {
  17.            Console.Title = "Serial Port C#";
  18.  
  19.            int Variar_este_valor = 0; // De 0 a 1023.
  20.  
  21.            SerialPort Puerto_serie;
  22.  
  23.            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  24.            Puerto_serie = new SerialPort();
  25.  
  26.            // Configuración.
  27.            Puerto_serie.PortName = "COM4"; // Número del puerto serie.
  28.            Puerto_serie.BaudRate = 115200; // Baudios.
  29.            Puerto_serie.Parity = Parity.None; // Paridad.
  30.            Puerto_serie.DataBits = 8; // Bits de datos.
  31.            Puerto_serie.StopBits = StopBits.Two; // Bits de parada.
  32.            Puerto_serie.Handshake = Handshake.None; // Control de flujo.
  33.  
  34.            // Establecer la lectura / escritura de los tiempos de espera.
  35.            Puerto_serie.ReadTimeout = 500;
  36.            Puerto_serie.WriteTimeout = 500;
  37.  
  38.            Puerto_serie.Open(); // Abre el puerto serie.
  39.  
  40.            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  41.        }
  42.  
  43.        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  44.        {
  45.  
  46.            // En el evento.
  47.            Leo_Dato.Clear();
  48.            Leo_Dato.AddRange(Recibidos.Split(Separador, StringSplitOptions.RemoveEmptyEntries));
  49.  
  50.            SerialPort sp = (SerialPort)sender;
  51.            Recibidos = sp.ReadLine();
  52.            Console.SetCursorPosition(5, 10); // Posición X, Y.
  53.            Console.Write(Recibidos);
  54.        }
  55.    }
  56. }
  57.  

Cuando varío el potenciómetro de Arduino, en el puerto serie del PC, en pantalla de C# o modo consola, tiene que aparecer valores que lee el programa, la pantalla se apaga rápido.

¿Alguna idea?

Saludos.
215  Programación / .NET (C#, VB.NET, ASP) / Mostrar estas dos ventanas de Visual studio que no las encuentro. Memoria y Dese en: 6 Marzo 2016, 10:37 am
Hola:

En documento dice.

Las otras ventanas de depuración:
Hay muchas otras ventanas disponibles para la depuración, pero algunas no son realmente útiles
para el desarrollo de aplicaciones con Visual C#. Se reservan más para la prueba de aplicaciones
desarrolladas con otros lenguajes, C++ por ejemplo.
Por ejemplo, es el caso de la ventana de memoria que permite la visualización del contenido de una
zona de memoria de la cual conocemos la dirección.



Sobre todo en la MEmoria, que para ver esto uso programa de editor hexadecimales externos como este.

He estado buscan doe en Visual Stduuio .net Community 2015 y nada. Al menos quiero saber si lo incluye en esta versión.

Saludos.
216  Programación / .NET (C#, VB.NET, ASP) / 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.
217  Programación / .NET (C#, VB.NET, ASP) / Añadir porcentaje al progressBar en: 27 Febrero 2016, 17:19 pm
Hola:

Estoy haciendo una pequeña prueba. Recibo en el puerto serie / USB datos que recoge Visual C# de 0 a 1023 y lo muestro en un label.



Hasta ahí funciona bien.

Tengo dos label más. El segundo tiene que demostrar el porcentaje del 0 % a 100% según el dato obtenido del 0 a 1023.

En el otro label, el tercero debemostrar número con decimales del 0.00 a 5.00.

A pesar de encontrar la fórmula, no se implementarlo en C#.

El código es este:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. using System.IO.Ports; // No olvidar.
  12.  
  13. namespace Arduino_In_Analogico_prueba_01
  14. {
  15.    public partial class Form1 : Form
  16.    {
  17.        // Utilizaremos un string como buffer de recepción.
  18.        string Recibidos;
  19.        int Porcentaje;
  20.  
  21.        public Form1()
  22.        {
  23.            InitializeComponent();
  24.  
  25.            if (!serialPort1.IsOpen)
  26.            {
  27.                try
  28.                {
  29.                    serialPort1.Open();
  30.                }
  31.                catch (System.Exception ex)
  32.                {
  33.                    MessageBox.Show(ex.ToString());
  34.                }
  35.            }
  36.  
  37.            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
  38.        }
  39.  
  40.        // Al recibir datos.
  41.        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
  42.        {
  43.  
  44.            // Acumula los caracteres recibidos a nuestro 'buffer' (string).
  45.            Recibidos = serialPort1.ReadLine();
  46.  
  47.            // Invocar o llamar al proceso de tramas.
  48.            Invoke(new EventHandler(Actualizar));
  49.        }
  50.  
  51.  
  52.        // Como variables de clase
  53.  
  54.        private string[] separador = new string[] { ",", "\r", "\n", "/n" };
  55.        private List<string> leodato1 = new List<string>();
  56.  
  57.  
  58.  
  59.        // Procesar los datos recibidos en el bufer y extraer tramas completas.
  60.        private void Actualizar(object sender, EventArgs e)
  61.        {
  62.            // En el evento
  63.            leodato1.Clear();
  64.            leodato1.AddRange(Recibidos.Split(separador,StringSplitOptions.RemoveEmptyEntries));
  65.  
  66.            label_Lectura_Potenciometro.Text = leodato1[0].ToString();
  67.            progressBar1.Value = Convert.ToInt32(leodato1[0].ToString());
  68.            progressBar1.PerformStep();
  69.        }
  70.    }
  71. }

Saludos.
218  Informática / Electrónica / [TUTORIAL] Lecturas de entradas digitales con Arduino y Visual Studio .net 2015 en: 21 Febrero 2016, 04:11 am


Presento tutorial sobre entrada de datos digitales por puerto serie con Arduino controlado por tu propia interfaz hecho bajo Visual Studio .net

Ver enlace.

Ver vídeos.
Vídeo 1.

Vídeo 2.

Ahora me toca seguir con entradas y salidas analógicas.

Para recordar, ya hubo tutorial sobre controlar un Led.

Más tutoriales que puedes ver aquí.

Saludos.
219  Programación / .NET (C#, VB.NET, ASP) / Imitar ordenador de los cines de antes en cuanto al sonido en: 12 Febrero 2016, 07:44 am
Hola:

Como en las películas de antes, no recuerdo en qué peli sale, un ordenador que al imprimir mensajes, se oye un ruido por cada letra muy rápido.

Hice lo de imprimir cada letra en 10 milisegundos, 0.010 segundos.

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Threading; // No olvidar.

namespace Texto_consola_CS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WindowWidth = 80;
            Console.WindowHeight = 43;

            Console.Title = "Título del programa en la ventana de la consola.";

            Console.BackgroundColor = ConsoleColor.Black; // Fondo pantalla blanco.
            Console.Clear(); // Limpiar pantalla.
            Console.ForegroundColor = ConsoleColor.Green; // Color texto azul.

            string Cadena = @"El hombre moderno es un viajero que ha olvidado el lugar de donde va, y que
ha de volver a donde viene para saber a donde va.

No busques al amigo para matar las horas, sino búscale con horas para vivir.

Los amigos se convierten con frecuencia en ladrones de nuestro tiempo.

Es difícil decir quién hace el mayor daño: los enemigos con sus peores intenciones o los amigos con las mejores.

Recorre a menudo la senda que lleva al huerto de tu amigo, no sea que la maleza te impida ver el camino.";

            Console.CursorVisible = true;

            foreach (char Letra in Cadena)
            {
                Console.Write(Letra);
                Thread.Sleep(2); //medio segundo
            }
            Console.Beep();
            Console.ReadKey(); // Pulse cualquier tecla para salir.
        }
    }
}

Al final de impresión de oye un beep. No encuentro un vídeo de ejemplo por ahora para que vean a lo que me refiero. Cuando el hombre habla con el ordenador en la película y le responde con mesajes que se oye el ruido por cada letra que escriba en pantalla.

Si alguien sabe como se hace, lo explican, no he encontrado nada igual por Internet, lo más parecido es esto.

https://msdn.microsoft.com/es-es/library/4fe3hdb1%28v=vs.110%29.aspx

Pero no es lo mismo.

Cualquier información es de ayuda.

Saludos.
220  Programación / .NET (C#, VB.NET, ASP) / Enviar tramas de bytes en C++/CLR en: 10 Febrero 2016, 17:27 pm
Hola:

En C# para enviar un byte al puerto serie uso esto.

Código:
private void button_t_Click(object sender, EventArgs e)
{
    byte[] mBuffer = new byte[1];
    mBuffer[0] = 0x74; //ASCII letter "t".
    serialPort1.Write(mBuffer, 0, mBuffer.Length);
}

En C++/CLR su código es este.


Para enviar de forma de cadena en C# se hace así:
Código:
private void button_b_Click(object sender, EventArgs e)
{
    byte[] mBuffer = Encoding.ASCII.GetBytes("Hello World");
    serialPort1.Write(mBuffer, 0, mBuffer.Length);
}

¿Cómo se hace en C++/CLR?

Saludos.
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 66
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines