Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combo box for serial port

Tags:

c#

combobox

I'm doing a project for serial port..

I need to select the available com port from the combo box.

but i cant get it.. And i needed some help~

Here's my code.. its in C#:

btn_Open is a button to activate the serial port

    private void btnOpen_Click(object sender, EventArgs e)
    {
        string [] myPort;

        int COM1 = cbCommPorts.SelectedIndex;
        int COM2 = cbCommPorts.SelectedIndex;
        int COM3 = cbCommPorts.SelectedIndex;
        Object selectedItem = serialPort1.PortName;

        myPort = System.IO.Ports.SerialPort.GetPortNames();
        cbCommPorts.Items.AddRange(myPort);

        serialPort1.PortName = cbCommPorts.SelectedItem.ToString();
        serialPort1.BaudRate = 115200;

        if (serialPort1.IsOpen) {
            serialPort1.PortName = cbCommPorts.SelectedItem.ToString();

            serialPort1.Open();
            btnTransmit.Enabled = true;
            btn2.Enabled = true;
            btn3.Enabled = true;
        }
  1. cbCommPorts is the name i got for the Combo Box

    private void cbCommPorts_SelectedIndexChanged(object sender, EventArgs e) { int COM1 = cbCommPorts.SelectedIndex; int COM2 = cbCommPorts.SelectedIndex; int COM3 = cbCommPorts.SelectedIndex; Object selectedItem = serialPort1.PortName;

        MessageBox.Show("COM PORT: " + selectedItem.ToString() + " Selected");
    }
    

Is there any problem to my codes? Thanks..

like image 917
user1670247 Avatar asked Oct 26 '25 11:10

user1670247


1 Answers

Here's one way you might use it with Windows Forms

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Load += Form1_Load;
    }

    void Form1_Load(object sender, EventArgs e)
    {
        var ports = SerialPort.GetPortNames();
        cmbSerialPorts.DataSource = ports;
    }

    private void btnOk_Click(object sender, EventArgs e)
    {
        if (cmbSerialPorts.SelectedIndex > -1)
        {
            MessageBox.Show(String.Format("You selected port '{0}'", cmbSerialPorts.SelectedItem));
            Connect(cmbSerialPorts.SelectedItem.ToString());
        }
        else
        {
            MessageBox.Show("Please select a port first");
        }
    }

    private void Connect(string portName)
    {
        var port = new SerialPort(portName);
        if (!port.IsOpen)
        {
            port.BaudRate = 19200;
            port.Open();
            //Continue here....
        }
    }
}

That being said, unless you are maintaining legacy software, it might be a good idea to take a look at WPF. Learning how to use WPF instead of WinForms will ready you for development on Windows 8, Windows Phone etc... And the databinding features make what you're trying to do really easy.

like image 193
TimothyP Avatar answered Oct 29 '25 00:10

TimothyP



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!