Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Meta en 27 Diciembre 2015, 03:36 AM

Título: Mostrar nombre de los datos en C#.
Publicado por: Meta en 27 Diciembre 2015, 03:36 AM
Hola:

En este código muestra los nombres de la configuración. Teniendo el código completo hecho, quiero que muestre un resumen en el componente statusStrip como muestra abajo.

(http://www.subeimagenes.com/img/retretyry-1580264.png)

Se tiene que mostrar como indica abajo.
(http://www.subeimagenes.com/img/retretyry-1580265.png)

Pongo el código funcional de la configuración del puerto serie, solo falta que muestra la información en el statusStrip que no se hacerlo, siempre con fallos y llevo tres días.
Código (csharp) [Seleccionar]
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;

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

namespace Config_Puerto_Serie
{
    public partial class Form1 : Form
    {
        // Variables.
        bool Conectado;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Añado los puertos disponible en el PC con SerialPort.GetPortNames() al combo
            comboBox_Puerto.DataSource = SerialPort.GetPortNames();

            // Añade los bits de datos.
            comboBox_Bits_de_datos.Items.Add("5");
            comboBox_Bits_de_datos.Items.Add("6");
            comboBox_Bits_de_datos.Items.Add("7");
            comboBox_Bits_de_datos.Items.Add("8");
            comboBox_Bits_de_datos.SelectedIndex = 3;

            // Añade los bits de parada.
            foreach (string Bit_Parada in Enum.GetNames(typeof(StopBits)))
            {
                comboBox_Bits_de_parada.Text = "Two";
                comboBox_Bits_de_parada.Items.Add(Bit_Parada);
            }

            // Añade la Paridad al comboBox.
            foreach (string Paridad in Enum.GetNames(typeof(Parity)))
            {
                comboBox_Paridad.Text = "None";
                comboBox_Paridad.Items.Add(Paridad);
            }

            // Añade el control de flujo.
            foreach (string Flujo in Enum.GetNames(typeof(Handshake)))
            {
                comboBox_Control_de_flujo.Text = "None";
                comboBox_Control_de_flujo.Items.Add(Flujo);
            }

           
            textBox_Read_time_out.Text = "-1";
            textBox_Write_time_out.Text = "-1";

            comboBox_DiscardNull.Items.Add("False");
            comboBox_DiscardNull.Items.Add("True");
            comboBox_DiscardNull.SelectedIndex = 0;

            comboBox_DtrEnable.Items.Add("False");
            comboBox_DtrEnable.Items.Add("True");
            comboBox_DtrEnable.SelectedIndex = 0;

            comboBox_RtsEnable.Items.Add("False");
            comboBox_RtsEnable.Items.Add("True");
            comboBox_RtsEnable.SelectedIndex = 0;

            textBox_ParityReplace.Text = "63";

            textBox_ReceivedBytesTrheshold.Text = "1";

            textBox_ReadBufferSize.Text = "4096";
            textBox_WriteBufferSize.Text = "2048";

            // Añade puertos disponibles físicos  y virtuales.
            serialPort1.BaudRate = (int)Int16.Parse(comboBox_Bit_por_segundo.Text.ToString());
            serialPort1.PortName = comboBox_Puerto.Text.ToString();
            serialPort1.DataBits = (int)Int16.Parse(comboBox_Bits_de_datos.Text.ToString());
            serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), comboBox_Paridad.Text.ToString());
            serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), comboBox_Bits_de_parada.Text.ToString());
            serialPort1.Handshake = (Handshake)Enum.Parse(typeof(Handshake), comboBox_Control_de_flujo.Text.ToString());

            // Más configuraciones.
            serialPort1.ReadTimeout = (int)Int16.Parse(textBox_Read_time_out.Text.ToString());
            serialPort1.WriteTimeout = (int)Int16.Parse(textBox_Write_time_out.Text.ToString());
            serialPort1.DiscardNull = Convert.ToBoolean(comboBox_DiscardNull.Text.ToString());
            serialPort1.DtrEnable = Convert.ToBoolean(comboBox_DtrEnable.Text.ToString());
            serialPort1.ParityReplace = Convert.ToByte(textBox_ParityReplace.Text.ToString());
            serialPort1.RtsEnable = Convert.ToBoolean(comboBox_RtsEnable.Text.ToString());
            serialPort1.ReadBufferSize = (int)Int16.Parse(textBox_ReadBufferSize.Text.ToString());
            serialPort1.WriteBufferSize = (int)Int16.Parse(textBox_WriteBufferSize.Text.ToString());
        }

        private void button_Conectar_Puerto_Click(object sender, EventArgs e)
        {
            if(!serialPort1.IsOpen)
              {

                 serialPort1.Open();
                 Conectado = true; // Cariable de clase boleana para controlar si el puero lo abro yo o no.
                 button_Conectar_Puerto.Text = "DESCONECTAR";
                 button_Conectar_Puerto.BackColor = Color.Green;
              }

            else
              {
                if (Conectado)
                  {
                    serialPort1.Close();
                    Conectado = false;
                    button_Conectar_Puerto.Text = "CONECTAR";
                    button_Conectar_Puerto.BackColor = Color.Red;
                  }
                else
                  {
                    // Esta ocupado por otro programa muestra mensaje y no hacer nada
                      label_Mensajes_de_error.Text = "Puerto ocupado o no lo encuentra.";
                  }
               }
        }

        // Detecta USB o puerto serie virtual cuando lo conecta y desconecta del cable.
        protected override void WndProc(ref Message USB)
        {
            if (USB.Msg == 0x219)
            {
                comboBox_Puerto.DataSource = SerialPort.GetPortNames();
            }

            base.WndProc(ref USB); // Detecta si hay cambios en el usb y si los hay los refleja.
        }
    }
}


