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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 3 4 5 6 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 ... 255
171  Programación / .NET (C#, VB.NET, ASP) / Re: Indicar bien valores de un Byte en concreto en: 20 Abril 2021, 18:32 pm
Gracias por la idea, voy a probar a ver. Después comento.
172  Programación / .NET (C#, VB.NET, ASP) / Indicar bien valores de un Byte en concreto en: 20 Abril 2021, 07:26 am
Hola:

Este programa consiste en leer bits en ciertos Bytes. En este manual que puedes ver aquí.

Ver manual en pdf.

Página 7 / 21.

Concretamente en el Byte S2 y en los bit 6 y 5 se puede hacer una combinación en 4 estados que tiene que ser así:

6 - 5
------
0 - 0 normal [always use this value]
0 - 1 boost one stage
1 - 0 boost two stages
1 - 1 buck one stag



Rrecordando que los bits 6 y 5 del Byte S2 entre estos dos hay cuatro combinaciones indicado justo arriba.

Por ejemplo, si el Byte S2 tiene la combinación de los bits 6 y 5 de esta manera.

bit 6 igual a 0 y el bit 5 igual a 1, muestra el mensaje boost one stage.

Porque 0 - 1 es el que le corresponde y se muestra en pantalla. Sol me falta completar esta parte.

Dejo el código completo .
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Delimitador_consola_03
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            #region Configuración ventana.
  14.            // Título de la ventana.
  15.            Console.Title = "Probando manipulación de cadena";
  16.  
  17.            // Tamaño de la ventana, x, y.
  18.            Console.SetWindowSize(100, 35);
  19.  
  20.            // Color de fondo.
  21.            Console.BackgroundColor = ConsoleColor.DarkBlue;
  22.  
  23.            // Color de las letras.
  24.            Console.ForegroundColor = ConsoleColor.Yellow;
  25.  
  26.            // Limpiar pantalla y dejarlo todo en color de fondo.
  27.            Console.Clear();
  28.  
  29.            // Visible el cursor.
  30.            Console.CursorVisible = true;
  31.            #endregion
  32.  
  33.            // Cree una codificación ISO-8859-1.
  34.            Encoding ISO_8859_1 = Encoding.GetEncoding("ISO-8859-1");
  35.  
  36.            #region Variables.
  37.            // Partir a trocitos estos caracteres.
  38.            char[] delimitadorComandoB = { '#', ',', 'O', 'I', 'L', 'B', 'V', 'F', 'H', 'R', 'S', };
  39.  
  40.            // Es la cadena de caracteres que me llegó desde el puerto serie.
  41.            // En este ejemplo lo dejo en la varible directamente.
  42.            // Una cadena completa empieza con # y termina en <cr>, o lo que es lo mismo, /r.
  43.            string respuestaB = "#I223.3O224.0L000B100V26.4F50.2H50.2R0080S„€€„À"; // Comando B.
  44.  
  45.            // Se guarga en este array tipo string los datos ya partidos a tozos.
  46.            string[] palabrasB = respuestaB.Split(delimitadorComandoB);
  47.  
  48.            // Tabla S1 descripción.
  49.            string[] DESCRIPCION_S1 =
  50.            {
  51.                "Indica que este byte está disponible y es válido. [Siempre 1]",             // Posición [0].
  52.                "Indica falla de energía de la red pública; ver detalles en S2.0 y S2.1.",
  53.                "Indica que la capacidad de la batería es menor que el umbral de apagado.",
  54.                "Indica que el zumbador está en estado de pitido.",
  55.                "Indica que la prueba de batería se está procesando.",
  56.                "Indica que el apagado programado está pendiente.",
  57.                "Indica que la restauración programada está pendiente.",
  58.                "Indica falla de hardware; ver detalles sobre el comando X71."               // Posición [7].
  59.            };
  60.  
  61.            string[] DESCRIPCION_S2 =
  62.            {
  63.                "Para indicar que este byte está disponible y es válido. [Siempre 1].",
  64.                "--",
  65.                "XX",
  66.                "Indica sobretemperatura del inversor.",
  67.                "Indica que el inversor tiene una falla.",
  68.                "Indica que el inversor está apagado.",
  69.                "Indica que la frecuencia de la utilidad está fuera de rango.",
  70.                "Indica que el voltaje de la red pública está fuera de rango."
  71.            };
  72.  
  73.            string[] DESCRIPCION_S3 =
  74.            {
  75.                "Para indicar que este byte está disponible y es válido. [Siempre 1].",
  76.                "Indica que la batería está completamente cargada.",
  77.                "Indica que la capacidad de la batería aún es menor que el umbral restaurado del UPS cuando la energía de la red pública restaurado.",
  78.                "Indica que la batería se está cargando.",
  79.                "Indica que la batería se está descargando.",
  80.                "Indica que la capacidad de la batería es inferior al 80 por ciento.",
  81.                "Reservado, debe ser 0.",
  82.                "Indica que la batería no está presente."
  83.            };
  84.  
  85.            string[] DESCRIPCION_S4 =
  86. {
  87.                "Para indicar que este byte está disponible y es válido. [Siempre 1].",
  88.                "Indica que el bypass es una sobrecarga.",
  89.                "Indica que la derivación está activa.",
  90.                "Indica que la salida sufre un cortocircuito.",
  91.                "Indica que la salida tiene carga.",
  92.                "Indica que la salida está sobrecargada.",
  93.                "Indica que la frecuencia de salida está fuera de rango en bypass.",
  94.                "Indica que el voltaje de salida está fuera de rango en derivación."
  95.            };
  96.  
  97.            string[] DESCRIPCION_S5 =
  98. {
  99.                "Para indicar que este byte está disponible y es válido. [Siempre 1].",
  100.                "Indica que no hay salida.",
  101.                "Para indicar que el tiempo de ejecución restante es inferior al umbral.",
  102.                "Para indicar que el zumbador está silenciado (no permanente) en este momento.",
  103.                "Para indicar falla de cableado.",
  104.                "Para indicar SAI en modo ECO.",
  105.                "Para indicar UPS en Bypass manual.",
  106.                "Arreglar 0."
  107.            };
  108.  
  109.            string[] DESCRIPCION_S6 =
  110.            {
  111.                "Para indicar que este byte está disponible y es válido. [Siempre 1].",
  112.                "Indica UPS encendido.",
  113.                "Reservado, debe ser 0.",
  114.                "Reservado, debe ser 0.",
  115.                "Reservado, debe ser 0.",
  116.                "Reservado, debe ser 0.",
  117.                "Reservado, debe ser 0.",
  118.                "Reservado, debe ser 0."
  119.            };
  120.  
  121.            bool boolS1 = true;
  122.            bool boolS2 = false;
  123.            bool boolS3 = false;
  124.            bool boolS4 = false;
  125.            bool boolS5 = false;
  126.            bool boolS6 = false;
  127.            bool boolContador = true;
  128.            bool boolContador2 = false;
  129.            #endregion
  130.  
  131.            // Comando B.
  132.            Console.WriteLine();
  133.  
  134.            // Muestra los resultados en pantalla.
  135.            Console.WriteLine();
  136.            Console.WriteLine("El voltaje de la utilidad es de {0} voltios. ", palabrasB[2]); // I.
  137.            Console.WriteLine("El voltaje de salida del UPS es de {0} voltios. ", palabrasB[3]); // O.
  138.            Console.WriteLine("La carga actual de UPS es del {0} por ciento. ", palabrasB[4]); // L.
  139.            Console.WriteLine("La capacidad de la batería es del {0} por ciento. ", palabrasB[5]); // B.
  140.            Console.WriteLine("El voltaje de la batería es de {0} voltios. ", palabrasB[6]); // V.
  141.            //Console.WriteLine("La temperatura del gabinete del UPS es de {0} grados centígrados. ", palabrasB[7]); // T. No hay T. en mi versión.
  142.            Console.WriteLine("La frecuencia de salida del SAI es de {0} Hz. ", palabrasB[7]); // F.
  143.            Console.WriteLine("La frecuencia de salida del SAI es de {0} Hz. ", palabrasB[8]); // H.
  144.            Console.WriteLine("El tiempo de funcionamiento restante de la batería es de {0} minutos. ", palabrasB[9]);
  145.            //Console.WriteLine(@"Estos son los bits de estados que no se entiende.S:
  146.            //Aquí hay que leer cada bits como cuando se leyeron cada Byte arriba: ", (char)palabrasB[10]);
  147.  
  148.            char[] bits = palabrasB[10].ToCharArray();
  149.  
  150.            //int byteS1 = (byte)bits[0];
  151.            //int byteS2 = (byte)bits[1];
  152.            //int byteS3 = (byte)bits[2];
  153.            //int byteS4 = (byte)bits[3];
  154.            //int byteS5 = (byte)bits[4];
  155.            //int byteS6 = (byte)bits[5];
  156.  
  157.            //Console.WriteLine("Byte S1: {0}", byteS1.ToString());
  158.            //Console.WriteLine("Byte S2: {0}", byteS2.ToString());
  159.            //Console.WriteLine("Byte S3: {0}", byteS3.ToString());
  160.            //Console.WriteLine("Byte S4: {0}", byteS4.ToString());
  161.            //Console.WriteLine("Byte S5: {0}", byteS5.ToString());
  162.            //Console.WriteLine("Byte S6: {0}", byteS6.ToString());
  163.  
  164.  
  165.            //Console.WriteLine();
  166.            //Console.WriteLine(((byteS1 & 128) == 128) ? "ACTIVADO" : "DESACTIVADO");
  167.            //Console.WriteLine(((byteS1 & 128) == 128) ? "1" : "0");
  168.            //Console.WriteLine();
  169.  
  170.            Tabla();
  171.            int contador = 0;
  172.            for (int b = 0; b < bits.Length; b++)
  173.            {
  174.                for (int a = 7; a >= 0; a--)
  175.                {
  176.  
  177.                    Console.Write((((byte)bits[b]) & (1 << a)) >> a);
  178.                    Console.Write(" | ");
  179.  
  180.                    if ((contador <= 7) && (boolS1 == true))
  181.                    {
  182.                        Console.WriteLine(DESCRIPCION_S1[contador]);
  183.  
  184.                        if (contador == 7)
  185.                        {
  186.                            boolS1 = false;
  187.                            boolS2 = true;
  188.                            boolContador2 = true;
  189.                            contador = 0;
  190.                        }
  191.                    }
  192.                    else if ((contador <= 7) && (boolS2 == true))
  193.                    {
  194.                        Console.WriteLine(DESCRIPCION_S2[contador]);
  195.                        boolContador2 = false;
  196.                        if (contador == 7)
  197.                        {
  198.                            boolS2 = false;
  199.                            boolS3 = true;
  200.                            boolContador2 = true;
  201.                            contador = 0;
  202.                        }
  203.                    }
  204.                    else if ((contador <= 7) && (boolS3 == true))
  205.                    {
  206.                        Console.WriteLine(DESCRIPCION_S3[contador]);
  207.                        boolContador2 = false;
  208.                        if (contador == 7)
  209.                        {
  210.                            boolS3 = false;
  211.                            boolS4 = true;
  212.                            boolContador2 = true;
  213.                            contador = 0;
  214.                        }
  215.                    }
  216.                    else if ((contador <= 7) && (boolS4 == true))
  217.                    {
  218.                        Console.WriteLine(DESCRIPCION_S4[contador]);
  219.                        boolContador2 = false;
  220.                        if (contador == 7)
  221.                        {
  222.                            boolS4 = false;
  223.                            boolS5 = true;
  224.                            boolContador2 = true;
  225.                            contador = 0;
  226.                        }
  227.                    }
  228.                    else if ((contador <= 7) && (boolS5 == true))
  229.                    {
  230.                        Console.WriteLine(DESCRIPCION_S5[contador]);
  231.                        boolContador2 = false;
  232.                        if (contador == 7)
  233.                        {
  234.                            boolS5 = false;
  235.                            boolS6 = true;
  236.                            boolContador2 = true;
  237.                            contador = 0;
  238.                        }
  239.                    }
  240.                    else if ((contador <= 7) && (boolS6 == true))
  241.                    {
  242.                        Console.WriteLine(DESCRIPCION_S6[contador]);
  243.                        boolContador2 = false;
  244.                        if (contador == 7)
  245.                        {
  246.                            boolS6 = true;
  247.                            boolContador2 = true;
  248.                            contador = 0;
  249.                        }
  250.                    }
  251.  
  252.                    if (boolContador == true)
  253.                    {
  254.                        contador++;
  255.  
  256.                        if (boolContador2 == true)
  257.                        {
  258.                            contador = 0;
  259.                        }
  260.                    }
  261.                    //Console.WriteLine();
  262.                }
  263.                Console.WriteLine();
  264.            }
  265.  
  266.  
  267.            #region Tabla.
  268.            void Tabla()
  269.            {
  270.                Console.WriteLine();
  271.                Console.WriteLine("Byte | Bit | Estado | Descripción");
  272.                Console.WriteLine("-----+-----+-----------------------------------------------------------------------");
  273.            }
  274.            #endregion
  275.  
  276.            // Pulse cualquier tecla para salir.
  277.            Console.ReadKey();
  278.        }
  279.    }
  280. }

