我正在做一个串口项目..

我需要从组合框中选择可用的 com 端口。

但我无法得到它..我需要一些帮助~

这是我的代码..它在 C# 中:

btn_Open 是一个激活串口的按钮

    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;
        }
  • cbCommPorts 是我为 Combo Box 取的名字

    私有(private)无效 cbCommPorts_SelectedIndexChanged(对象发送者,EventArgs e)
    {
    int COM1 = cbCommPorts.SelectedIndex;
    int COM2 = cbCommPorts.SelectedIndex;
    int COM3 = cbCommPorts.SelectedIndex;
    对象 selectedItem = serialPort1.PortName;
        MessageBox.Show("COM PORT: " + selectedItem.ToString() + " Selected");
    }
    

  • 我的代码有问题吗?谢谢..

    最佳答案

    这是您可以将它与 Windows 窗体一起使用的一种方式

    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....
            }
        }
    }
    

    话虽如此,除非您要维护遗留软件,
    看看 WPF 可能是个好主意。学习如何使用 WPF 而不是 WinForms
    将为您在 Windows 8、Windows Phone 等上的开发做好准备......并且数据绑定(bind)功能使您想要做的事情变得非常容易。

    关于c# - 串口组合框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13794376/

    10-11 12:23