精华内容
下载资源
问答
  • C#串口调试助手 源码

    2019-03-14 17:13:04
    C#串口调试助手 源码;支持数据保存。 可以定时发送数据,对于初学者有很大的帮助。。。。
  • c# 串口调试助手源码

    2015-03-04 14:05:38
    c#源码 自己写的可以实现串口收发(包括16进制)功能还不完善,未添加文本的导入导出功能,仅作为程序备份
  • C#串口调试助手源码

    2015-09-24 15:44:48
    C#串口调试助手源码,有注释,可用,可二次开发。
  • 基于WPF及C#串口调试助手,操作简单,界面清新。基于.Net4.6.1,实现基本的串口通信功能,重要的是无广告,无毒。
  • C#开发的串口调试助手,代码部分大多数已经注释;测试串口可以通过安装Configure Virtual Serial Port Driver来虚拟串口号测试。
  • 串口调试助手C#代码,串口调试助手C#代码,
  • C# 串口调试助手源码

    千次阅读 2015-09-24 20:34:00
    本方法,禁用跨进程错误(做法不太好,但是对于单片机出身的人来说,好理解,能用就...5.发送单行,可增加自动换行(方便用于一些串口指令,很多指令都带回车,每次写回车太麻烦) 效果演示: 主代码参考: ...

    本方法,禁用跨进程错误(做法不太好,但是对于单片机出身的人来说,好理解,能用就行)。

    基本功能:

    1.点串口号的下拉菜单自动当前检索设备管理器的COM

    2.发送模式可选,hex和string两种

    3.接收显示模式,hex和string两种

    4.发送多行数据

    5.发送单行,可增加自动换行(方便用于一些串口指令,很多指令都带回车,每次写回车太麻烦)

    效果演示:

    主代码参考:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.IO.Ports;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace SerialTools
    {
        public partial class Form1 : Form
        {
            private long RxCount = 0;
            public Form1()
            {
                InitializeComponent();
                System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
            }
    
            #region 初始化Form
            private void Form1_Load(object sender, EventArgs e)
            {
                pictureBox1.Image = Properties.Resources.off;
    
                ////查询当前有用的串口号
                //SerialPort.GetPortNames();
                
                //string[] ports = SerialPort.GetPortNames();
                //foreach (string port in ports)
                //{
                //    cb_com.Items.Add(port);
                //}
    
    
                serialPort1.BaudRate = 9600;
                serialPort1.DataBits = 8;
                serialPort1.StopBits = (StopBits)1;
    
                //迭代所有的波特率
                string[] tab_Baud = new string[] { "110", "300", "600", "1200", "2400", "4800", "9600", "14400", "19200", "38400", "56000", "57600", "115200", "128000", "256000" };
                foreach (string str in tab_Baud)
                {
                    cb_Baud.Items.Add(str);
                }
    
                //迭代所有的数据位
                string[] tab_data = new string[] { "5", "6", "7", "8" };
                foreach (string str in tab_data)
                {
                    cb_DataBits.Items.Add(str);
                }
    
                //迭代所有的停止位
                string[] tab_stop = new string[] { "1", "2" };
                foreach (string str in tab_stop)
                {
                    cb_StopBits.Items.Add(str);
                }
    
                cb_Baud.Text = "9600";
                cb_DataBits.Text = "8";
                cb_StopBits.Text = "1";
    
                serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);//添加事件
    
            }
            #endregion
    
            #region 接收数据
            private void port_DataReceived(object sender,SerialDataReceivedEventArgs e) {
                if (!checkBox_receiveMode.Checked)//没有勾选hex时候,按照字符串方式读取
                {
                    string str = serialPort1.ReadExisting();//字符串方式读
                    textBox_receive.AppendText(str);    //添加内容
                    RxCount += str.Length;
                    
                }
                else {
                    byte data;
                    data = (byte)serialPort1.ReadByte();
                    string str = Convert.ToString(data, 16).ToUpper();
                    textBox_receive.AppendText((str.Length == 1 ? "0" + str : str)+" ");//空位补"0"
                    RxCount += str.Length;
                }
                label_ReceiveCount.Text = RxCount.ToString();
            }
            #endregion
    
            #region 清空接收计数器和接收显示区域
            private void button4_Click(object sender, EventArgs e)
            {
                textBox_receive.Text = "";
                RxCount = 0;
                label_ReceiveCount.Text = RxCount.ToString();
            }
            #endregion
    
            #region 打开/关闭串口
            private void button1_Click(object sender, EventArgs e)
            {
                if (!serialPort1.IsOpen)
                {
                    try
                    {
                        serialPort1.PortName = cb_com.Text;
                        serialPort1.BaudRate = Convert.ToInt32(cb_Baud.Text);
                        serialPort1.DataBits = Convert.ToInt32(cb_DataBits.Text);
                        serialPort1.StopBits = (StopBits)Convert.ToInt32(cb_StopBits.Text);
                        serialPort1.Open();
                    }
                    catch
                    {
                        MessageBox.Show("端口打开失败", "错误");
    
                    }
                }
                else {
                    try
                    {
                        serialPort1.Close();
                    }
                    catch
                    {
                        MessageBox.Show("端口关闭失败", "错误");
    
                    }
                }
    
                changeButtonTextAndPicture();
    
            }
            #endregion
    
            #region 根据串口状态切换按键名称和指示灯图片
            private void changeButtonTextAndPicture()
            {
                if (serialPort1.IsOpen)
                {
                    pictureBox1.Image = Properties.Resources.on;
                    button1.Text = "关闭串口";
                }
                else
                {
                    pictureBox1.Image = Properties.Resources.off;
                    button1.Text = "打开串口";
                }
            }
            #endregion
    
            #region 多行发送
            private void button2_Click(object sender, EventArgs e)
            {
                byte[] Data = new byte[1];
                if (serialPort1.IsOpen)
                {
                    if(textBox_send1.Text != "")
                    {
                        if(!checkBox_sendMode.Checked)//发送模式是字符模式
                        {
                            try
                            {
                                serialPort1.Write(textBox_send1.Text);
                            }
                            catch
                            {
                                MessageBox.Show("端口发送失败,系统将关闭当前串口", "错误");
                                serialPort1.Close();//关闭串口
                            }
                        }
                        else
                        {
                            if(textBox_send1.Text.Length%2 == 0)//偶数个数字
                            {
                                for(int i = 0; i < textBox_send1.Text.Length / 2; i++)
                                {
                                    try
                                    {
                                        Data[0] = Convert.ToByte(textBox_send1.Text.Substring(i * 2, 2), 16);
                                    }
                                    catch 
                                    {
                                        MessageBox.Show("请核对输入的十六进制数据格式", "错误");
    
                                    }
                                    
                                    
                                    try
                                    {
                                        serialPort1.Write(Data, 0, 1);
                                    }
                                    catch 
                                    {
                                        MessageBox.Show("端口发送失败,系统将关闭当前串口", "错误");
                                        serialPort1.Close();//关闭串口
                                    }
                                }
                            }
                            else
                            {
                                MessageBox.Show("请输入偶数个16进制数字", "错误");
                            }
                        }
                    }
                }
            }
            #endregion
    
            #region 单行发送
            private void button3_Click(object sender, EventArgs e)
            {
                byte[] Data = new byte[1];
                if (serialPort1.IsOpen)
                {
                    if (textBox_send2.Text != "")
                    {
                        if (!checkBox_sendMode.Checked)//发送模式是字符模式
                        {
                            try
                            {
                                serialPort1.Write(textBox_send2.Text);
                                if (checkBox_newLine.Checked)
                                    serialPort1.Write("\r\n");                               
                            }
                            catch
                            {
                                MessageBox.Show("端口发送失败,系统将关闭当前串口", "错误");
                                serialPort1.Close();//关闭串口
                            }
                        }
                        else
                        {
                            if (textBox_send2.Text.Length % 2 == 0)//偶数个数字
                            {
                                for (int i = 0; i < textBox_send2.Text.Length / 2; i++)
                                {
                                    try
                                    {
                                        Data[0] = Convert.ToByte(textBox_send2.Text.Substring(i * 2, 2), 16);
                                    }
                                    catch
                                    {
                                        MessageBox.Show("请核对输入的十六进制数据格式", "错误");
    
                                    }
    
    
                                    try
                                    {
                                        serialPort1.Write(Data, 0, 1);
                                        if (checkBox_newLine.Checked)
                                            serialPort1.Write("\r\n");
                                            
                                    }
                                    catch
                                    {
                                        MessageBox.Show("端口发送失败,系统将关闭当前串口", "错误");
                                        serialPort1.Close();//关闭串口
                                    }
                                }
                            }
                            else
                            {
                                MessageBox.Show("请输入偶数个16进制数字", "错误");
                            }
                        }
                    }
                }
            }
            #endregion
    
            #region 切换选项时候修改串口属性
            private void cb_com_SelectedIndexChanged(object sender, EventArgs e)
            {
                try
                {
                    if (serialPort1.IsOpen)
                    {
                        serialPort1.Close();
                        serialPort1.PortName = cb_com.Text;
                        serialPort1.Open();
                    }
                    else
                    {
                        serialPort1.PortName = cb_com.Text;
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    changeButtonTextAndPicture();
                }
            }
    
            private void cb_Baud_SelectedIndexChanged(object sender, EventArgs e)
            {
                serialPort1.BaudRate = int.Parse(cb_Baud.Text);
            }
    
            private void cb_DataBits_SelectedIndexChanged(object sender, EventArgs e)
            {
                serialPort1.DataBits = int.Parse(cb_DataBits.Text);
            }
    
            private void cb_StopBits_SelectedIndexChanged(object sender, EventArgs e)
            {
                serialPort1.StopBits = (StopBits)int.Parse(cb_StopBits.Text);
            }
            #endregion
    
            #region com的下拉菜单展开时候自动搜索当前设备管理器
            private void cb_com_DropDown(object sender, EventArgs e)
            {
                cb_com.Items.Clear();       //清空
                //查询当前有用的串口号
                SerialPort.GetPortNames();
    
                string[] ports = SerialPort.GetPortNames();
                foreach (string port in ports)
                {
                    cb_com.Items.Add(port);
                }
            }
            #endregion
        }
    }

     

    工程源码下载(使用VS2015编译):

    http://yunpan.cn/cHLTVtXLL6UYs  访问密码 bf4e

    转载于:https://www.cnblogs.com/Mysterious/p/4836459.html

    展开全文
  • C# 串口调试源码

    2018-11-18 22:39:15
    VS2010 C# 实例文件,绝对可用。串口调试界面,适合于新手学习。
  • 【实例简介】Wince6.0+C#串口调试助手.rar快速掌握Serialport串口(Hex,ASC)方式的发送和接收的机制;属于难得版本,值得重点收藏和借鉴,特设置最高分!C#语言开发,已经经过ARM11-Ok6410开发板Wince环境测试OK;...

    【实例简介】

    Wince6.0+C#串口调试助手.rar

    快速掌握Serialport串口(Hex,ASC)方式的发送和接收的机制;

    属于难得版本,值得重点收藏和借鉴,特设置最高分!

    C#语言开发,已经经过ARM11-Ok6410开发板Wince环境测试OK;

    【实例截图】

    【核心代码】

    Wince6.0C串口调试助手

    └── Wince6.0+C#串口调试助手

    ├── common.cs

    ├── config.ico

    ├── Form1.cs

    ├── Form1.Designer.cs

    ├── Form1.resx

    ├── Form2.cs

    ├── Form2.Designer.cs

    ├── Form2.resx

    ├── obj

    │   ├── Debug

    │   │   ├── TempPE

    │   │   │   └── Properties.Resources.Designer.cs.dll

    │   │   ├── 串口调试助手.csproj.GenerateResource.Cache

    │   │   ├── 串口调试助手.Form1.resources

    │   │   ├── 串口调试助手.Form2.resources

    │   │   └── 串口调试助手.Properties.Resources.resources

    │   └── 串口调试助手.csproj.FileListAbsolute.txt

    ├── Program.cs

    ├── Properties

    │   ├── AssemblyInfo.cs

    │   ├── Resources.Designer.cs

    │   └── Resources.resx

    ├── 串口调试助手.csproj

    ├── 串口调试助手.csproj.user

    ├── 串口调试助手.sln

    └── 串口调试助手.suo

    5 directories, 22 files

    展开全文
  • C# 实现在串口工具源代码,包括打开串口,发送消息,接收消息处理
  • 串口调试助手C#基于SerialPort类串口通讯程序,可以实时实现多种数据绘图!网上很少有程序有这个功能!
  • 串口调试助手C#源代码,支持端口各个参数的初始化,支持自动发送,支持十六进制和十进制的发送与接收
  • 经典的串口收发调试工具,实现了利用C# SerialPort串口控件进行(二进制,十进制,十六进制)数据的收发和显示处理; 已经经过测试调试,可用!-----No.2
  • C#串口调试工具源码,C#串口调试助手,C#源码
  • 既然差不多知道什么是上位机与下位机,那么,我们做到小喇叭的要求:就得写个上位机,我自己也是学了下C#,用来开发上位机还是可以的,开发环境用visual studio 2015,微软的软件真的是很简单,之前看到有人问为什么...
  • C#串口助手源码(向串口发送数据以及接收串口数据,支持发送文件)
  • C#版本的网络调试助手源码,带串口调试功能和网络调试功能
  • 串口调试助手(EXE以及C#源码串口调试助手是在实际工程应用中,根据实际的普遍的需求而开发的串口调试工具。该助手具体可以实现的功能如下,代码风格合理仅供学习者仿效学习,如果需要串口调试助手的某项功能也...
  • C#串口助手源码,C#串口调试助手,C#源码.zip.zip
  • C#串口调试助手代码

    千次阅读 2017-03-12 20:28:40
    namespace 串口调试助手 { public partial class Form1 : Form { public Form1 () { InitializeComponent(); System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false ; } ...
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO.Ports;
    
    namespace 串口调试助手
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                for (int i = 0; i < 10; i++)
                {
                    comboBox1.Items.Add("COM" + i.ToString());
                }
                comboBox1.Text = "COM1";//串口号默认值
                comboBox2.Text = "4800";//波特率默认值
                /***************非常重要*****************/
                serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
            }
            private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                if (!radioButton3.Checked)//如果接受模式为字符模式
                {
                    string str = serialPort1.ReadExisting();//字符串方式读
                    textBox1.AppendText(str);//添加内容
                }
                else//如果接受模式为数值模式
                {
                    byte data;
                    data = (byte)serialPort1.ReadByte();//此处需要强制类型转换,将(int)类型数据转换为(byte类型数据,不必考虑是否丢失数据
                    string str = Convert.ToString(data, 16).ToUpper();//转换为大写十六进制字符串
                    textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");//空位补"0"
                    // 上一句等同于
                    // if (str.Length == 1)
                    // {
                    //    str = "0" + str;
                    // }
                    // else
                    // {
                    //    str = str;
                    // } 
                    // textBox1.AppendText("0x" + str);
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    serialPort1.PortName = comboBox1.Text;
                    serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text,10);//十进制数据转换
                    serialPort1.Open();
                    button1.Enabled = false;//打开串口按钮不可用
                    button2.Enabled = true;//关闭串口
                }
                catch
                {
                    MessageBox.Show("端口错误,请检查串口!", "错误");
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                try
                {
                    serialPort1.Close();
                    button1.Enabled = true;//打开串口按钮可用
                    button2.Enabled = false;//关闭串口按钮不可用
                }
                catch(Exception err)//一般情况下关闭串口不会出错,所以不需要加处理程序
                {
    
                }
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                byte[] Data = new byte[1];
                if (serialPort1.IsOpen)//判断串口是否打开,如果打开执行下一步操作
                {
                    if (textBox2.Text != "")
                    {
    
                        if(!radioButton1.Checked)//如果发送模式是字符模式
                        {
                            try
                            {
                                serialPort1.WriteLine(textBox2.Text);
                            }
                            catch (Exception err)
                            {
                                MessageBox.Show("串口数据写入错误", "错误");
                                serialPort1.Close();
                                button1.Enabled = true;//打开串口按钮可用
                                button2.Enabled = false;//关闭串口按钮不可用
                            }
                        }
                        else
                        {
                            for (int i = 0 ; i < (textBox2.Text.Length - textBox2.Text.Length % 2) / 2; i++)//取余3运算作用是防止用户输入的字符为奇数个
                            {
                                Data[0] = Convert.ToByte(textBox2.Text.Substring(i * 2, 2), 16);
                                serialPort1.Write(Data, 0, 1);//循环发送(如果输入字符位0A0BB,则只发送0A,0B)
                            }
                            if(textBox2.Text.Length % 2 != 0)
                            {
                                //等同于下句
                                //Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - textBox2.Text.Length % 2, textBox2.Text.Length % 2),16);
                                Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - 1, 1), 16);//单独发送B(0B)
                                serialPort1.Write(Data,0,1);
                            }
                        }
                    }
                }
            }
        }
    }
    
    展开全文
  • C#WinForm串口调试工具源码
  • 欢迎反馈建议,其中包含了串口类、XML类、数据库类等功能。程序中使用线程处理数据接收用以解决SerialPort类死锁问题。
  • VS2013 C# 串口调试助手

    2018-10-02 13:16:48
    VS2013 C# 串口调试助手 WPF界面全部用XAML语言手打,基本都是Grid布局,VS很强大,编程很舒服便捷,源码有很详细的注释。希望对各位客户有用。
  • C# 串口调试助手源码第二版

    热门讨论 2009-06-23 17:58:36
    麻雀虽小该有的也算有了,希望能对你有用!谢谢!
  • C#串口调试助手_VS2005(附源码)

    热门讨论 2012-03-29 21:21:50
    C#开发的串口调试助手,和网上的窗口调试助手功能类似,开发环境VS2005 .net2.0
  • C#简单串口调试助手

    2020-03-17 23:01:00
    一款简单的串口调试助手,,带有工程文件,有源码,可二次开发。,可扫描串口 自设端口、波特率、发送和接收展示数据
  • C#串口调试小助手 这一个较完善,可以正常调试串口收发信息,关键是有源码,
  • 4、串口打开以后,再次选择串口或者修改串口配置参数,程序会自动关闭串口,修改参数,然后再自动打开串口 5、支持接收转向文件,此时后面关于接收的设置也还是有效的 6、支持显示接收时间,显示十六进制,显示发送...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 460
精华内容 184
关键字:

c#串口调试助手源码

c# 订阅