Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# 串口

作者:残缺的不完美   发布日期:2026-03-29   浏览:59

using System;
using System.IO.Ports;

class Program
{
    static void Main()
    {
        // 创建一个串口对象
        SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

        try
        {
            // 打开串口
            serialPort.Open();

            // 设置数据接收事件处理程序
            serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

            Console.WriteLine("按任意键退出...");
            Console.ReadKey();
        }
        catch (Exception ex)
        {
            Console.WriteLine("发生错误: " + ex.Message);
        }
        finally
        {
            if (serialPort.IsOpen)
            {
                // 关闭串口
                serialPort.Close();
            }
        }
    }

    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        // 获取串口对象
        SerialPort sp = (SerialPort)sender;

        // 读取接收到的数据
        string indata = sp.ReadExisting();
        Console.WriteLine("接收到数据: " + indata);
    }
}

解释说明

  1. 创建串口对象

    SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

    这里我们创建了一个 SerialPort 对象,并指定了串口号(如 COM1)、波特率(如 9600)、校验位、数据位和停止位。

  2. 打开串口

    serialPort.Open();

    使用 Open() 方法打开串口,使其可以进行通信。

  3. 设置数据接收事件处理程序

    serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

    当串口接收到数据时,会触发 DataReceived 事件。我们为该事件注册了一个处理方法 DataReceivedHandler

  4. 接收数据并处理

    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Console.WriteLine("接收到数据: " + indata);
    }

    DataReceivedHandler 方法中,我们从串口中读取接收到的数据,并将其打印到控制台。

  5. 异常处理和资源清理

    catch (Exception ex)
    {
        Console.WriteLine("发生错误: " + ex.Message);
    }
    finally
    {
        if (serialPort.IsOpen)
        {
            serialPort.Close();
        }
    }

    使用 try-catch-finally 块来捕获可能发生的异常,并确保在程序结束前关闭串口以释放资源。

上一篇:c# grpc

下一篇:c# 生成二维码

大家都在看

c# 二进制

c# 创建目录

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站