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

c#桌面应用开发

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

工程创建参照

2、界面布局设计

3、具体功能函数

(1)端口扫描:
c# 复制代码
    private void btn_com_scan_Click(object sender, EventArgs e)
    {
        //端口号扫描
        ReflashPortToComboBox(serialPort1, cb_select_com);
    }
(2)初始化界面数据设置
c# 复制代码
    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)串口接收:
c# 复制代码
 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)按钮事件:
c# 复制代码
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,本意是不需要使用积分免费下载,如果下载时遇到收积分,联系我私发即可

相关推荐
Swift社区2 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht2 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht2 小时前
Swift闭包的本质
开发语言·ios·swift
小吴同学·2 小时前
.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】
c#·.netcore·.net core
wjs20242 小时前
Swift 数组
开发语言
stm 学习ing3 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc4 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe5 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin5 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python