C#串口编程基础入门

最近在学习C#串口编程,对于串口编程是一个全新的领域,以前没有接触过,现在记录下自己学到的一些基础内容。

串口编程中需要用到一个非常重要的组件SerialPort,将此组件拖动到窗体之后,它是一个不可见组件,不会像Button按钮等直接显示在窗体上,而是显示在窗体的下面,如下图所示:
C#串口编程基础入门_第1张图片
将窗体按照如上图所示的进行设计好了之后(用到了ComboBox控件,需要有一定的C#基础),就可以进行编程了。
首先把要发送的数据放在ComboBox里面,单击选择内容之后,就可以点击发送按钮进行数据发送了。
可以使用System.IO.Ports.SerialPort.GetPortNames()方法查看自己电脑上可用的端口。可以用下面的代码将所有可用的端口都显示在comboBox2控件上

comboBox2.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());

我刚开始在这个地方走了一些弯路,因为我发现我的电脑没有可用的端口,这意味着我无法进行端口调试,后来在网上发现可以用虚拟串口来生成自己想要的串口。我用的软件的下载地址是:https://dl.pconline.com.cn/download/825163.html ,大家也可以从网上找其它的软件。
软件下载安装完成之后的打开页面如下图所示:
C#串口编程基础入门_第2张图片
单击Add pair即可添加一对串口。
程序运行效果如下图:
C#串口编程基础入门_第3张图片

下面是程序的源代码,此程序只能打开并发送数据到指定端口,但还没有实现接收数据的功能。这里多说一下SerialPort组件,它的属性页如下图所示
C#串口编程基础入门_第4张图片
它的大部分属性我们都可以使用默认值,但是有一个属性得根据自己实际情况进行修改,这个属性就是PortName,要把它的值修改为可用的端口号。

using System;
using System.Windows.Forms;

namespace PC
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string str;
            for (int i = 0; i < 256; i++)
            {
                str = i.ToString("x").ToUpper();
                if (str.Length == 1)
                {
                    str += "0";

                }
                comboBox1.Items.Add("0x" + str);

            }
           // comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
            comboBox1.Text = "0x00";

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string data = comboBox1.Text;
            string convertdata = data.Substring(2, 2);
            byte[] buffer = new byte[1];
            buffer[0] = Convert.ToByte(convertdata, 16);
            //serialPort1.PortName = textBox1.Text;
            try
            {
                serialPort1.Open();
                serialPort1.Write(buffer,0,1);
                serialPort1.Close();
                MessageBox.Show("发送成功","提示");
            }
            catch
            {
                if (serialPort1.IsOpen)
                {
                    serialPort1.Close();
                    MessageBox.Show("端口打开成功");
                }
                MessageBox.Show("端口错误", "提示");

            }
        }
    }
}

完整项目下载地址:https://download.csdn.net/download/weixin_43074474/11475776

你可能感兴趣的:(C#串口编程)