Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Meta

#521
Hola:

Aquí de paso aprendes-


Saludos.
#522
Hola:

Ahora me funciona de maravilla como puedes ver el código de abajo.

Hay algo que me tiene loco, me salta la excepción llamada.

Código (csharp) [Seleccionar]
FormatException La cadena de entrada no tiene el formato correcto

Como verás en el código, le puse return; Así no me sale nada pero parpadea los números y la barra mucho. Solo falta eso, al menos no parpadea la pantalla completo como antes. Salta  a veces, no siempre.

Código (csharp) [Seleccionar]
using System;
using System.IO.Ports; // No olvidar.
using System.IO;

namespace Porcentaje_Barra_P_Serie_Consola_3_CS
{
    class Program
    {
        public static string Recibidos = "";
        public static double Resultado_Porcentaje = 0;
        public static double Resultado_Voltios = 0;
        public static double Mitad_barra = 0;


        static void Main(string[] args)
        {
            string COM = "";

            // Tamaño ventana consola.
            Console.WindowWidth = 55; // X.
            Console.WindowHeight = 15; // Y.
            Console.Title = "Serial Port C# - v.02"; // Título de la ventana.

            SerialPort Puerto_serie;

            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
            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)

        {

            try
            {
                SerialPort sp = (SerialPort)sender;
                Recibidos = sp.ReadExisting();
                //Console.Clear();

                Recibidos = Recibidos.Replace("\n\r", "");

                int Variar_este_valor = Convert.ToInt32(Recibidos);

                Resultado_Porcentaje = Variar_este_valor * (100.00 / 1023.00);
                Resultado_Voltios = Variar_este_valor * (5.00 / 1023.00);

               
                Console.SetCursorPosition(0, 1);
                Console.Write("Datos recibidos: ");
                Console.SetCursorPosition(17, 1);
                Console.Write("    ");
                Console.SetCursorPosition(17, 1);
                Console.Write(Recibidos);

               
                Console.SetCursorPosition(0, 3);
                Console.Write("0 %                     50 %                   100 %");
                Console.SetCursorPosition(0, 4);
                Console.Write("┌────────────────────────┬───────────────────────┐");
                Console.Write("                                                  ");
                Console.ForegroundColor = ConsoleColor.Yellow;

                // Se dibide por dos la barra del porcentaje para que quepa decuadamente en la pantalla.
                Mitad_barra = Resultado_Porcentaje / 2;

                if (Mitad_barra > 50)
                {
                    Mitad_barra = 50;
                }

                // Console.SetCursorPosition(0, 5);
                ClearCurrentConsoleLine();
                // Barra de progreso.
                for (int i = 1; i <= Mitad_barra; i++)
                {
                    Console.Write("█"); // Muestra ASCII 219 Dec y DB en Hex.
                }

                // Si sobre pasa 100, muestra # al final de la barra del porcentaje de color rojo.
                if (Resultado_Porcentaje >= 100)
                {
                    Console.SetCursorPosition(50, 5);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write("#");
                }

                Console.ForegroundColor = ConsoleColor.Gray; // Vuelve al color gris.

                // Línea 7.
                Console.SetCursorPosition(0, 7);
                Console.Write("Porcentaje: ");
                Console.SetCursorPosition(12, 7);
                Console.Write("            ");
                Console.SetCursorPosition(12, 7);
                Console.Write(Resultado_Porcentaje.ToString("N0") + " %.");

                // Línea 8.
                Console.SetCursorPosition(0, 8);
                Console.Write("Voltios: ");
                Console.SetCursorPosition(12, 8);
                Console.Write("            ");
                Console.SetCursorPosition(12, 8);
                Console.Write(Resultado_Voltios.ToString("N2") + " V.");

            }

            catch (FormatException)
            {
                // Console.WriteLine("La cadena de entrada no tiene el formato correcto.");
                return;
            }

        }

        public static void ClearCurrentConsoleLine()
        {
            int currentLineCursor = Console.CursorTop;
            Console.SetCursorPosition(0, Console.CursorTop);
            Console.Write(new string(' ', Console.WindowWidth));
            Console.SetCursorPosition(0, currentLineCursor);
        }
    }
}



