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

#61
Buenas:

Estoy todo el rato intentando que me lea todos los lectores que tenga en un Pc o ordenador sea IDE, SATA o un lector externo por USB de discos, DVD en este caso.

Mirando aquí he encontrado esto.
https://docs.microsoft.com/es-es/windows/win32/cimwin32prov/win32-cdromdrive

Quiero que me detecte las unidades y lo muestre en un comboBox.

Creo una función.
Código (csharp) [Seleccionar]
        private static void GetMyCPUInfo(string hwclass, string syntax)
        {
            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
            foreach (ManagementObject mj in mos.Get())
            {
                Console.WriteLine(Convert.ToString(mj[syntax]));
            }
        }


Con esto llamo una unidad.
Código (csharp) [Seleccionar]
GetMyCPUInfo("Win32_CDROMDrive", "Id");

Añado los datos en el comboBox así.
Código (csharp) [Seleccionar]
comboBox_Unidad.Items.Add(datos);

Pues no me sale.

¿Alguna idea?

Saludos.
#62
Entendido.

Muchísimas gracias.

;-) ;-) ;-) ;-)
#63
Muchas gracias.

El primero funciona de maravilla, exceptuando qu een medio se ponen 0 y no se el motivo. ;)
#64
Hola:

Mirando este esquema que son comandos que se envían y recibe del puerto serie.


Ver imagen.

Como dice arriba, si pulso X72 más la tecla Enter <cr> en el terminal del puerto serie como indica abajo. Me muestra estos valores.


Ver imagen.

Me mostró esto.

#2000,1400,230,45.0,55.0,8.6

   The apparent power is 2000 VA.
   The active power is 1400 Watts.
   The factory default voltage of output is 230 Volts.
   The rating frecuency range is between 45.0 and 55.0 Hz.
   The rating current is 8.6 Amperes.

Ya puesto en español. En el formulario pongo todo este texto con los labels.

   La potencia aparente es 2000 VA.
   La potencia activa es de 1400 Watts.
   El voltaje de salida predeterminado de fábrica es de 230 voltios.
   El rango de frecuencia nominal está entre 45.0 y 55.0 Hz.
   La corriente nominal es de 8,6 amperios.

Supongamos que recibo el dato indicado arriba y lo vuelvo a mostrar abajo.

#2000,1400,230,45.0,55.0,8.6

Este dato lo guardo en una variable.

La cuestión.

¿Cómo lo paso a cada labels?

Son 5 label indicado arriba, solo cambia el valor en negrita, que son solo números.

¿Alguna idea?

Saludos.


Edito:
Buenas:

Lo he intentado así:
Código (csharp) [Seleccionar]
using System;

namespace Delimitador_consola_01
{
    class Program
    {
        static void Main(string[] args)
        {
           
            string phrase = "#2000,1400,230,45.0,55.0,8.6";
            string[] words = phrase.Split('#', ',');

            foreach (var word in words)
            {
                Console.WriteLine($"<{word}>");
            }



            // Pulse cualquier tecla para salir.
            Console.ReadKey();
        }
    }
}


¿Cómo hago que me lo muestre así?

La potencia aparente es 2000 VA.
La potencia activa es de 1400 Watts.
El voltaje de salida predeterminado de fábrica es de 230 voltios.
El rango de frecuencia nominal está entre 45.0 y 55.0 Hz.
La corriente nominal es de 8,6 amperios.
#65
Buenas:

Ya me funciona, por fin. La configuración exactamente es esta.



Ver imagen.

Un ejemplo, como dice en el primer ejemplo indicado en el PDF.
Me muestra todo el contenido en verde cuando pulso B.


Ver imagen.

Es todo lo que quería saber. Ahora puedo hacer lo que me de la gana, la interfaz que me de la gana con Visual studio y mostrar los códigos de errores, advertencias y informativos tantos en números como descrptivos usando un buen LCD para Arduino.

También se puede hacer un LDC a distancia controlado por Arduino en RF si no quieres usar cables o lo tienes un poco lejos desde la UPS a al propio usuario que está en otra habitación.

Ahora voy a probar con un poco de C# un buen delimitador para interpretar esto:
Citar#I222.0O222.5L000B100V27.5F50.4H50.4R012

He iré informando poco a poco.

Salu2.
#66
Hola:

Parace ser que por fin me funciona.
Código (csharp) [Seleccionar]
using System;
using System.Management; // No olvidar. Añadir en Referencia.

namespace Detectar_disco_lector_consola_01
{
    class Program
    {
        // Variables.
        public static string datos = "";
        static void Main(string[] args)
        {

            ConsigueComponentes("Win32_CDROMDrive", "MediaLoaded");

            // ¿Disco en el lector?
            if (datos == "True")
            {
                Console.WriteLine("Disco en el lector: Sí.");
            }

            else
            {
                Console.WriteLine("Disco en el lector: No.");
            }

            // Pulse cualquier tecla para salir.
            Console.ReadKey();
        }

