【源码开源】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,本意是不需要使用积分免费下载,如果下载时遇到收积分,联系我私发即可

相关推荐
白杨尚青12 分钟前
C++入门篇(十一):string(中)——容量与增删改查:一篇吃透所有常用接口(万字详解)
java·开发语言·c++
老歌老听老掉牙13 分钟前
旅行商问题:从数学模型到 Python 实战
开发语言·python
CC数分14 分钟前
数据可视化入门:用Python把一堆数字变成一张图
开发语言·python·信息可视化·数据分析
java_nnnn14 分钟前
JavaEE进阶-JavaScript初识
开发语言·前端·javascript·java-ee·ecmascript
海天鹰30 分钟前
C#入门:在cmd显示字符
c#
YYYing.32 分钟前
【设计模式系列 (五) 】原型模式
开发语言·后端·设计模式·原型模式·c/c++
重生之小比特35 分钟前
【C++进阶】哈希表实现
开发语言·c++·哈希
m0_380743871 小时前
VisualStudio中OpenCV的创建与配置使用小结
开发语言·c++
凉茶钱1 小时前
【C++】动态内存管理完整解析:从内存划分到 new delete 底层原理
c语言·开发语言·c++·内存管理·动态内存
小七在进步1 小时前
类和对象(五)
java·开发语言·算法