Es un pequeño problema que quiero solventar.

Saludos.
#523
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 (csharp) [Seleccionar]
using System;
using System.IO.Ports; // No olvidar.
using System.IO;

namespace Porcentaje_Barra_P_Serie_Consola_3_CS
{
    class Program
    {
        public static string Recibidos = "";
        public static double Resultado_Porcentaje = 0;
        public static double Resultado_Voltios = 0;
        public static double Mitad_barra = 0;


        static void Main(string[] args)
        {
            string COM = "";

            // Tamaño ventana consola.
            Console.WindowWidth = 55; // X.
            Console.WindowHeight = 15; // Y.
            Console.Title = "Serial Port C# - v.02"; // Título de la ventana.

            SerialPort Puerto_serie;

            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
            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)

        {

            try
            {
                SerialPort sp = (SerialPort)sender;
                Recibidos = sp.ReadExisting();
                //Console.Clear();

                Recibidos = Recibidos.Replace("\n\r", "");

                int Variar_este_valor = Convert.ToInt32(Recibidos);

                Resultado_Porcentaje = Variar_este_valor * (100.00 / 1023.00);
                Resultado_Voltios = Variar_este_valor * (5.00 / 1023.00);

               
                Console.SetCursorPosition(0, 1);
                Console.Write("Datos recibidos: ");
                Console.SetCursorPosition(17, 1);
                Console.Write("    ");
                Console.SetCursorPosition(17, 1);
                Console.Write(Recibidos);

               
                Console.SetCursorPosition(0, 3);
                Console.Write("0 %                     50 %                   100 %");
                Console.SetCursorPosition(0, 4);
                Console.Write("┌────────────────────────┬───────────────────────┐");
                Console.Write("                                                  ");
                Console.ForegroundColor = ConsoleColor.Yellow;

                // Se dibide por dos la barra del porcentaje para que quepa decuadamente en la pantalla.
                Mitad_barra = Resultado_Porcentaje / 2;

                if (Mitad_barra > 50)
                {
                    Mitad_barra = 50;
                }

                Console.SetCursorPosition(0, 5);
                // Barra de progreso.
                for (int i = 1; i <= Mitad_barra; i++)
                {
                    Console.Write("█"); // Muestra ASCII 219 Dec y DB en Hex.
                }
                //Console.SetCursorPosition(0, 5);
                //Console.Write("                                                  ");
                Console.SetCursorPosition(0, 5);
                Console.Write("--------------------------------------------------");

                // Si sobre pasa 100, muestra # al final de la barra del porcentaje de color rojo.
                if (Resultado_Porcentaje >= 100)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write("#");
                }

                Console.ForegroundColor = ConsoleColor.Gray; // Vuelve al color gris.

                // Línea 7.
                Console.SetCursorPosition(0, 7);
                Console.Write("Porcentaje: ");
                Console.SetCursorPosition(12, 7);
                Console.Write("            ");
                Console.SetCursorPosition(12, 7);
                Console.Write(Resultado_Porcentaje.ToString("N0") + " %.");

                // Línea 8.
                Console.SetCursorPosition(0, 8);
                Console.Write("Voltios: ");
                Console.SetCursorPosition(12, 8);
                Console.Write("            ");
                Console.SetCursorPosition(12, 8);
                Console.Write(Resultado_Voltios.ToString("N2") + " V.");

            }

            catch (FormatException)
            {
                // Console.WriteLine("La cadena de entrada no tiene el formato correcto.");
                return;
            }
        }
    }
}



Saludos.
#524
Cita de: dante93150 en 29 Mayo 2016, 04:09 AM
Hola bueno vengo aqui se alguien me puede ayudar a como suspender una thread desde el vb,con el process hacker como lo hago ??
Yo e intentado esto pero no funciona
thread.sleep(1000)
pero como agrego la id o addres del proceso???

No se suspende, se queda esclavo. Mejor usar timer.