        private static void ConsigueComponentes(string hwclass, string syntax)
        {
            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
            foreach (ManagementObject mj in mos.Get())
            {
                if (Convert.ToString(mj[syntax]) != "")
                {
                    datos = Convert.ToString(mj[syntax]);
                }
            }
        }
    }
}


No se si es la mejor forma adecuada para hacer lo que quiero. Porque solo pide que sea true o false y puede ser cualquier otro dispositivo que haga lo mismo.

Ahora me toca implementarlo con Windows Form.


Ver imagen.

Saludos.
#67
Buenas:

Empezando desde cero. Me sale a medias.

Código (csharp) [Seleccionar]
using System;
using System.Management; // No olvidar. Añadir en Referencia.

namespace Detectar_disco_lector_consola_01
{
    class Program
    {
        // Variables.
        public static string datos = "";
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Detectar disco en el lector.";

            // Tamaño de la ventana, x, y.
            Console.SetWindowSize(60, 15);

            // Color de fondo.
            Console.BackgroundColor = ConsoleColor.Gray;

            // Color de las letras.
            Console.ForegroundColor = ConsoleColor.Black;

            // Limpiar pantalla y dejarlo todo en color de fondo.
            Console.Clear();

            // Visible el cursor.
            Console.CursorVisible = true;

            // Nombre del dispositivo o lector.
            Console.Write("Nombre del dispositivo: ");
            ConsigueComponentes("Win32_CDROMDrive", "Name");

            // Disco en la unidad del lector.
            Console.Write("Disco en el lector: ");
            ConsigueComponentes("Win32_CDROMDrive", "MediaLoaded");

            // ¿Disco en el lector?
            if (datos == "True")
            {
                Console.WriteLine("Disco en el lector: Sí.");
            }

            else
            {
                Console.WriteLine("Disco en el lector: No.");
            }

            Console.Write("FIN DE PROGRAMA.");

            // Pulse cualquier tecla para salir.
            Console.ReadKey();
        }

        private static void ConsigueComponentes(string hwclass, string syntax)
        {
            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
            foreach (ManagementObject mj in mos.Get())
            {
                if (Convert.ToString(mj[syntax]) != "")
                {
                    Console.WriteLine(datos = Convert.ToString(mj[syntax]));
                }
            }
        }
    }
}


Necesito pulir muchas cosas.

Que me detecte el disco en Sí o No.

El programa se puede mejorar, ya que me responde cuando solo aparece un True o False, pero puede ser cualquier dispositivo.

Saludos.
#68
Cita de: TickTack en 20 Marzo 2021, 14:03 PM
Y que error te larga si lo tratas de hacer como en la última?

Buenas:

No seja hacer este if Else.

Código (csharp) [Seleccionar]
            // ¿En el lector hay disco?
            // Sí. Hay disco.
            if (GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded") == true)
            {
                Console.WriteLine("Sí");
            }

            // No. No hay disco.
            else
            {
                Console.WriteLine("No");
            }


Citar
Error   CS0019   El operador '==' no se puede aplicar a operandos del tipo 'void' y 'bool'
#69
Buenas:

Por ejemplo, en esta parte.
Código (csharp) [Seleccionar]
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 (csharp) [Seleccionar]
            // ¿En el lector hay disco?
            // Sí. Hay disco.
            if (GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded") == true)
            {
                Console.WriteLine("Sí");
            }

            // No. No hay disco.
            else
            {
                Console.WriteLine("No");
            }


Buscando ideas.

Gracias.
#70
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 (csharp) [Seleccionar]
using System;
using System.Management;

namespace CPU_GPU_Hardware_informacion_consola_01
{
   class Program
   {
       static void Main(string[] args)
       {
           // Título de la ventana.
           Console.Title = "Título de la ventana.";

           // Tamaño de la ventana, x, y.
           Console.SetWindowSize(120, 63);

           // Color de fondo.
           Console.BackgroundColor = ConsoleColor.Gray;

           // Color de las letras.
           Console.ForegroundColor = ConsoleColor.Black;

           // Limpiar pantalla y dejarlo todo gris.
           Console.Clear();

           // Visible el cursor.
           Console.CursorVisible = true;

           // Nombre del procesador.
           GetMyCPUInfo("Win32_Processor", "Name");

           // CD ROM.
           GetMyCPUInfo("Win32_CDROMDrive", "Name");
           Console.Write("Medio cargado: (Disco en el lector:) ");
           GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded");


           Console.ForegroundColor = ConsoleColor.Blue;
           Console.WriteLine("FIN DEL PROGRAMA.");

           // Pulse cualquier tecla para salir.
           Console.ReadKey();
       }

       private static void GetMyCPUInfo(string hwclass, string syntax)
       {
           ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
           foreach (ManagementObject mj in mos.Get())
           {
               Console.WriteLine(Convert.ToString(mj[syntax]));
           }
       }
   }
}


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

Saludos.