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

c#串口通讯

作者:纵马天下   发布日期:2026-07-05   浏览:61

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 (UnauthorizedAccessException)
        {
            Console.WriteLine("无法访问指定的串口。请检查权限或确保串口未被其他程序占用。");
        }
        catch (IOException)
        {
            Console.WriteLine("发生 I/O 错误。请检查串口配置。");
        }
        finally
        {
            if (serialPort.IsOpen)
            {
                // 关闭串口
                serialPort.Close();
                Console.WriteLine("串口已关闭。");
            }
        }
    }

    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)、校验位(无)、数据位(8)和停止位(1)。

  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. 异常处理: 使用 try-catch-finally 块来捕获可能发生的异常,例如权限问题或 I/O 错误,并确保在程序结束前关闭串口。

  6. 关闭串口

    if (serialPort.IsOpen)
    {
        serialPort.Close();
        Console.WriteLine("串口已关闭。");
    }

    在程序结束时,确保串口被正确关闭。

上一篇:c# nlog

下一篇:c#获取时间戳

大家都在看

c# 二进制

c# 创建目录

c# socket服务端连接多个客户端

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

c# invoke方法

.net和c#

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

Laravel 中文站