Timer1.Start(); para empezar y Timer1.Stop(); para parar cuando quieras.
#525
Cita de: andavid en 28 Abril 2016, 17:17 PM
Fijate voh, te acordas de la vez que expusieron la informacion de Sony?   :silbar:

El servidor de Sony si es más hackeado, hablo de los servidores de Call of Duty. ;)
#526
Hacking / ¿Qué servidor es más hackeado?
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.
#527
Gracias, tendré que leer mucho y hacer pruebas.

El código completo es este, para que te hagas una idea.
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Windows.Forms;

using System.IO.Ports; // No olvidar.
using System.IO;

namespace Arduino_In_Analogico_prueba_01
{
    public partial class Form1 : Form
    {
        // Utilizaremos un string como buffer de recepción.
        string Recibidos;

        public Form1()
        {
            InitializeComponent();

            if (!serialPort1.IsOpen)
            {
                try
                {
                    serialPort1.Open();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }

                serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
            }

           
        }


        // Al recibir datos.
        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {

            // Acumula los caracteres recibidos a nuestro 'buffer' (string).
            try
            {
                Recibidos = serialPort1.ReadLine();
                Actualizar(null,null);
            }

            catch (IOException)
            {
                // Información adicional: La operación de E/S se anuló por una salida de subproceso o por una solicitud de aplicación.
            }

            // Invocar o llamar al proceso de tramas.
            //Invoke(new EventHandler(Actualizar));
            Actualizar();
        }


        // Como variables de clase
        private string[] Separador = new string[] { ",", "\r", "\n", "/n" };
        private List<string> Leo_Dato = new List<string>();

        // Procesar los datos recibidos en el bufer y extraer tramas completas.
        private void Actualizar(object sender, EventArgs e)
        {
            double Voltaje = 0;
            double Porcentaje = 0;

            // En el evento
            Leo_Dato.Clear();
            Leo_Dato.AddRange(Recibidos.Split(Separador, StringSplitOptions.RemoveEmptyEntries));

            //            Se produjo una excepción de tipo 'System.ArgumentOutOfRangeException' en mscorlib.dll pero no se controló en el código del usuario


            try
            {
                label_Lectura_Potenciometro.Text = Leo_Dato[0].ToString();
            }

            catch (ArgumentOutOfRangeException)
            {
                //Información adicional: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.
            }


            progressBar1.Value = Convert.ToInt32(Leo_Dato[0].ToString());
            double Dato_Voltaje = Convert.ToDouble(Leo_Dato[0]);
            double Dato_Porcentaje = Convert.ToDouble(Leo_Dato[0]);

            Voltaje = Dato_Voltaje * (5.00 / 1023.00);
            Porcentaje = Dato_Porcentaje * (100.00 / 1023.00);

            label_Voltio.Text = Voltaje.ToString("N2") + " V."; // N2 tiene dos decimales.
            label_Portentaje.Text = Porcentaje.ToString("N2") + " %";
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen) // ¿El puerto está abierto?
            {
                serialPort1.Close(); // Puerto cerrado.
            }
        }
    }
}


Ve complicado a modo extremo bajo mi punto de vista resolver esta situación. Lo que se me ocurre en el Closing es dar una orden al puerto serie para que deje de enviar datos al puerto, que se detenga, luego cerrar la aplicación. Si no hay dato al recibir, la aplicación o programa cierra con normalidad, sin cuelgues.

Es mi única alternativa, ya que no saco forma de lograrlo de forma formal.

;)
#528
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 (csharp) [Seleccionar]
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.
#529
Hola:

Muchas gracias mi muy distinguido amigo.
Me funciona al 100 %.

Dejo el código por si acaso.
Código (csharp) [Seleccionar]
using System;
using System.IO.Ports; // No olvidar.
using System.Collections.Generic;

namespace Porcentaje_Barra_P_Serie_Consola_2_CS
{
    class Program
    {
        public static string Recibidos = "";
        public static int Variar_este_valor = 0; // De 0 a 1023.