¿Cómo se soluciona este problema?

Saludos.
173  Programación / .NET (C#, VB.NET, ASP) / Configurar ventana en: 20 Abril 2021, 07:21 am
Hola:

¿Es posible configurar la ventana de la consola mediante C#?

En mi caso, quiero configurar el tamaño de la fuente mediante códigos C#. Lo puedo hacer de otra manera cambiando propiedades como indica cen la iamgen de abajo.


Las demás configuraciones si las puedo cambiar a códigos C# menos la fuente de la pantalla.

Un ejemplo.
Código:
// Título de la ventana.
            Console.Title = "Configuración ventana consola C#";

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

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

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

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

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

Saludos.
174  Programación / .NET (C#, VB.NET, ASP) / Re: Tamaño Carpeta en: 16 Abril 2021, 13:54 pm
Código
  1. long suma =0;
  2.  
  3. DirectoryInfo di = new DirectoryInfo("c:\\temp");
  4.  
  5. foreach (FileInfo info in di.GetFiles("*", SearchOption.AllDirectories))
  6.  
  7. {
  8.  
  9.   suma+=info.Length;
  10.  
  11. }

175  Programación / .NET (C#, VB.NET, ASP) / Re: Separar binario por cada byte en: 13 Abril 2021, 08:36 am
Hola:

Los comandos que tiene subcomandos como el K60:1 no hay problemas. Hay respuesta que me lelgan de error,el que no tiene error es este.

Aquí un terminal que ejecuto B y X87.

ver imagen.

Cuando hay errore sraros, suele recibir estos mensajes.
#0
#-1
#-3
#-10
Con guines en medio.

Aquí abajo activa y desactiva el zumbador del SAI cuyo comando tiene subcomando.



Cualquier comando enviado se envía fácil, aquí el comando a enviar.
Código
  1.        private void button_Desactivar_Click(object sender, EventArgs e)
  2.        {
  3.            byte[] mBuffer = Encoding.ASCII.GetBytes("K60:0\r"); // Comando K60:0 desactivar.
  4.            serialPort1.Write(mBuffer, 0, mBuffer.Length);
  5.        }

El problema está cuando hay que recibir respuesta de dicho comando y ya no estan fácil.

Hay que organizar todo, las respuestas. Como se dijo arriba, cada día una interpretación de cada comando que tarda uno por día porque es laaaaaarrrrrrrrrrgo y tedioso.

Aquí dejo un programa completo solo de un comando, el K60 que activa y desactiva el zumbador.

Código
  1. using System;
  2. using System.IO.Ports;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using System.Windows.Forms;
  7.  
  8. namespace Terminal_UPS_SAI_02
  9. {
  10.    public partial class Form1 : Form
  11.    {
  12.        // Utilizaremos un string como buffer de recepción.
  13.        string recibidos;
  14.  
  15.        public Form1()
  16.        {
  17.            InitializeComponent();
  18.        }
  19.  
  20.  
  21.        private void Form1_Load(object sender, EventArgs e)
  22.        {
  23.            try
  24.            {
  25.                // Codificación.
  26.                //serialPort1.Encoding = Encoding.GetEncoding(437);
  27.                //serialPort1.Encoding = Encoding.GetEncoding(28591); // 28591 es lo mismo que ISO-8859-1.
  28.                serialPort1.Encoding = Encoding.GetEncoding("ISO-8859-1");
  29.  
  30.                // Añado los puertos disponible en el PC con SerialPort.GetPortNames() al comboBox_Puerto.
  31.                comboBox_Puerto.DataSource = SerialPort.GetPortNames();
  32.  
  33.                // Añade puertos disponibles físicos  y virtuales.
  34.                serialPort1.PortName = comboBox_Puerto.Text.ToString();
  35.  
  36.                // Añadir datos recibidos en el evento.
  37.                serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
  38.            }
  39.  
  40.            catch (Exception error)
  41.            {
  42.                MessageBox.Show(error.Message, "Aviso:",
  43.                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
  44.            }
  45.        }
  46.  
  47.        // Detecta USB o puerto serie virtual cuando lo conecta y desconecta del cable.
  48.        protected override void WndProc(ref Message USB)
  49.        {
  50.            if (USB.Msg == 0x219)
  51.            {
  52.                comboBox_Puerto.DataSource = SerialPort.GetPortNames();
  53.            }
  54.  
  55.            // Detecta si hay cambios en el usb y si los hay los refleja.
  56.            base.WndProc(ref USB);
  57.        }
  58.  
  59.        private void button_Conectar_Click(object sender, EventArgs e)
  60.        {
  61.            try
  62.            {
  63.                serialPort1.PortName = comboBox_Puerto.Text.ToString(); // Puerto seleccionado previamente.
  64.                serialPort1.BaudRate = Convert.ToInt32(comboBox_Baudios.Text); // Baudios.
  65.                serialPort1.Open(); // Abrir puerto.
  66.                comboBox_Puerto.Enabled = false;
  67.                comboBox_Baudios.Enabled = false;
  68.                button_Conectar.Enabled = false;
  69.                button_Desconectar.Enabled = true;
  70.                groupBox_Control_Zumbador.Enabled = true;
  71.            }
  72.            catch (Exception error)
  73.            {
  74.                MessageBox.Show(error.Message, "Aviso:",
  75.                MessageBoxButtons.OK, MessageBoxIcon.Warning);
  76.            }
  77.        }
  78.  
  79.        private void button_Desconectar_Click(object sender, EventArgs e)
  80.        {
  81.            try
  82.            {
  83.                serialPort1.Close(); // Cerrar puerto.
  84.                comboBox_Puerto.Enabled = true;
  85.                comboBox_Baudios.Enabled = true;
  86.                button_Conectar.Enabled = true;
  87.                button_Desconectar.Enabled = false;
  88.                groupBox_Control_Zumbador.Enabled = false;
  89.            }
  90.  
  91.            catch (Exception error)
  92.            {
  93.                MessageBox.Show(error.Message, "Aviso:",
  94.                MessageBoxButtons.OK, MessageBoxIcon.Warning);
  95.            }
  96.        }
  97.  
  98.        // Al cerrar el formulario, cierra el puerto si está abierto.
  99.        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  100.        {
  101.            try
  102.            {
  103.                serialPort1.Close(); // Cerrar puerto.
  104.            }
  105.  
  106.            catch (Exception error)
  107.            {
  108.                MessageBox.Show(error.Message, "Aviso:",
  109.                MessageBoxButtons.OK, MessageBoxIcon.Warning);
  110.            }
  111.        }
  112.  
  113.        // Al recibir datos.
  114.        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
  115.        {
  116.            // Retardo de 500 ml.
  117.            //Thread.Sleep(500);
  118.  
  119.            // Acumula los caracteres recibidos a nuestro 'buffer' (string).
  120.            recibidos += serialPort1.ReadExisting();
  121.  
  122.            // Invocar o llamar al proceso de tramas.
  123.            this.Invoke(new EventHandler(Actualizar));
  124.        }
  125.  
  126.        // Procesar los datos recibidos en el bufer y extraer tramas completas.
  127.        private void Actualizar(object sender, EventArgs e)
  128.        {
  129.  
  130.            // Asignar el valor de la trama al richTextBox.
  131.            richTextBox1.Text += recibidos;
  132.  
  133.            // Pasar a hexadecimal.
  134.            foreach (byte b in recibidos)
  135.            {
  136.                // x = minúscula, X = mayúscula.
  137.                richTextBox1.Text += b.ToString("X2");
  138.            }
  139.  
  140.            // Nueva línea.
  141.            richTextBox1.Text += Environment.NewLine;
  142.  
  143.            // Pasar a binario.
  144.            foreach (string leer in recibidos.Select(c => Convert.ToString(c, 2)))
  145.            {
  146.                richTextBox1.Text += leer.ToString();
  147.            }
  148.  
  149.            // Nueva línea.
  150.            richTextBox1.Text += Environment.NewLine;
  151.            richTextBox1.Text += Environment.NewLine;
  152.  
  153.            // Selecciona la posición final para leer los mensajes entrantes.
  154.            richTextBox1.SelectionStart = richTextBox1.Text.Length;
  155.  
  156.            // Mantiene el scroll en la entrada de cada mensaje.
  157.            richTextBox1.ScrollToCaret();
  158.  
  159.            // Limpiar.
  160.            recibidos = "";
  161.        }
  162.  
  163.        private void button_Activar_Click(object sender, EventArgs e)
  164.        {
  165.            byte[] mBuffer = Encoding.ASCII.GetBytes("K60:1\r"); // Comando K60:1 activar.
  166.            serialPort1.Write(mBuffer, 0, mBuffer.Length);
  167.        }
  168.  
  169.        private void button_Desactivar_Click(object sender, EventArgs e)
  170.        {
  171.            byte[] mBuffer = Encoding.ASCII.GetBytes("K60:0\r"); // Comando K60:0 desactivar.
  172.            serialPort1.Write(mBuffer, 0, mBuffer.Length);
  173.        }
  174.  
  175.        private void button_Mute_temporal_Click(object sender, EventArgs e)
  176.        {
  177.            byte[] mBuffer = Encoding.ASCII.GetBytes("K60:2\r"); // Comando K60:2 Mute temporal.
  178.            serialPort1.Write(mBuffer, 0, mBuffer.Length);
  179.        }
  180.  
  181.        private void button_Limpiar_Click(object sender, EventArgs e)
  182.        {
  183.            // Limpiar.
  184.            richTextBox1.Clear();
  185.        }
  186.  
  187.        #region DTR y RTS.
  188.        private void checkBox_DTR_CheckedChanged(object sender, EventArgs e)
  189.        {
  190.            // ¿Marcado en true?
  191.            if (checkBox_DTR.Checked == true)
  192.            {
  193.                // Sí.
  194.                serialPort1.DtrEnable = true;
  195.                checkBox_DTR.Checked = true;
  196.            }
  197.  
  198.            // No. Entonces...
  199.            else
  200.            {
  201.                serialPort1.DtrEnable = false;
  202.                checkBox_DTR.Checked = false;
  203.            }
  204.        }
  205.  
  206.        private void checkBox_RTS_CheckedChanged(object sender, EventArgs e)
  207.        {
  208.            // ¿Marcado en true?
  209.            if (checkBox_RTS.Checked == true)
  210.            {
  211.                // Sí.
  212.                serialPort1.RtsEnable = true;
  213.                checkBox_RTS.Checked = true;
  214.            }
  215.  
  216.            // No. Entonces...
  217.            else
  218.            {
  219.                serialPort1.RtsEnable = false;
  220.                checkBox_RTS.Checked = false;
  221.            }
  222.        }
  223.        #endregion
  224.    }
  225. }

Otra cosa que no se si hay que usar el codificador Encoder que usé, por ejemplo este.
Código
  1. Encoding.GetEncoding("ISO-8859-1");

Y no se si realmente usar DTR como indica en el manual.


A ver si me responde que sistema de codificación usar realmente para que cuando me devuelva ASCII sea el que realmente es.

Estaba pensando en hacer un programa padre que cada comando tiene su propia interfaz hijo, así lo interpreta la respuesta recibida por cada interfaz. Suena chapuza pero pinta que funciona.

Interpretar el mismo interfaz diferentes respuestas ya es otro cantar.

Lo buenoq eu tiene al recibir respueta, es que empieza por # y termina en <cr> y ya se puede dibidir cadenas para analizarlas.

Sigo investigando y interpretando tus consejos.

Gaacias.
176  Programación / .NET (C#, VB.NET, ASP) / Re: Separar binario por cada byte en: 13 Abril 2021, 01:17 am
Aunque no lo parezca, sigo comiéndome las neuronas sobre código a a enviar y cuando recibos los comandos.

Ya daré con el tiempo códigos de ejemplos.
177  Programación / .NET (C#, VB.NET, ASP) / Re: Corregir o quitar elementos del comBoBox en: 9 Abril 2021, 22:51 pm
Funciona.
Código
  1.        void UnidadDisco()
  2.        {
  3.            // Nombre de la unidad.
  4.            ConsigueComponentes("Win32_CDROMDrive", "Id");
  5.  
  6.            datos = datos.Trim();
  7.  
  8.            // Delimitador.
  9.            string[] unidad = datos.Split(' ');
  10.            comboBox_Unidad.Items.AddRange(unidad);
  11.  
  12.  
  13.            //comboBox_Unidad.Items.AddRange(unidades.Split(':'));  //el Split se puede hacer en una sola linea.
  14.  
  15.            // Selecciona la primera unidad.
  16.            comboBox_Unidad.SelectedIndex = 0;
  17.        }

Me he dado cuenta que en el otro programa más grande no.

Ya no me dice si tiene disco o no.
Código
  1. using System;
  2. using System.Management; // No olvidar y añadir en Dependencias, NuGet.
  3. using System.Runtime.InteropServices;
  4. using System.Text;
  5. using System.Windows.Forms;
  6.  
  7. namespace Lector_discos_Net_5_01_cs
  8. {
  9.    public partial class Form1 : Form
  10.    {
  11.        public Form1()
  12.        {
  13.            InitializeComponent();
  14.        }
  15.  
  16.        // Variable.
  17.        string datos = "";
  18.  
  19.        [DllImport("winmm.dll")]
  20.        public static extern Int32 mciSendString(string lpstrCommand,
  21.            StringBuilder lpstrReturnString,
  22.            int uReturnLength,
  23.            IntPtr hwndCallback);
  24.  
  25.        StringBuilder rt = new StringBuilder(127);
  26.  
  27.        private void button_Abrir_Click(object sender, EventArgs e)
  28.        {
  29.            label_Mensaje.Text = "Abriendo...";
  30.            Application.DoEvents();
  31.            mciSendString("set CDAudio!" + comboBox_Unidad.Text + " door open", rt, 127, IntPtr.Zero);
  32.  
  33.            /*
  34.                Si quieres por ejemplo elegir la unidad que quieras, en este caso la H, se le asigana !H
  35.                como indica abajo. En vez de CDAudio, CDAudio!H.
  36.                mciSendString("set CDAudio!H door open", rt, 127, IntPtr.Zero);
  37.             */
  38.  
  39.            label_Mensaje.Text = "Abierto.";
  40.            discoSiNo();
  41.        }
  42.  
  43.        private void button_Cerrar_Click(object sender, EventArgs e)
  44.        {
  45.            label_Mensaje.Text = "Cerrando...";
  46.            Application.DoEvents();
  47.            mciSendString("set CDAudio!" + comboBox_Unidad.Text + " door closed", rt, 127, IntPtr.Zero);
  48.            label_Mensaje.Text = "Cerrado.";
  49.            label_Mensaje_disco.Text = "Disco en el lector: Leyendo...";
  50.            discoSiNo();
  51.        }
  52.  
  53.        // Lectura de dispositivos.
  54.        void ConsigueComponentes(string hwclass, string syntax)
  55.        {
  56.            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
  57.            foreach (ManagementObject mj in mos.Get())
  58.            {
  59.                if (Convert.ToString(mj[syntax]) != "")
  60.                {
  61.                    //datos = Convert.ToString(mj[syntax]);
  62.                    datos += Convert.ToString(mj[syntax]).ToString() + " ";
  63.                }
  64.            }
  65.        }
  66.  
  67.        // Comprobar si hay disco en el lector.
  68.        void discoSiNo()
  69.        {
  70.            // Disco en la unidad del lector.
  71.            ConsigueComponentes("Win32_CDROMDrive", "MediaLoaded");
  72.  
  73.            // ¿Disco en el lector?
  74.            if (datos == "True")
  75.            {
  76.                label_Mensaje_disco.Text = "Disco en el lector: Sí.";
  77.            }
  78.  
  79.            else
  80.            {
  81.                label_Mensaje_disco.Text = "Disco en el lector: No.";      
  82.            }
  83.  
  84.            // Limpiar.
  85.            datos = "";
  86.  
  87.  
  88.        }
  89.  
  90.        private void Form1_Load(object sender, EventArgs e)
  91.        {
  92.            discoSiNo();
  93.  
  94.            // Nombre de la unidad.
  95.            ConsigueComponentes("Win32_CDROMDrive", "Id");
  96.  
  97.            // Borra espacios en blanco.
  98.            datos = datos.Trim();
  99.  
  100.            // Delimitador.
  101.            string[] unidad = datos.Split(' ');
  102.            comboBox_Unidad.Items.AddRange(unidad);
  103.  
  104.  
  105.            // Selecciona la primera unidad.
  106.            comboBox_Unidad.SelectedIndex = 0;
  107.  
  108.            // Limpiar.
  109.            datos = "";
  110.        }
  111.    }
  112. }
  113.  
178  Programación / Programación C/C++ / Re: C o C ++ ?? en: 8 Abril 2021, 13:18 pm
Aprendiendo o familiarizándome estoy con este librito que compré. Se lee mejor en papel que por Web. ;)



Primero C y luego cosas de C++, sobre todo a la hora de mostrar textos en pantalla.
Aprende los dos. Al final opto por C++ que hace más cosas y mejor.

Com lenguaje favorito, prefiero C# y asm.

Saludos.
179  Programación / .NET (C#, VB.NET, ASP) / Re: Corregir o quitar elementos del comBoBox en: 8 Abril 2021, 11:40 am
Buenas gente:

Desde que llegue en el depurador hasta aquí indicado.

Código
  1.        void UnidadDisco()
  2.        {
  3.            // Nombre de la unidad.
  4.            ConsigueComponentes("Win32_CDROMDrive", "Id");
  5.  
  6.            // Delimitador.
  7.            string[] unidad = datos.Split(' ');
  8.            comboBox_Unidad.Items.AddRange(unidad);
  9.  
  10.  
  11.            //comboBox_Unidad.Items.AddRange(unidades.Split(':'));  //el Split se puede hacer en una sola linea.
  12.  
  13.            // Selecciona la primera unidad.
  14.            comboBox_Unidad.SelectedIndex = 0;
  15.        }

Se añade un espacio por la cara.


Saludos.
180  Programación / .NET (C#, VB.NET, ASP) / Re: Corregir o quitar elementos del comBoBox en: 8 Abril 2021, 01:29 am
Funciona mejor, casi perfecto.  ;-) ;-) ;-) ;-) ;-) ;-)

Ahora pone:
G:
F:
Espacio enblanco

No se que pinta en el último elemento un espacio en blanco, queda feo.

Solo hace falta corregir ese último detalle.

Lo demás, perfecto.

 :silbar: :silbar: :silbar: :silbar: :silbar:
Páginas: 1 ... 3 4 5 6 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 ... 255
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines