【源码开源】C#桌面应用开发:串口调试助手

c#桌面应用开发

1、环境搭建和工程创建:参照番茄定时器项目

工程创建参照

2、界面布局设计

在这里插入图片描述

3、具体功能函数

(1)端口扫描:
    private void btn_com_scan_Click(object sender, EventArgs e)
    {
        //端口号扫描
        ReflashPortToComboBox(serialPort1, cb_select_com);
    }
(2)初始化界面数据设置
    private void Form1_Load(object sender, EventArgs e)
    {
        //第一次加载的时候,进行端口号扫描
        ReflashPortToComboBox(serialPort1, cb_select_com);
        cb_select_com.SelectedItem = "COM1";
        cb_select_baudrate.SelectedItem = "115200";
        cb_select_data_bits.SelectedItem = "8";
        cb_select_check_bit.SelectedItem = "None";
        cb_select_stop_bit.SelectedItem = "1";

        btn_open_com.Enabled = true;
        btn_close_com.Enabled = false;
        //默认使用 ascii模式
        rbtn_recv_ascii.Checked = true;
        rbtn_send_ascii.Checked = true;
    }
(3)串口接收:
 private void ReceiveData(object sender, SerialDataReceivedEventArgs e)
 {
     string content = serialPort1.ReadExisting();        //从串口中读取输入流,返回string
     
     ShowData(content);
 }
 private void ShowData(string text)
 {
     string receiveText = text;
     
     //更新接收数据计数
     recv_cntr += (UInt32)receiveText.Length;
     lab_recv_cntr.Text = recv_cntr.ToString();

     textBox_debug.AppendText("接收到了"+ receiveText.Length.ToString()+ "个数据: "+ text+"\r\n");

     if (rbtn_recv_hex.Checked)
     {//按HEX模式 展示接收到的内容 
         byte[] recData = System.Text.Encoding.Default.GetBytes(receiveText);// 将接受到的字符串据转化成数组;  

         foreach (byte str in recData)
         {
             textBox_recv.AppendText(string.Format("{0:X2} ", str));
         }
     }
     else
     {//按ASCII模式 展示接收到的内容
         
         textBox_recv.AppendText(text);                   //将收到的字符串追加展示出来
     }

 }
(4)按钮事件:
private void btn_open_com_Click(object sender, EventArgs e)
{
    Int32 ibaudrate = Convert.ToInt32(cb_select_baudrate.SelectedItem.ToString());
    serialPort1.PortName = cb_select_com.SelectedItem.ToString();
    serialPort1.BaudRate = ibaudrate;
    serialPort1.Parity = (System.IO.Ports.Parity)Enum.Parse(typeof(System.IO.Ports.Parity), cb_select_check_bit.Text);
    serialPort1.StopBits = (System.IO.Ports.StopBits)Enum.Parse(typeof(System.IO.Ports.StopBits), cb_select_stop_bit.Text);
    serialPort1.DataBits = Convert.ToInt16(cb_select_data_bits.Text);

    //添加串口事件处理
    serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(ReceiveData);


    try
    {
        serialPort1.Open();
        btn_open_com.Enabled = false;
        btn_close_com.Enabled = true;
    }
    catch (Exception ex)
    {
        MessageBox.Show("串口打开失败"+ex, "Error");
    }

4、完整工程代码开源

源码打包上传在CSDN,本意是不需要使用积分免费下载,如果下载时遇到收积分,联系我私发即可

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 06:32:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 06:32:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 06:32:01       58 阅读
  4. Python语言-面向对象

    2024-07-12 06:32:01       69 阅读

热门阅读

  1. vue2修改组件样式

    2024-07-12 06:32:01       22 阅读
  2. MongoDB:基础语句及练习

    2024-07-12 06:32:01       26 阅读
  3. Xcode本地化全攻略:打造多语言应用的秘诀

    2024-07-12 06:32:01       25 阅读
  4. C++ const 关键字详解

    2024-07-12 06:32:01       27 阅读
  5. 东方博宜1627 - 暑期的旅游计划(2)

    2024-07-12 06:32:01       26 阅读
  6. 防火、防盗、防windows defender

    2024-07-12 06:32:01       27 阅读
  7. Linux 之前的 Unix 桌面沉浮启示录

    2024-07-12 06:32:01       29 阅读
  8. 从 Github 安装 R packages 不完全指南

    2024-07-12 06:32:01       23 阅读
  9. 【面试题】MySQL(第四篇)

    2024-07-12 06:32:01       26 阅读
  10. C++学习笔记

    2024-07-12 06:32:01       27 阅读
  11. Spring AOP 使用方式

    2024-07-12 06:32:01       29 阅读
  12. filex容错模块(掉电安全)

    2024-07-12 06:32:01       27 阅读