Felices navidades.
Título: Re: Mostrar nombre de los datos en C#.
Publicado por: Eleкtro en 27 Diciembre 2015, 21:15 PM
Cita de: Meta en 27 Diciembre 2015, 03:36 AMTeniendo el código completo hecho, quiero que muestre un resumen en el componente statusStrip

no se hacerlo, siempre con fallos y llevo tres días.

Me cuesta creer que lleves 3 días para hacer esto:
Código (csharp) [Seleccionar]
this.ToolStripStatusLabel1.Text = "Resumen...";

Explica cual es el problema real que encuentras.

Saludos
Título: Re: Mostrar nombre de los datos en C#.
Publicado por: Meta en 28 Diciembre 2015, 01:33 AM
Hola:

Me refiero que muestre esto así.

9600 8-N-2

Saludos.
Título: Re: Mostrar nombre de los datos en C#.
Publicado por: Eleкtro en 28 Diciembre 2015, 04:35 AM
Bien, ¿y el problema cual es?.

String.Format()
Título: Re: Mostrar nombre de los datos en C#.
Publicado por: El Benjo en 28 Diciembre 2015, 06:18 AM
Creo que lo Elektro quiso decir es que no se muetra la parte del código en la que intentas que el acomodar ese texto en el label y por ende no entendemos qué es lo que estás haciendo mal.

Por mi parte te puedo decir que lo que puedes hacer es:

Código (csharp) [Seleccionar]

private void MostrarConfiguracion()
{
  ToolStripLabel.Text = ComboBoxBitsPorSegundo.value.ToString() + " ";
  ToolStripLabel.Text += ComboBoxBitsDeDatos.value.ToString() + "-";
  if(ComboBoxParidad.value == "None")
  {
    ToolStripLabel.Text += "N-";
  }else{
    ToolStripLabel.Text += "S-"; //Aquí quizás quieras otro compartamiento. Lo ajustas tú.
  }
// Y aquí sigues el proceso para indicar los bits de paridad seleccionados. No sé las opciones que tiene tu combobox.
}


Ahora, cada que cambie el valor de uno de los controles que intervienen en la creación del resumen llamas a esta función. Espero que con ese ejemplo ya sepas cómo hacer las cosas y si no, entonces muéstranos lo que hayas intentado hacer para ver los errores. Saludos y feliz fin de año.