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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
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 ... 254
211  Programación / .NET (C#, VB.NET, ASP) / Re: Detecta disco en el elctor en: 20 Marzo 2021, 20:11 pm
Y que error te larga si lo tratas de hacer como en la última?

Buenas:

No seja hacer este if Else.

Código
  1.            // ¿En el lector hay disco?
  2.            // Sí. Hay disco.
  3.            if (GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded") == true)
  4.            {
  5.                Console.WriteLine("Sí");
  6.            }
  7.  
  8.            // No. No hay disco.
  9.            else
  10.            {
  11.                Console.WriteLine("No");
  12.            }

Citar
Error   CS0019   El operador '==' no se puede aplicar a operandos del tipo 'void' y 'bool'
212  Programación / .NET (C#, VB.NET, ASP) / Re: Detecta disco en el elctor en: 20 Marzo 2021, 12:48 pm
Buenas:

Por ejemplo, en esta parte.
Código
  1. GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded");

¿Hay disco en el lector?

Como me da resultado de true o falso, quiero lograr de alguna manera que me muestre o No.

Quiero hacer algo de esto como indica abajo pero no sale.
Código
  1.            // ¿En el lector hay disco?
  2.            // Sí. Hay disco.
  3.            if (GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded") == true)
  4.            {
  5.                Console.WriteLine("Sí");
  6.            }
  7.  
  8.            // No. No hay disco.
  9.            else
  10.            {
  11.                Console.WriteLine("No");
  12.            }
  13.  

Buscando ideas.

Gracias.
213  Programación / .NET (C#, VB.NET, ASP) / Detecta disco en el elctor en: 19 Marzo 2021, 14:51 pm
Hola:

Un programa que detecta el disco del lectro si está dentro o no. me lo muestra en forma de True o False.

No logro que me lo muestre que me diga esto:

Disco en el lector: Sí

Me lo muestra en True.


Ver imagen.

¿Qué se puede cambiar en este código?

Código
  1. using System;
  2. using System.Management;
  3.  
  4. namespace CPU_GPU_Hardware_informacion_consola_01
  5. {
  6.    class Program
  7.    {
  8.        static void Main(string[] args)
  9.        {
  10.            // Título de la ventana.
  11.            Console.Title = "Título de la ventana.";
  12.  
  13.            // Tamaño de la ventana, x, y.
  14.            Console.SetWindowSize(120, 63);
  15.  
  16.            // Color de fondo.
  17.            Console.BackgroundColor = ConsoleColor.Gray;
  18.  
  19.            // Color de las letras.
  20.            Console.ForegroundColor = ConsoleColor.Black;
  21.  
  22.            // Limpiar pantalla y dejarlo todo gris.
  23.            Console.Clear();
  24.  
  25.            // Visible el cursor.
  26.            Console.CursorVisible = true;
  27.  
  28.            // Nombre del procesador.
  29.            GetMyCPUInfo("Win32_Processor", "Name");
  30.  
  31.            // CD ROM.
  32.            GetMyCPUInfo("Win32_CDROMDrive", "Name");
  33.            Console.Write("Medio cargado: (Disco en el lector:) ");
  34.            GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded");
  35.  
  36.  
  37.            Console.ForegroundColor = ConsoleColor.Blue;
  38.            Console.WriteLine("FIN DEL PROGRAMA.");
  39.  
  40.            // Pulse cualquier tecla para salir.
  41.            Console.ReadKey();
  42.        }
  43.  
  44.        private static void GetMyCPUInfo(string hwclass, string syntax)
  45.        {
  46.            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
  47.            foreach (ManagementObject mj in mos.Get())
  48.            {
  49.                Console.WriteLine(Convert.ToString(mj[syntax]));
  50.            }
  51.        }
  52.    }
  53. }

Cualquier información aquí.
https://docs.microsoft.com/es-es/windows/win32/cimwin32prov/win32-cdromdrive

Saludos.
214  Programación / .NET (C#, VB.NET, ASP) / Re: No me funciona este código que debería en: 15 Marzo 2021, 00:00 am
Gracias por la información.

Lo de los caracteres >=, no he probado con la versión .Net FrameWork 4.7, estoy probando el .Net 5.0, que por supuesto, aún está muy verde y hay cuelgues y todo en todo el IDE a veces. Tienen que seguir sacando actualizaciones.

Con .Net 5.0 se puede usar en los case el <=.

Con .Net 4.7 no me deja.

Me salió un mensaje que con C# 7.3 no se puede, a patir del C# 9.0 o posterior. Ya lo tengo claro.

Saludos.

215  Programación / .NET (C#, VB.NET, ASP) / Re: No me funciona este código que debería en: 14 Marzo 2021, 09:37 am
Buenas compañeros.

Por lo que veo, ya me han respondido. Lo acabé haciendo funcionar. Pero mi código es muy largo, feo y engorroso. No savía que se pudiera simplificar tanto como hicieron arriba. Aún así se los enseño. Es chapuza pero funciona.

Se los dejo como curiosidad. Voy a intertar interpretar lo que hicieron arriba.

Código C#
:

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. namespace _74xx595_Vumetro_01_Net5._0
  12. {
  13.    public partial class Form1 : Form
  14.    {
  15.        int valorADC = 1000;
  16.  
  17.        public Form1()
  18.        {
  19.            InitializeComponent();
  20.        }
  21.  
  22.        private void trackBar1_Scroll(object sender, EventArgs e)
  23.        {
  24.            // Variar valor con el tarackBar.
  25.            valorADC = int.Parse("" + trackBar1.Value);
  26.            this.Text = valorADC.ToString();
  27.  
  28.            #region Switch.
  29.            switch (valorADC)
  30.            {
  31.                case >= 1000:
  32.                    panel1.BackColor = Color.Red;
  33.                    panel2.BackColor = Color.Red;
  34.                    panel3.BackColor = Color.Red;
  35.                    panel4.BackColor = Color.Red;
  36.                    panel5.BackColor = Color.Red;
  37.                    panel6.BackColor = Color.Red;
  38.                    panel7.BackColor = Color.Red;
  39.                    panel8.BackColor = Color.Red;
  40.                    break;
  41.  
  42.                case > 900:
  43.                    panel1.BackColor = Color.Red;
  44.                    panel2.BackColor = Color.Red;
  45.                    panel3.BackColor = Color.Red;
  46.                    panel4.BackColor = Color.Red;
  47.                    panel5.BackColor = Color.Red;
  48.                    panel6.BackColor = Color.Red;
  49.                    panel7.BackColor = Color.Red;
  50.                    panel8.BackColor = Color.DarkRed;
  51.                    break;
  52.  
  53.                case > 800:
  54.                    panel1.BackColor = Color.Red;
  55.                    panel2.BackColor = Color.Red;
  56.                    panel3.BackColor = Color.Red;
  57.                    panel4.BackColor = Color.Red;
  58.                    panel5.BackColor = Color.Red;
  59.                    panel6.BackColor = Color.Red;
  60.                    panel7.BackColor = Color.DarkRed;
  61.                    panel8.BackColor = Color.DarkRed;
  62.                    break;
  63.  
  64.                case > 700:
  65.                    panel1.BackColor = Color.Red;
  66.                    panel2.BackColor = Color.Red;
  67.                    panel3.BackColor = Color.Red;
  68.                    panel4.BackColor = Color.Red;
  69.                    panel5.BackColor = Color.Red;
  70.                    panel6.BackColor = Color.DarkRed;
  71.                    panel7.BackColor = Color.DarkRed;
  72.                    panel8.BackColor = Color.DarkRed;
  73.                    break;
  74.  
  75.                case > 600:
  76.                    panel1.BackColor = Color.Red;
  77.                    panel2.BackColor = Color.Red;
  78.                    panel3.BackColor = Color.Red;
  79.                    panel4.BackColor = Color.Red;
  80.                    panel5.BackColor = Color.DarkRed;
  81.                    panel6.BackColor = Color.DarkRed;
  82.                    panel7.BackColor = Color.DarkRed;
  83.                    panel8.BackColor = Color.DarkRed;
  84.                    break;
  85.  
  86.                case > 500:
  87.                    panel1.BackColor = Color.Red;
  88.                    panel2.BackColor = Color.Red;
  89.                    panel3.BackColor = Color.Red;
  90.                    panel4.BackColor = Color.DarkRed;
  91.                    panel5.BackColor = Color.DarkRed;
  92.                    panel6.BackColor = Color.DarkRed;
  93.                    panel7.BackColor = Color.DarkRed;
  94.                    panel8.BackColor = Color.DarkRed;
  95.                    break;
  96.  
  97.                case > 400:
  98.                    panel1.BackColor = Color.Red;
  99.                    panel2.BackColor = Color.Red;
  100.                    panel3.BackColor = Color.DarkRed;
  101.                    panel4.BackColor = Color.DarkRed;
  102.                    panel5.BackColor = Color.DarkRed;
  103.                    panel6.BackColor = Color.DarkRed;
  104.                    panel7.BackColor = Color.DarkRed;
  105.                    panel8.BackColor = Color.DarkRed;
  106.                    break;
  107.  
  108.                case > 300:
  109.                    panel1.BackColor = Color.Red;
  110.                    panel2.BackColor = Color.DarkRed;
  111.                    panel3.BackColor = Color.DarkRed;
  112.                    panel4.BackColor = Color.DarkRed;
  113.                    panel5.BackColor = Color.DarkRed;
  114.                    panel6.BackColor = Color.DarkRed;
  115.                    panel7.BackColor = Color.DarkRed;
  116.                    panel8.BackColor = Color.DarkRed;
  117.                    break;
  118.  
  119.                case > 200:
  120.                case > 0:
  121.                    panel1.BackColor = Color.DarkRed;
  122.                    panel2.BackColor = Color.DarkRed;
  123.                    panel3.BackColor = Color.DarkRed;
  124.                    panel4.BackColor = Color.DarkRed;
  125.                    panel5.BackColor = Color.DarkRed;
  126.                    panel6.BackColor = Color.DarkRed;
  127.                    panel7.BackColor = Color.DarkRed;
  128.                    panel8.BackColor = Color.DarkRed;
  129.                    break;
  130.  
  131.                default:
  132.                    this.Text = "Fuera de rango.";
  133.                    break;
  134.            }
  135.            #endregion

Con el código de ustedes me queda así.

Código
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4.  
  5. namespace _74xx595_Vumetro_01_Net5._0
  6. {
  7.    public partial class Form1 : Form
  8.    {
  9.        int valorADC = 0;
  10.        readonly Panel[] roPANELES;
  11.        readonly Color[] roCOLORES;
  12.  
  13.        public Form1()
  14.        {
  15.            InitializeComponent();
  16.            roPANELES = new Panel[] { panel1, panel2, panel3, panel4, panel5, panel6, panel7, panel8 };
  17.            roCOLORES = new Color[] { Color.DarkRed, Color.Red };
  18.            pinta("00000000");
  19.        }
  20.  
  21.        private void trackBar1_Scroll(object sender, EventArgs e)
  22.        {
  23.            valorADC = this.trackBar1.Value;
  24.            this.Text = valorADC.ToString();
  25.  
  26.            switch (valorADC)
  27.            {
  28.                case >= 1000:
  29.                    pinta("11111111");
  30.                    break;
  31.                case > 900:
  32.                    pinta("11111110");
  33.                    break;
  34.                case > 800:
  35.                    pinta("11111100");
  36.                    break;
  37.                case > 700:
  38.                    pinta("11111000");
  39.                    break;
  40.                case > 600:
  41.                    pinta("11110000");
  42.                    break;
  43.                case > 500:
  44.                    pinta("11100000");
  45.                    break;
  46.                case > 400:
  47.                    pinta("11000000");
  48.                    break;
  49.                case > 300:
  50.                    pinta("10000000");
  51.                    break;
  52.                case > 200:
  53.                    pinta("00000000");
  54.                    break;
  55.            }
  56.  
  57.  
  58.        }
  59.  
  60.        void pinta(string guia)
  61.        {
  62.            for (int i = 0; i < roPANELES.Length; i++)
  63.            {
  64.                roPANELES[i].BackColor = roCOLORES[int.Parse(guia.Substring(i, 1))];
  65.            }            
  66.        }
  67.    }
  68. }

En este código tengo una duda.
Código
  1. roPANELES[i].BackColor = roCOLORES[int.Parse(guia.Substring(i, 1))];

El 1 al final. ¿Qué significa exactamente?

Muchísimas gracias a los dos por los aportes he ideas. ;-) ;-) ;-) ;-) ;-) ;-) ;-)
216  Programación / .NET (C#, VB.NET, ASP) / No me funciona este código que debería en: 13 Marzo 2021, 17:24 pm
Buenas:

Hago algo mal. En esta captura se muestra unao Panel, que son 8 en total y debe cambiar de color de rojo oscuro o normal dependiendo de como muesves el trackBar.


Verr zoom.

Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _74xx595_Vumetro_01_Net5._0
{
    public partial class Form1 : Form
    {
        int valorADC = 1000;

        public Form1()
        {
            InitializeComponent();
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            // Variar valor con el tarackBar.
            valorADC = int.Parse("" + trackBar1.Value);
            this.Text = valorADC.ToString();

            switch (valorADC)
            {
                case 1000:
                    panel1.BackColor = Color.Red;
                    panel2.BackColor = Color.Red;
                    panel3.BackColor = Color.Red;
                    panel4.BackColor = Color.Red;
                    panel5.BackColor = Color.Red;
                    panel6.BackColor = Color.Red;
                    panel7.BackColor = Color.Red;
                    panel8.BackColor = Color.Red;
                    break;

                case 900:
                    panel1.BackColor = Color.Red;
                    panel2.BackColor = Color.Red;
                    panel3.BackColor = Color.Red;
                    panel4.BackColor = Color.Red;
                    panel5.BackColor = Color.Red;
                    panel6.BackColor = Color.Red;
                    panel7.BackColor = Color.Red;
                    panel8.BackColor = Color.DarkRed;
                    break;

                case 800:
                    panel1.BackColor = Color.Red;
                    panel2.BackColor = Color.Red;
                    panel3.BackColor = Color.Red;
                    panel4.BackColor = Color.Red;
                    panel5.BackColor = Color.Red;
                    panel6.BackColor = Color.Red;
                    panel7.BackColor = Color.DarkRed;
                    panel8.BackColor = Color.DarkRed;
                    break;

                case 700:
                    panel1.BackColor = Color.Red;
                    panel2.BackColor = Color.Red;
                    panel3.BackColor = Color.Red;
                    panel4.BackColor = Color.Red;
                    panel5.BackColor = Color.Red;
                    panel6.BackColor = Color.DarkRed;
                    panel7.BackColor = Color.DarkRed;
                    panel8.BackColor = Color.DarkRed;
                    break;

                case 600:
                    panel1.BackColor = Color.Red;
                    panel2.BackColor = Color.Red;
                    panel3.BackColor = Color.Red;
                    panel4.BackColor = Color.Red;
                    panel5.BackColor = Color.DarkRed;
                    panel6.BackColor = Color.DarkRed;
                    panel7.BackColor = Color.DarkRed;
                    panel8.BackColor = Color.DarkRed;
                    break;

                case 500:
                    panel1.BackColor = Color.Red;
                    panel2.BackColor = Color.Red;
                    panel3.BackColor = Color.Red;
                    panel4.BackColor = Color.DarkRed;
                    panel5.BackColor = Color.DarkRed;
                    panel6.BackColor = Color.DarkRed;
                    panel7.BackColor = Color.DarkRed;
                    panel8.BackColor = Color.DarkRed;
                    break;

                case 400:
                    panel1.BackColor = Color.Red;
                    panel2.BackColor = Color.Red;
                    panel3.BackColor = Color.DarkRed;
                    panel4.BackColor = Color.DarkRed;
                    panel5.BackColor = Color.DarkRed;
                    panel6.BackColor = Color.DarkRed;
                    panel7.BackColor = Color.DarkRed;
                    panel8.BackColor = Color.DarkRed;
                    break;

                case 300:
                    panel1.BackColor = Color.Red;
                    panel2.BackColor = Color.DarkRed;
                    panel3.BackColor = Color.DarkRed;
                    panel4.BackColor = Color.DarkRed;
                    panel5.BackColor = Color.DarkRed;
                    panel6.BackColor = Color.DarkRed;
                    panel7.BackColor = Color.DarkRed;
                    panel8.BackColor = Color.DarkRed;
                    break;

                case 200:
                    panel1.BackColor = Color.DarkRed;
                    panel2.BackColor = Color.DarkRed;
                    panel3.BackColor = Color.DarkRed;
                    panel4.BackColor = Color.DarkRed;
                    panel5.BackColor = Color.DarkRed;
                    panel6.BackColor = Color.DarkRed;
                    panel7.BackColor = Color.DarkRed;
                    panel8.BackColor = Color.DarkRed;
                    break;

                default:
                    this.Text = "Fuera de rango.";
                    break;
            }
        }
    }
}

¿Alguna idea?

Saludos.
217  Programación / .NET (C#, VB.NET, ASP) / Leer información de una SAI / UPS en: 11 Marzo 2021, 11:01 am
Buenas:

Dentro de poco me llega un SAI o UPS que tiene dos puertos, USB y el RS232. El que voy a sar es el RS232 o conocido como puerto serie de toda la vida y el PC nuevo también usa el RS232. Espero no usar el pin 4 DTR para controlar el puerto serie, ajajajaja.


Ver zoom.

Aquí abajo, muestra los mensajes de aviso y error. En el display de la UPS solo muestra códigos en el cual después para entender lo que me están hablando debo mirar esta tabla de abajo.


Ver zoom.

Como puedes ver arriba, por ejemplo: Código A64. Como no se que es el código A64 cuando la UPS directamente l muestra con su display, debo mirar esta table y dice:
A64 => Aviso sobrecarga.

Entonces con Arduino y el puerto RS232 debo extraer la información y que me lo muestre en textos en un LCD de Arduino así:

A64: Aviso de sobrecarga.

Sea con un display de 20x4 o otro que me quepa muchos comentarios o descripcioines de los avisos o fallos del UPS.

Según el fabricante, me dice que mire esta parte, que es la que estoy buscando, los Flags.


Ver zoom.

Antes de tocar Arduino, prefiero hacer una Interfaz con Visual Studio .Net. Directmente con el puerto RS232.

Solo lee los avisos o erroree mostrados desde la UPS hacia el PC. Solo toca interpretar lo que me cuenta este documento en PDF que lo dejo para que lo descarguen.

Si tiene alguna idea como extraer esa información me lo hacen saber y empiezo a programar. La parte que estoy haciendo ahora solo es preparar la interfaz, ya iré mostrando avances poco a poco, por supuesto, luego iré por Arduino al derecho y al revés, ejjejej.

Descarga PDF.

Sabiendo todo esta información.

Mi intención es crear una interfaz con Windows Form de C#. Usar el componente serialPort1 que lo arrastro al formulario y pongo un label.

La pregunta es:

¿Cómo muestro los datos de la UPS indicado en la tercera captura arriba o en el manual en C#?

Esa es la cuestión.

Que tengan buen día. A scar esto adelante. ;)

PD: Me cuesta creer que todavían saquen PC y UPS con comunicación con RS232 directamente. Es de agradecer.
218  Programación / .NET (C#, VB.NET, ASP) / Re: Quiero controlar el DexDrive en: 8 Marzo 2021, 10:05 am
Buensa:

¿Alguna idea de leer, borrar, escribir......?

Saludos.
219  Informática / Electrónica / Re: ¿Cuál es mejor para microcontroladores atmega, Python o C++? en: 6 Marzo 2021, 19:43 pm
Buenas:

Una cosa es Arduino y la otra RaspBerry Pico.

Mira aquí la comparativa.



Lo deja claro.
220  Programación / .NET (C#, VB.NET, ASP) / Hacer funcionar simulador lavadora en: 6 Marzo 2021, 17:39 pm


Ver imagen.

Este proyecto ya es un reto para muchos, jajajja, aún así se puede intentar.

Aquí tengo un simulador de lavadora, puedes controlar el giro del tambor o motor, velocidad, nivel de agua. Es totalmente funcional.

Hay en este caso aunque si funciona, quiero ignorarlo para el próximo programa, Giro del motor.

La mejora o el próximo programa funciona desde el puerto serie sin usar ningún trackBar.

trackBar_Velocidad_motor funciona los valores como máximo a 100 y mínimo a 0.

trackBar_Nivel_de_agua funciona los valores como máximo a 90 y mínimo a -90.

Los sustitutos del trackBar son datos que llegan desde el puerto serie, algo así como esto, por ejemplo:

Código
  1. 50, 80

El ejemplo de arriba indica el número 50, que varía de 0 a 100, la velocidad. El 80 es el caso del 90 a -90 del nivel de agua.

Esos datos si quiero que esté. Puede recibir datos a 9600 baudios y por cada 1000 milisegundos, o lo que es lo mismo, a cada segundo.

El código completo de este programa con trackBar es este.
Código
  1. /*
  2.  Te explico la formula
  3.  
  4. float fDeltaAngulo = (((nRPM * 360) / (60 * 1000)) * timer.Interval) * ((float)trackBar_Velocidad_motor.Value / (float)trackBar_Velocidad_motor.Maximun)
  5.  
  6.    1. (nRPM * 360) -> Grados por minuto.
  7.    2. (60 * 1000) -> Milisegundos por minuto.
  8.    3. ((nRPM * 360) / (60 * 1000)) -> Grados por milisegundo.
  9.    4. (((nRPM * 360) / (60 * 1000)) * timer.Interval) -> Grados por tick del timer.
  10.    5.  ((float)trackBar_Velocidad_motor.Value / (float)trackBar_Velocidad_motor.Maximun) -> Porcentaje de la velocidad.
  11.    6. (((nRPM * 360) / (60 * 1000)) * timer.Interval) * ((float)trackBar_Velocidad_motor.Value / (float)trackBar_Velocidad_motor.Maximun) -> Calcula los grados por tick del timer aplicando un porcentaje.
  12.  
  13. Según esta formula, si el trackbar esta en 0, grados por tick * 0 = 0 (esta parado), si el trackbar esta al maximo, grados por tick * 1 = grados por tick (el angulo aumenta al máximo).
  14.  */
  15.  
  16. using System;
  17. using System.Collections.Generic;
  18. using System.ComponentModel;
  19. using System.Data;
  20. using System.Drawing;
  21. using System.Drawing.Drawing2D;
  22. using System.Linq;
  23. using System.Text;
  24. using System.Threading.Tasks;
  25. using System.Windows.Forms;
  26.  
  27. namespace Lavadora_05
  28. {
  29.    public partial class Form1 : Form
  30.    {
  31.        // Variables.
  32.        private Pen lápiz2;
  33.        private Pen lápiz3;
  34.        private Pen lápiz4;
  35.        private float angulo;
  36.        private SolidBrush agua;
  37.  
  38.        private GraphicsPath m_lavadora;
  39.        private GraphicsPath m_agua;
  40.  
  41.        public Form1()
  42.        {
  43.            InitializeComponent();
  44.        }
  45.  
  46.        private void Form1_Load(object sender, EventArgs e)
  47.        {
  48.            Text = "Simulador lavadora";
  49.            pictureBox1.Size = new Size(300, 300);
  50.            pictureBox1.BackColor = Color.LightGray;
  51.  
  52.            lápiz2 = new Pen(Color.DarkGray, 10);
  53.            lápiz2.StartCap = LineCap.ArrowAnchor;
  54.            lápiz2.EndCap = LineCap.RoundAnchor;
  55.  
  56.            lápiz3 = new Pen(Color.Black, 5);
  57.            lápiz4 = new Pen(Color.Gray, 10);
  58.  
  59.            angulo = 0;
  60.  
  61.            agua = new SolidBrush(Color.FromArgb(200, 0, 155, 219)); // Transparencia del agua 200.
  62.            trackBar_Nivel_de_agua.Value = -90; // Para que empiece sin agua.
  63.        }
  64.  
  65.        // Dibuja y colorea.
  66.        private void pictureBox1_Paint(object sender, PaintEventArgs e)
  67.        {
  68.            e.Graphics.DrawRectangle(lápiz3, 10, 10, pictureBox1.ClientSize.Width - 20, pictureBox1.ClientSize.Height - 20);
  69.            e.Graphics.DrawEllipse(lápiz4, 10, 10, pictureBox1.ClientSize.Height - 20, pictureBox1.ClientSize.Height - 20);
  70.  
  71.            e.Graphics.TranslateTransform(pictureBox1.ClientSize.Width / 2, pictureBox1.ClientSize.Height / 2);
  72.            e.Graphics.RotateTransform(angulo);
  73.            e.Graphics.TranslateTransform(-pictureBox1.ClientSize.Width / 2, -pictureBox1.ClientSize.Height / 2);
  74.            //e.Graphics.DrawLine(lápiz2, 20, pictureBox1.ClientSize.Height / 2, pictureBox1.ClientSize.Width / 2, pictureBox1.ClientSize.Height / 2);
  75.            e.Graphics.DrawPath(lápiz2, m_lavadora);
  76.            e.Graphics.ResetTransform();
  77.            e.Graphics.FillPath(agua, m_agua);
  78.        }
  79.  
  80.        // Refresca el valor actual.
  81.        private void trackBar_Giro_del_motor_ValueChanged(object sender, EventArgs e)
  82.        {
  83.            angulo = (float)trackBar_Giro_del_motor.Value;
  84.            pictureBox1.Refresh();
  85.        }
  86.  
  87.        // Cambia el tamaño del control.
  88.        private void pictureBox1_Resize(object sender, EventArgs e)
  89.        {
  90.            int ancho = pictureBox1.ClientSize.Width;
  91.            int alto = pictureBox1.ClientSize.Height;
  92.  
  93.            m_lavadora = new GraphicsPath();
  94.  
  95.            m_lavadora.AddEllipse(20, 20, ancho - 40, alto - 40);
  96.            m_lavadora.CloseFigure();
  97.            m_lavadora.AddLine(20, (alto / 2), ancho - 20, (alto / 2));
  98.            m_lavadora.CloseFigure();
  99.            m_lavadora.AddLine(ancho / 2, 20, ancho / 2, alto - 20);
  100.            m_lavadora.CloseFigure();
  101.  
  102.            m_agua = new GraphicsPath();
  103.  
  104.            m_agua.AddArc(20, 20, ancho - 40, alto - 40, trackBar_Nivel_de_agua.Value, 180 - 2 * trackBar_Nivel_de_agua.Value);
  105.            m_agua.CloseFigure();
  106.        }
  107.  
  108.        private void trackBar_Nivel_de_agua_ValueChanged(object sender, EventArgs e)
  109.        {
  110.            m_agua = new GraphicsPath();
  111.  
  112.            m_agua.AddArc(20, 20, pictureBox1.ClientSize.Width - 40, pictureBox1.ClientSize.Height - 40, -trackBar_Nivel_de_agua.Value, 180 - 2 * -trackBar_Nivel_de_agua.Value);
  113.            m_agua.CloseFigure();
  114.            pictureBox1.Refresh();
  115.        }
  116.  
  117.        private void timer1_Tick(object sender, EventArgs e)
  118.        {
  119.            //60 vueltas por minuto
  120.            float nRPM = 60;
  121.  
  122.            float fDeltaAngulo = (((nRPM * 360) / (60 * 1000)) * (float)timer1.Interval) * ((float)trackBar_Velocidad_motor.Value / (float)trackBar_Velocidad_motor.Maximum);
  123.            float track = (float)trackBar_Velocidad_motor.Value;
  124.            angulo += fDeltaAngulo;
  125.            label_angulo.Text = "angulo " + angulo.ToString();
  126.            label_fDeltaAngulo.Text = "fDeltaAngulo " + fDeltaAngulo.ToString();
  127.            pictureBox1.Refresh();
  128.  
  129.        }
  130.  
  131.        private void button_Empezar_Click(object sender, EventArgs e)
  132.        {
  133.            timer1.Start();
  134.            //timer1.Enabled = true; // También válido.
  135.        }
  136.  
  137.        private void button_parar_Click(object sender, EventArgs e)
  138.        {
  139.            timer1.Stop();
  140.            //timer1.Enabled = false; // También válido.
  141.        }
  142.    }
  143. }

El código que he intentado es este pero no funciona ni una parte y está incompleto.

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.Drawing.Drawing2D;
  7. using System.IO.Ports;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12.  
  13. namespace Lavadora_07
  14. {
  15.    public partial class Form1 : Form
  16.    {
  17.        // Utilizaremos un string-builder como búfer auxiliar.
  18.        // La trama llegará fragmentada.
  19.        StringBuilder sb;
  20.  
  21.        // Nuestro delegado recibe como argumento el string con la trama.
  22.        readonly Action<string> NuevaTrama;
  23.  
  24.        // Variables.
  25.        private Pen lápiz2;
  26.        private Pen lápiz3;
  27.        private Pen lápiz4;
  28.        private float angulo;
  29.        private SolidBrush agua;
  30.  
  31.        private GraphicsPath m_lavadora;
  32.        private GraphicsPath m_agua;
  33.  
  34.        // Variables sustituto del trackBar.
  35.        private int trackBar_Nivel_de_agua = 0;
  36.        private int trackBar_Velocidad_motor = 0;
  37.  
  38.        public Form1()
  39.        {
  40.            InitializeComponent();
  41.  
  42.            sb = new StringBuilder();
  43.            NuevaTrama = Actualizar;
  44.        }
  45.        private void Form1_Load(object sender, EventArgs e)
  46.        {
  47.            // Añado los puertos disponible en el PC con SerialPort.GetPortNames() al comboBox_Puerto.
  48.            try
  49.            {
  50.                comboBox_Puerto.DataSource = SerialPort.GetPortNames();
  51.            }
  52.  
  53.            catch
  54.            {
  55.                MessageBox.Show("No encuentra ningún puerto físico ni virtual.", "Aviso:",
  56.                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
  57.            }
  58.  
  59.            // Añado los puertos disponible en el PC con SerialPort.GetPortNames() al comboBox_Puerto.
  60.            comboBox_Puerto.DataSource = SerialPort.GetPortNames();
  61.  
  62.            // // Añade puertos disponibles físicos  y virtuales.
  63.            serialPort1.PortName = comboBox_Puerto.Text.ToString();
  64.  
  65.            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
  66.  
  67.            // Dibujo tambor lavadora.
  68.            pictureBox1.Size = new Size(300, 300);
  69.            pictureBox1.BackColor = Color.LightGray;
  70.  
  71.            lápiz2 = new Pen(Color.DarkGray, 10);
  72.            lápiz2.StartCap = LineCap.ArrowAnchor;
  73.            lápiz2.EndCap = LineCap.RoundAnchor;
  74.  
  75.            lápiz3 = new Pen(Color.Black, 5);
  76.            lápiz4 = new Pen(Color.Gray, 10);
  77.  
  78.            angulo = 0;
  79.  
  80.            agua = new SolidBrush(Color.FromArgb(200, 0, 155, 219)); // Transparencia del agua 200.
  81.            trackBar_Nivel_de_agua = -90; // Para que empiece sin agua.
  82.        }
  83.  
  84.        // Detecta USB o puerto serie virtual cuando lo conecta y desconecta del cable.
  85.        protected override void WndProc(ref Message USB)
  86.        {
  87.            if (USB.Msg == 0x219)
  88.            {
  89.                comboBox_Puerto.DataSource = SerialPort.GetPortNames();
  90.            }
  91.  
  92.            base.WndProc(ref USB); // Detecta si hay cambios en el usb y si los hay los refleja.
  93.        }
  94.  
  95.        // Dibuja y colorea.
  96.        private void pictureBox1_Paint(object sender, PaintEventArgs e)
  97.        {
  98.            e.Graphics.DrawRectangle(lápiz3, 10, 10, pictureBox1.ClientSize.Width - 20, pictureBox1.ClientSize.Height - 20);
  99.            e.Graphics.DrawEllipse(lápiz4, 10, 10, pictureBox1.ClientSize.Height - 20, pictureBox1.ClientSize.Height - 20);
  100.  
  101.            e.Graphics.TranslateTransform(pictureBox1.ClientSize.Width / 2, pictureBox1.ClientSize.Height / 2);
  102.            e.Graphics.RotateTransform(angulo);
  103.            e.Graphics.TranslateTransform(-pictureBox1.ClientSize.Width / 2, -pictureBox1.ClientSize.Height / 2);
  104.            //e.Graphics.DrawLine(lápiz2, 20, pictureBox1.ClientSize.Height / 2, pictureBox1.ClientSize.Width / 2, pictureBox1.ClientSize.Height / 2);
  105.            e.Graphics.DrawPath(lápiz2, m_lavadora);
  106.            e.Graphics.ResetTransform();
  107.            e.Graphics.FillPath(agua, m_agua);
  108.        }
  109.  
  110.        // Cambia el tamaño del control.
  111.        private void pictureBox1_Resize(object sender, EventArgs e)
  112.        {
  113.            int ancho = pictureBox1.ClientSize.Width;
  114.            int alto = pictureBox1.ClientSize.Height;
  115.  
  116.            m_lavadora = new GraphicsPath();
  117.  
  118.            m_lavadora.AddEllipse(20, 20, ancho - 40, alto - 40);
  119.            m_lavadora.CloseFigure();
  120.            m_lavadora.AddLine(20, (alto / 2), ancho - 20, (alto / 2));
  121.            m_lavadora.CloseFigure();
  122.            m_lavadora.AddLine(ancho / 2, 20, ancho / 2, alto - 20);
  123.            m_lavadora.CloseFigure();
  124.  
  125.            m_agua = new GraphicsPath();
  126.  
  127.            m_agua.AddArc(20, 20, ancho - 40, alto - 40, trackBar_Nivel_de_agua, 180 - 2 * trackBar_Nivel_de_agua);
  128.            m_agua.CloseFigure();
  129.        }
  130.  
  131.        // Conectar comunicación con el puerto serie.
  132.        private void button_Conectar_Click(object sender, EventArgs e)
  133.        {
  134.            try
  135.            {
  136.                serialPort1.PortName = comboBox_Puerto.Text.ToString(); // Puerto seleccionado previamente.
  137.                serialPort1.BaudRate = Convert.ToInt32(comboBox_Baudios.Text); // Baudios.
  138.                serialPort1.Open(); // Abrir puerto.
  139.                comboBox_Puerto.Enabled = false;
  140.                comboBox_Baudios.Enabled = false;
  141.                button_Conectar.Enabled = false;
  142.                button_Desconectar.Enabled = true;
  143.            }
  144.            catch
  145.            {
  146.                MessageBox.Show("El puerto no existe.", "Aviso:",
  147.                MessageBoxButtons.OK, MessageBoxIcon.Warning);
  148.            }
  149.        }
  150.  
  151.        // Desconectar comunicación con el puerto serie.
  152.        private void button_Desconectar_Click(object sender, EventArgs e)
  153.        {
  154.            try
  155.            {
  156.                serialPort1.Close(); // Cerrar puerto.
  157.                comboBox_Puerto.Enabled = true;
  158.                comboBox_Baudios.Enabled = true;
  159.                button_Conectar.Enabled = true;
  160.                button_Desconectar.Enabled = false;
  161.            }
  162.  
  163.            catch (Exception error)
  164.            {
  165.                MessageBox.Show(error.Message, "Aviso:",
  166.                MessageBoxButtons.OK, MessageBoxIcon.Warning);
  167.            }
  168.        }
  169.  
  170.        // Al cerrar el formulario, antes cierra el puerto si está abierto.
  171.        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  172.        {
  173.            try
  174.            {
  175.                serialPort1.Close(); // Cerrar puerto.
  176.            }
  177.  
  178.            catch (Exception error)
  179.            {
  180.                MessageBox.Show(error.Message, "Aviso:",
  181.                MessageBoxButtons.OK, MessageBoxIcon.Warning);
  182.            }
  183.        }
  184.  
  185.        // Recibe datos por el puerto serie.
  186.        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
  187.        {
  188.            // Caracter/es disponible/s desde la última vez.
  189.            string recibidos = serialPort1.ReadExisting();
  190.  
  191.            // analizamos cada caracter recibido
  192.            foreach (char item in recibidos)
  193.            {
  194.                switch (item)
  195.                {
  196.                    // Ignoramos el \u000D
  197.                    case '\r':
  198.                        break;
  199.  
  200.                    // Aquí detectamos el final de la trama \u000A
  201.                    case '\n':
  202.                        // y la enviamos al control.
  203.                        Invoke(NuevaTrama, sb.ToString());
  204.  
  205.                        // Luego limpiamos el búfer.
  206.                        sb.Clear();
  207.                        break;
  208.  
  209.                    // Cualquier otro caracter recibido, lo agregamos al búfer.
  210.                    default:
  211.                        sb.Append(item);
  212.                        break;
  213.                }
  214.            }
  215.        }
  216.  
  217.        private void Actualizar(string trama)
  218.        {
  219.            // Delimitador. Ignoramos las comas.
  220.            string[] datosArray = trama.Split(',');
  221.  
  222.            // Compara si dos datos del array es igual a la cantidad total que en este
  223.            // caso son 2. Si es igual a 2, entonces ejecuta todo el código dentro del if.
  224.            if (datosArray.Length == 2)
  225.            {
  226.                // Mostrar datos.
  227.                label_Entrada_analogica_A1.Text = "Entrada Analógica A1: " + datosArray[0];
  228.                label_Entrada_analogica_A2.Text = "Entrada Analógica A2: " + datosArray[1];
  229.            }
  230.        }
  231.  
  232.        private void trackBar_Nivel_de_agua_ValueChanged(object sender, EventArgs e)
  233.        {
  234.            m_agua = new GraphicsPath();
  235.  
  236.            m_agua.AddArc(20, 20, pictureBox1.ClientSize.Width - 40, pictureBox1.ClientSize.Height - 40, -trackBar_Nivel_de_agua, 180 - 2 * -trackBar_Nivel_de_agua);
  237.            m_agua.CloseFigure();
  238.            pictureBox1.Refresh();
  239.        }
  240.    }
  241. }

¿Alguna idea de este proyectado tipo reto?

Un cordial saludos camaradas.
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 ... 254
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines