C#中的串口通信SerialPort

前言

大家好,我是阿辉。

今天这篇文章带大家学习下C#中的串口通讯。在日常的开发工作中,如果工作内容是CS方向的同学应该很容易接触到串口通讯方面的业务需求。那么也就很容易想到C#中SerialPort类,它就是专门来处理串口通讯相关的。

了解什么是串口通讯

串口通讯是指外设和计算机间通过数据信号线,地线,控制线等,按位进行传输数据的一种通讯方式。

这种通讯方式使用的数据线少,在远距离通信中可以节约成本,但其传输速度比并行通讯慢。

串口是计算机上一种非常通用的设备通讯协议。大多数计算机包含两个基于RS-232的串口。

串口也是仪器仪表设备通用的通讯协议,很多GPIB兼容的设备也带有RS-232口,同时串口通信协议也可以用于获取远程设备采集的数据。

串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时也可将接受的串行数据流转换为并行的数据字符供给CPU的器件。

一般完成这种功能的电路,我们称为串行接口电路。

串行按位(bit)发送和接收字节,尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。

这里提一句,我们笔记本的USB口,它不是串口,它是所谓的U口,我们的串口如果需要插入到USB口,那么就需要一个RS-232转U口的转换器才可以。

这里需要注意下,一般我们的硬件工程师都会在自己的硬件设备都内置这个小转换设备,很方便。

C#中的串口通讯SerialPort

从.NET Framework 2.0开始,微软就默认提供了System.IO.Ports.SerialPort类,根据SerialPort类提供的简单操作步骤,可以很容易的完成串口的信息收发程序,从特定的串口中接收到数据也可以进行数据的发送。

关于SerialPort类的应用也很容易,可以根据微软官方的介绍进行使用。

  • 配置SerialPort的名称,端口号,波特率等。
  • 打开/关闭串口
  • 接收/发送数据
SerialPort mySerialPort = new SerialPort("COM2");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity=Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.Non;

mySerialPort.DataReceived += new SerialDataReceivedEvenHandler(DataReceive_Method);

mySerialPort.Open();

mySerialPort.Close();

发送数据

using System.IO.Ports;
private static void SendSampleData()
{
    SerialPort port = new SerialPort(
        "COM1", 9600, Parity.None, 8, StopBits.One);
    port.Open();
    port.Write("Hello World");
    port.Write(new byte[] { 0x0A, 0xE2, 0xFF }, 0, 3);
    port.Close();
}
namespace SerialPortExample
{
    class SerialPortProgram
    {        
        private SerialPort port = new SerialPort("COM1",
          9600, Parity.None, 8, StopBits.One);

        [STAThread]
        static void Main(string[] args)
        {            
            new SerialPortProgram();
        }

        private SerialPortProgram()
        {
            Console.WriteLine("Incoming Data:");            
            port.DataReceived += new
              SerialDataReceivedEventHandler(port_DataReceived);            
            port.Open();         
            Application.Run();
        }

        private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {            
            Console.WriteLine(port.ReadExisting());
        }
    }

日常串口的使用多数情况是和线程进行的,一般都是在子线程中做这些耗时和重复的工作,在主线程或者界面只进行数据的展示处理即可。

在子线程的处理过程中需要特别处理串口的打开和关闭,要及时关闭串口的状态,防止出现无法捕获的异常错误。

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发 谢谢。

  • 13
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 串口通信是一种常见的设备间通信方式,它可以让计算机和其他设备之间进行数据传输。SerialPort类是.NET Framework提供的一个串口控制类,可以方便地管理串口数据传输。 使用SerialPort类可以轻松打开、关闭、读取和写入数据到串口。在使用SerialPort类之前,需要先设置串口的参数,如波特率、数据位数、停止位数等,以确保数据传输的正确性。 在进行数据读取时,SerialPort类提供了多种读取方法,例如Read、ReadExisting和ReadLine,可以根据数据的类型和格式自由选择。同时,在数据传输期间,SerialPort类也会定期检查接收缓冲区,以便及时发现并处理传输的错误或丢失数据等异常情况。 总之,SerialPort类是.NET Framework一款非常实用的串口控制类,可以为串口通信的应用程序提供强大的支持。无论是在工控领域、自动化设备还是其他需要串口通信的场合,SerialPort类都是不可或缺的重要组成部分。 ### 回答2: 串口通信是一种常见的数据通信方式,它可以通过串口将数据发送和接收到另一个设备上。在C#,通过SerialPort类可以实现串口通信SerialPort类提供了许多属性和方法,可以方便地设置串口通信参数,打开和关闭串口,发送和接收数据等。例如,可以使用BaudRate属性设置波特率,使用Parity属性设置校验位,使用DataBits属性设置数据位,使用StopBits属性设置停止位等。 在发送数据时,可以使用Write方法向串口发送数据。可以发送字符串、字节数组等数据类型。在接收数据时,可以使用DataReceived事件处理程序处理接收到的数据。通过设置ReadExisting()方法来读取串口的全部数据,或者使用Read方法设置从串口读取的字节数。 需要注意的是,使用SerialPort类进行串口通信时,需要确保串口的正确连接和设置。如果不正确设置或者连接不良,可能会导致数据无法正常发送和接收。 总之,SerialPort类是C#常用的一个类,它可以帮助我们非常方便地进行串口通信,并在许多领域得到广泛应用,如机器人控制、工控设备控制、数据采集等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy阿辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值