VS2022开发串口调试助手

LG5 2024-5-13 156 5/13

一、生成串口调试助手的主要控件

VS2022开发串口调试助手

VS2022开发串口调试助手

VS2022开发串口调试助手

二、生成串口对象

VS2022开发串口调试助手

三、书写代码

1、串口的选择

跳转到图形化界面,然后双击空白位置,会自动生成From1_Load,此函数的作用是会更新串口的选择,然后加入代码,combox控件就可以识别串口

        public Form1()
        {

            InitializeComponent();
            Updata_Serialport_Name(portNameCB); // 调用更新可用串口函数,portcomboBox为端口号组合框的名称
            Control.CheckForIllegalCrossThreadCalls = false;//设置该属性 为false
        }
        /* 新增自定义函数:更新可用串口 */
        private void Updata_Serialport_Name(System.Windows.Forms.ComboBox MycomboBox)
        {
            string[] ArryPort;                               // 定义字符串数组,数组名为 ArryPort
            ArryPort = SerialPort.GetPortNames();            // SerialPort.GetPortNames()函数功能为获取计算机所有可用串口,以字符串数组形式输出
            MycomboBox.Items.Clear();                        // 清除当前组合框下拉菜单内容                  
            for (int i = 0; i < ArryPort.Length; i++)
            {
                MycomboBox.Items.Add(ArryPort[i]);           // 将所有的可用串口号添加到端口对应的组合框中
            }
        }

2、打开串口

跳转到图形化界面,然后双击打开串口按钮,会自动跳转到openSerialPortButton_Click函数,然后加入下面代码

        private void openSerialPortButton_Click(object sender, EventArgs e)
        {

            if (openSerialPortButton.Text == "打开串口")                                  // 如果当前是串口设备是关闭状态
            {
                  try                                                          // try 是尝试部分,如果尝试过程中出现问题,进入catch部分,执行错误处理代码  
                   {
                      SerialPort.PortName = portNameCB.Text;
                      SerialPort.BaudRate = Convert.ToInt32(baudRateCB.Text);
                      SerialPort.Parity = (Parity)Enum.Parse(typeof(Parity), parityCB.Text);
                      SerialPort.DataBits = Convert.ToInt32(dataBitCB.Text);
                             switch (stopBitCB.Text)
                             {
                                 case "1":
                                     SerialPort.StopBits = StopBits.One;
                                     break;
                                 case "2":
                                     SerialPort.StopBits = StopBits.Two;
                                     break;
                             }
                             SerialPort.Open();                                      // 打开串口,如果打开了继续向下执行,如果失败了,跳转至catch部分

                             baudRateCB.Enabled = false;
                             portNameCB.Enabled = false;
                             parityCB.Enabled = false;
                             dataBitCB.Enabled = false;
                             stopBitCB.Enabled = false;

                             openSerialPortButton.BackColor = Color.Red;                           // 将串口开关按键的颜色,改为红色
                             openSerialPortButton.Text = "关闭串口";                               // 将串口开关按键的文字改为“关闭串口”
                         }

                         catch
                         {
                             MessageBox.Show("打开串口失败,请检查串口", "错误");     // 弹出错误对话框
                         }
                     }
                     else                                             // 如果当前串口设备是打开状态
                     {
                         try
                         {
                             SerialPort.Close();                     // 关闭串口
                             baudRateCB.Enabled = true;
                             portNameCB.Enabled = true;
                             parityCB.Enabled = true;
                             dataBitCB.Enabled = true;
                             stopBitCB.Enabled = true;

                             openSerialPortButton.BackColor = Color.Lime;          // 将串口开关按键的颜色,改为青绿色
                             openSerialPortButton.Text = "打开串口";               // 将串口开关按键的文字改为“打开串口”
                         }
                         catch
                         {
                             MessageBox.Show("关闭串口失败,请检查串口", "错误");   // 弹出错误对话框
                         }
                     }

                         
        }

3、串口接收

VS2022开发串口调试助手

private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    string str = SerialPort.ReadExisting();   // 读取串口接收缓冲区字符串
    receiveTB.AppendText(str + "");             // 在接收文本框中进行显示
}

4、串口发送

 private void sendButton_Click(object sender, EventArgs e)
 {
     if (SerialPort.IsOpen)            // 如果串口设备已经打开了
     {
             char[] str = new char[1];  // 定义一个字符数组,只有一位
             try
             {
                 for (int i = 0; i < sendTextBox.Text.Length; i++)
                 {
                     str[0] = Convert.ToChar(sendTextBox.Text.Substring(i, 1));  // 取待发送文本框中的第i个字符
                     SerialPort.Write(str, 0, 1);                            // 写入串口设备进行发送
                 }
             }
             catch
             {
                 MessageBox.Show("串口字符写入错误!", "错误");   // 弹出发送错误对话框
                 SerialPort.Close();                          // 关闭串口
                 openSerialPortButton.BackColor = Color.Lime;               // 将串口开关按键的颜色,改为青绿色
                 openSerialPortButton.Text = "打开串口";                    // 将串口开关按键的文字改为“打开串口”
             }
     }
 }

5、清除接收和发送窗口

点击对应的按钮,加入代码即可

        private void clearSendButton_Click(object sender, EventArgs e)
        {
            sendTextBox.Text = "";
        }
 
        private void clearReceiveButton_Click(object sender, EventArgs e)
        {
            receiveTB.Text = "";
        }

四、运行测试

VS2022开发串口调试助手

 

转自:VS2022开发上位机流程_vs2022 开发上位机串口号自动填充-CSDN博客

 

 

 

 

 

- THE END -
Tag:

LG5

5月14日08:41

最后修改:2024年5月14日
0

非特殊说明,本博所有文章均为博主原创。