        // public static int numVal = Int32.Parse(Recibidos);
        // public static int numVal = Convert.ToInt32(Recibidos);

        public static double Resultado_Porcentaje = 0;
        public static double Resultado_Voltios = 0;
        public static double Mitad_barra = 0;

        // Como variables de clase
        public static string[] Separador = new string[] { ",", "\r", "\n", "/n" };
        public static List<string> Leo_Dato = new List<string>();

        static void Main(string[] args)
        {
            Console.WindowWidth = 55;
            Console.WindowHeight = 15;
            Console.Title = "Serial Port C#";

            SerialPort Puerto_serie;

            // Crear un nuevo objeto SerialPort con la configuración predeterminada.
            Puerto_serie = new SerialPort();

            // Configuración.
            Puerto_serie.PortName = "COM4"; // 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;
               
            Puerto_serie.Open(); // Abre el puerto serie.

            Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

            Console.Read();
        }

        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)

        {

           
            SerialPort sp = (SerialPort)sender;
            Recibidos = sp.ReadLine();
            Console.Clear();

            Recibidos = Recibidos.Replace("\r", "");

            int Variar_este_valor = Convert.ToInt32(Recibidos);

            // En el evento.
            //Leo_Dato.Clear();
            //Leo_Dato.AddRange(Recibidos.Split(Separador, StringSplitOptions.RemoveEmptyEntries));

            Console.WriteLine();
            Resultado_Porcentaje = Variar_este_valor * (100.00 / 1023.00);
            Resultado_Voltios = Variar_este_valor * (5.00 / 1023.00);
            Console.Clear();
            Console.WriteLine("Valor introducido: {0}", Recibidos);
            Console.CursorVisible = false;

            // Mostrar barra de porcentaje en pantalla.
            Console.WriteLine();
            Console.WriteLine("0 %                     50 %                   100 %");
            Console.WriteLine("┌────────────────────────┬───────────────────────┐");
            Console.ForegroundColor = ConsoleColor.Yellow;

            // Se dibide por dos la barra del porcentaje para que quepa decuadamente en la pantalla.
            Mitad_barra = Resultado_Porcentaje / 2;

            if (Mitad_barra > 50)
            {
                Mitad_barra = 50;
            }

            for (int i = 1; i <= Mitad_barra; i++)
            {
                Console.Write("█"); // Muestra ASCII 219 Dec y DB en Hex.
            }

            // Si sobre pasa 100, muestra # al final de la barra del porcentaje de color rojo.
            if (Resultado_Porcentaje > 100)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("#");
            }

            Console.ForegroundColor = ConsoleColor.Gray; // Vuelve al color gris.
            Console.WriteLine("\n");
            Console.Write("Percentage: " + Resultado_Porcentaje.ToString("N2") + " %.");
            Console.WriteLine();
            Console.Write("Voltage:     " + Resultado_Voltios.ToString("N2") + " V.");
            Console.WriteLine("\n");


            // Console.Write(Recibidos.PadRight(4));

        }
    }
}


Saludos.
#530
Hola:

He cambiado un poco el código, me mantiene el CMD o consola de C#. Lo que no me funciona es pasar de string que son valores del 0 al 1023 a int. Cada string que me llega del 0 al 1023 cada dos por tres tiene su \n al final, por eso puse un delimitador, para quitar el \n cuando llegue y se quede en un valor, por ejemplo el 587\n al 587, luego tengo que pasarlo del string a int para hacer los cálculos pàsar a voltaje y otro en porcentaje.

Lo que me falta es eso, convertir en string a int y quitar el \n y \r. Supuestamente el \n lo quita, pero da error nada más ejecutar la palicación.
Aquí hay que usar un delimitador, creo que se llama así.
https://msdn.microsoft.com/es-es/library/ms228362.aspx#Anchor_4

Necesito crear un buendelimitador para quitarlos \n\r cada vez que me llega un dato así.

658\n\r

Debe quedar así:

658

Lo captura en modo string, luego tengo que pasar de string a int.

No me sale.

Saludos.

Saludos.