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块确保了即使发生异常,串行端口也会被正确关闭。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 11:58:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 11:58:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 11:58:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 11:58:02       20 阅读

热门阅读

  1. Python 变量、数据类型、数据类型的转换介绍

    2024-03-31 11:58:02       15 阅读
  2. zookeeper--znode数据结构详解

    2024-03-31 11:58:02       15 阅读
  3. 大AI与小AI盈利点在哪里?AI积木与图谱视角

    2024-03-31 11:58:02       14 阅读
  4. TYPORA笔记

    2024-03-31 11:58:02       18 阅读
  5. Concul 配置中心 微服务的配置

    2024-03-31 11:58:02       16 阅读
  6. python 报错问题汇总

    2024-03-31 11:58:02       21 阅读
  7. K8S 运维管理

    2024-03-31 11:58:02       16 阅读
  8. 基于UDP的可靠传输协议QUIC协议

    2024-03-31 11:58:02       14 阅读
  9. AtCoder_ABC130_Rectangle Cutting

    2024-03-31 11:58:02       13 阅读
  10. 什么是计算机视觉?计算机视觉:从基础到前沿

    2024-03-31 11:58:02       14 阅读