C# 串行通信serialPort的使用

 更新时间:2024年03月31日 11:56:26   作者:emplace_back  
本文主要介绍了C# 串行通信serialPort的使用,它提供了一组属性和方法,用于配置串行端口、读取和写入数据,以及处理串行通信中的事件,感兴趣的可以了解一下

System.IO.Ports.SerialPort 类是C#中用于串行通信的类。它提供了一组属性和方法,用于配置串行端口、读取和写入数据,以及处理串行通信中的事件。

初始化SerialPort对象

首先,你需要创建一个SerialPort对象,并设置其端口名称(PortName)、波特率(BaudRate)等属性。

using System.IO.Ports;  
  
SerialPort serialPort = new SerialPort();  
serialPort.PortName = "COM1"; // 串行端口名称  
serialPort.BaudRate = 9600; // 波特率  
serialPort.DataBits = 8; // 数据位  
serialPort.Parity = Parity.None; // 校验位  
serialPort.StopBits = StopBits.One; // 停止位  
serialPort.Handshake = Handshake.None; // 控制协议

打开和关闭串行端口

在配置好SerialPort对象后,你需要打开串行端口以开始通信。

serialPort.Open();  
// ... 执行串行通信操作 ...  
serialPort.Close(); // 完成后关闭串行端口

读取和写入数据

使用SerialPort对象的ReadLineReadExistingReadByte等方法读取数据,使用WriteLineWrite等方法写入数据。

// 写入数据  
serialPort.WriteLine("Hello, serial port!");  
  
// 读取数据  
string data = serialPort.ReadLine(); // 读取一行数据,直到遇到换行符  
// 或者  
string existingData = serialPort.ReadExisting(); // 读取所有可用数据

事件处理

SerialPort类提供了几个事件,允许你在特定情况下执行代码,例如当接收到数据时。

serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);  
  
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)  
{  
    SerialPort sp = (SerialPort)sender;  
    string indata = sp.ReadExisting();  
    Console.WriteLine("Data Received:");  
    Console.Write(indata);  
}

在这个例子中,当接收到数据时,DataReceivedHandler方法会被调用,并读取并打印接收到的数据。

注意事项

确保你有正确的串行端口名称,以及正确的配置参数(波特率、数据位、校验位、停止位等)。
在多线程环境中,处理串行端口事件时要小心线程安全问题。
不要忘记在完成串行通信后关闭串行端口。
异常处理
在使用SerialPort时,应该准备好处理可能发生的异常,例如当尝试打开不存在的端口或发生I/O错误时。

try  
{  
    serialPort.Open();  
    // ... 串行通信操作 ...  
}  
catch (Exception ex)  
{  
    Console.WriteLine("Error: " + ex.Message);  
}  
finally  
{  
    if (serialPort.IsOpen)  
    {  
        serialPort.Close();  
    }  
}

这个try-catch-finally块确保了即使发生异常,串行端口也会被正确关闭。

到此这篇关于C# 串行通信serialPort的使用的文章就介绍到这了,更多相关C# serialPort内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中各种计时器用法小结

    C#中各种计时器用法小结

    这篇文章主要介绍了C#中各种计时器用法,结合实例形式总结分析了C#中各种常用时间相关类实现计时器功能的操作技巧,需要的朋友可以参考下
    2017-06-06
  • C#使用Excel动态函数实现生成依赖列表

    C#使用Excel动态函数实现生成依赖列表

    这篇文章主要为大家详细介绍了如何在C#中使用 Excel 动态函数生成依赖列表,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • c# 进程之间的线程同步

    c# 进程之间的线程同步

    这篇文章主要介绍了c# 进程之间的线程同步,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2020-10-10
  • C#实现把指定数据写入串口

    C#实现把指定数据写入串口

    这篇文章主要介绍了C#实现把指定数据写入串口,直接给出示例代码,需要的朋友可以参考下
    2015-06-06
  • C#中async/await之线程上下文工作原理

    C#中async/await之线程上下文工作原理

    这篇文章主要为大家介绍了C#中async/await之线程上下文工作原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2023-05-05
  • C#中Linq的去重方式Distinct详解

    C#中Linq的去重方式Distinct详解

    本文详细讲解了C#中Linq的去重方式Distinct,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • NumberToUpper数字转中文详解

    NumberToUpper数字转中文详解

    本文介绍NumberToUpper数字转中文的方法,大家参考使用吧
    2013-12-12
  • C#精确到纳秒级别的计时器类实现代码

    C#精确到纳秒级别的计时器类实现代码

    这篇文章主要介绍了C#精确到纳秒级别的计时器类,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • C#中使用Join与GroupJoin将两个集合进行关联与分组

    C#中使用Join与GroupJoin将两个集合进行关联与分组

    这篇文章主要介绍了C#中使用Join与GroupJoin将两个集合进行关联与分组,文中分别对Join和GroupJoin的用法进行详细说明,需要的朋友可以参考下
    2017-12-12
  • Unity编辑器选择器工具类Selection常用函数示例详解

    Unity编辑器选择器工具类Selection常用函数示例详解

    这篇文章主要为大家介绍了Unity编辑器选择器工具类Selection常用函数示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08

最新评论