C# 使用串口通信通获取数据

在 C# 中,使用串口通信通常通过 System.IO.Ports 命名空间中的 SerialPort 类来实现。SerialPort 类提供了多种方法来读取串口数据,每种方法在使用场景和功能上有所不同

1. Read 方法

Read 方法从输入缓冲区读取指定数量的字节,并将它们写入指定的数组中。

public int Read(byte[] buffer, int offset, int count)
  • 参数
    • buffer:用于存储读取数据的字节数组。
    • offset:从 buffer 中的哪个位置开始写入数据。
    • count:要读取的字节数。
  • 返回值:实际读取的字节数。

2. ReadByte 方法

ReadByte 方法从输入缓冲区读取一个字节。

public int ReadByte()
  • 返回值:读取的字节,如果已到达流的末尾,则返回 -1。

3. ReadChar 方法

ReadChar 方法从输入缓冲区读取一个字符。

public int ReadChar()
  • 返回值:读取的字符,如果已到达流的末尾,则返回 -1。

4. ReadLine 方法

ReadLine 方法从输入缓冲区读取一行数据,直到遇到换行符(\n)或文件结束。

public string ReadLine()
  • 返回值:读取的字符串,如果已到达流的末尾,则返回 null

5. ReadTo 方法

ReadTo 方法从输入缓冲区读取数据,直到遇到指定的字符串。

public string ReadTo(string value)
  • 参数value:终止读取的字符串。
  • 返回值:读取的字符串,如果已到达流的末尾,则返回 null

6. ReadExisting 方法

ReadExisting 方法从输入缓冲区读取所有可用的数据。

public string ReadExisting()
  • 返回值:读取的字符串。

使用示例

以下是一个简单的示例,展示了如何使用 SerialPort 类的不同读取方法:

using System;
using System.IO.Ports;

public class SerialPortExample
{
    public static void Main()
    {
        // 创建 SerialPort 实例
        using (SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One))
        {
            // 打开串口
            serialPort.Open();

            // 读取数据
            try
            {
                // 读取一行数据
                string line = serialPort.ReadLine();
                Console.WriteLine("读取到的行: " + line);

                // 读取指定数量的字节
                byte[] buffer = new byte[10];
                int bytesRead = serialPort.Read(buffer, 0, buffer.Length);
                Console.WriteLine("读取到的字节数: " + bytesRead);
                Console.WriteLine("读取到的字节: " + BitConverter.ToString(buffer, 0, bytesRead));

                // 读取一个字节
                int byteValue = serialPort.ReadByte();
                Console.WriteLine("读取到的字节: " + byteValue);

                // 读取所有可用的数据
                string existingData = serialPort.ReadExisting();
                Console.WriteLine("读取到的所有数据: " + existingData);
            }
            catch (TimeoutException)
            {
                Console.WriteLine("读取超时");
            }
            finally
            {
                // 关闭串口
                serialPort.Close();
            }
        }
    }
}

总结

  • Read:适用于需要读取指定数量字节的场景。
  • ReadByte:适用于需要读取单个字节的场景。
  • ReadChar:适用于需要读取单个字符的场景。
  • ReadLine:适用于需要读取一行数据的场景。
  • ReadTo:适用于需要读取到指定字符串的场景。
  • ReadExisting:适用于需要读取所有可用数据的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BarretWang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值