C#实现简单串口通信

为了实现串口通信,首先需要掌握C#中的串口通信相关类和方法。常用的类有SerialPort和SerialDataReceivedEventArgs,常用的方法有Open和Write等。下面分步骤讲解实现串口通信的完整攻略。

1. 新建C#控制台应用程序

首先,打开Visual Studio,新建一个C#控制台应用程序。选择“新建项目”-->“Visual C#”-->“控制台应用程序”,然后填写应用程序名称和保存路径,点击“创建”按钮。

2. 添加串口通讯类

在项目中添加一个类,用于串口通讯。右键单击项目工程文件,选择“添加”-->“新建项”,在弹出的添加新项对话框中,选择“类”,命名为“SerialCommunication.cs”。

3. 编写串口通讯类

在SerialCommunication.cs文件中,首先需要引用System.IO.Ports命名空间,并添加一个SerialPort对象,在类的构造函数中初始化串口通讯相关的参数,比如波特率(BaudRate)、数据位(DataBits)、停止位(StopBits)等等。然后,需要编写串口开启(Open)和关闭(Close)方法,以及数据发送(Write)和数据接收(DataReceived)方法。

using System;
using System.IO.Ports;

class SerialCommunication
{
    private SerialPort serialPort = new SerialPort();

    public SerialCommunication(string portName)
    {
        serialPort.PortName = portName;
        serialPort.BaudRate = 9600;
        serialPort.DataBits = 8;
        serialPort.StopBits = StopBits.One;
        serialPort.Parity = Parity.None;
        serialPort.ReadTimeout = 500;
        serialPort.WriteTimeout = 500;
        serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
    }

    public void Open()
    {
        try 
        {
            serialPort.Open();
            Console.WriteLine("串口已开启");
        } 
        catch (Exception ex) 
        {
            Console.WriteLine(ex.Message);
        } 
    }

    public void Close()
    {
        try 
        {
            serialPort.Close();
            Console.WriteLine("串口已关闭");
        } 
        catch (Exception ex) 
        {
            Console.WriteLine(ex.Message);
        } 
    }

    public void Write(string data)
    {
        if (serialPort.IsOpen)
        {
            try
            {
                serialPort.WriteLine(data);
            }
            catch (Exception ex) 
            {
                Console.WriteLine(ex.Message);
            }
        }
        else 
        {
            Console.WriteLine("串口未连接");
        }
    }

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

在以上代码中,当串口接收到数据时,会触发DataReceived事件,并调用DataReceivedHandler方法来处理接收到的数据。

4. 使用串口通讯类

在控制台应用程序的Main函数中,实例化SerialCommunication类,然后调用Open方法打开串口,调用Write方法发送数据,最后调用Close方法关闭串口。示例代码如下:

static void Main(string[] args)
{
    SerialCommunication serialCommunication = new SerialCommunication("COM1");
    serialCommunication.Open();
    serialCommunication.Write("Hello World");
    serialCommunication.Close();

    Console.ReadLine();
}

5. 示例说明

下面给出两个示例,演示如何在C#中实现串口通信。

示例一:单片机发送数据到电脑

在单片机代码中,使用UART向电脑端口发送数据。C#代码打开串口,接收单片机发送的数据,然后在控制台上输出。

// 单片机代码
void main()
{
    while(1)
    {
        UART_Write_String("Hello World\n");
        delay_ms(1000);
    }
}


// C#代码
static void Main(string[] args)
{
    SerialCommunication serialCommunication = new SerialCommunication("COM1");
    serialCommunication.Open();
    Console.ReadLine();
    serialCommunication.Close();

    Console.ReadLine();
}

private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    string data = sp.ReadExisting();
    Console.WriteLine("Received data: " + data);
}

示例二:电脑发送数据到单片机

在C#代码中,打开串口,向电脑端口发送数据。单片机代码使用UART接收数据,并打印到串口调试器上。

// 单片机代码
void main()
{
    while(1)
    {
        char buf[128];
        int len = UART_Read(buf, sizeof(buf));
        if(len > 0)
        {
            UART_Write(buf, len);
        }
        delay_ms(100);
    }
}


// C#代码
static void Main(string[] args)
{
    SerialCommunication serialCommunication = new SerialCommunication("COM1");
    serialCommunication.Open();
    serialCommunication.Write("Hello World");
    serialCommunication.Close();

    Console.ReadLine();
}

以上就是使用C#实现简单串口通讯的完整攻略,通过以上步骤,你就可以实现基础的串口通讯功能了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现简单串口通信 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 使用.net core3.0 正式版创建Winform程序的方法(图文)

    下面是详细的攻略: 确保环境 在开始创建Winform程序之前,需要先确保本地计算机上已经安装了.net core3.0正式版本。如果尚未安装,请先访问Microsoft官网下载安装包并完成安装。为确保已经安装成功,请在控制台中输入以下命令: dotnet –version 如果程序返回了版本号,表示已经安装成功。 创建Winform应用程序 接下来,可以…

    C# 2023年6月3日
    00
  • C#操作注册表之Registry类

    有关于C#操作注册表的基本操作,我们可以使用C#自带的Registry类来实现。Registry类封装了创建、读取、修改、删除注册表中的键值等基本操作,并且提供了多个静态方法和属性,方便我们能够快速的实现对注册表的操作。 一、Registry类的命名空间和引用 在使用Registry类的时候,需要在代码文件中引用Registry类所在的命名空间。具体命名空间…

    C# 2023年6月7日
    00
  • c# 动态加载dll文件,并实现调用其中的方法(推荐)

    C# 动态加载 DLL 文件并实现调用其中的方法是一个在编写 C# 程序时常见的需求,下面将介绍如何实现此功能。 1. 加载 dll 文件 调用 DLL 文件中的方法,需要先将 DLL 加载到当前进程中。有两种方式可以加载 DLL 文件: 1.1. 使用 Assembly 类加载 DLL using System.Reflection; // 加载 mydl…

    C# 2023年6月7日
    00
  • C# Linq的Any()方法 – 确定序列中是否存在元素

    Any() 方法是 C# LINQ 中的一种用于判断集合中是否存在任何元素满足给定条件的方法。此方法的语法如下: bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate); 其中,source 是需要检查的集合,pr…

    C# 2023年4月19日
    00
  • 基于c#实现的九九乘法表(简单实例)

    下面是详细讲解“基于c#实现的九九乘法表”的攻略: 1. 确定需求 我们需要使用C#编程语言编写一个程序,可以输出九九乘法表。九九乘法表的样式如下所示: 1*1=1 1*2=2 1*3=3 … 1*8=8 1*9=9 2*1=2 2*2=4 2*3=6 … 2*8=16 2*9=18 3*1=3 3*2=6 3*3=9 … 3*8=24 3*9=…

    C# 2023年6月6日
    00
  • 基于C#实现简单离线注册码生成与验证

    前言本篇攻略将介绍如何使用C#语言实现一个简单的离线注册码生成器与验证器,可适用于需要对软件进行授权的情形,如商业软件、企业内部软件等。首先我们将讲解注册码的生成方法,然后是注册码的验证方法,最后我们会给出完整的示例说明,希望这篇攻略对大家有所帮助。 一、注册码生成器的实现注册码生成器主要包括两个功能:生成唯一的机器码和根据机器码生成注册码。下面是代码实现:…

    C# 2023年6月6日
    00
  • asp.net UpdaeProgress的简单用法

    下面是 “ASP.NET UpdateProgress的简单用法”的完整攻略: 什么是ASP.NET UpdateProgress? ASP.NET UpdateProgress 允许在触发异步操作时显示进度指示器。 我们可以使用 UpdatePanel 控件或自己的自定义异步回发来合并 UpdateProgress 控件。 如何实现ASP.NET Upda…

    C# 2023年6月3日
    00
  • C#高效反射调用方法类实例详解

    C#高效反射调用方法类实例详解 反射是C#中非常强大的特性之一,它允许程序在运行时动态地分析、查询和修改程序元素。其中包括类、方法、属性、字段等等。使用反射可以实现很多高级的功能,比如动态加载程序集、动态调用方法、获取和修改类的状态等等。 本文将详细讲解如何使用C#高效地进行反射调用方法类实例的操作。主要涵盖以下内容: 反射基础 在使用反射之前,我们需要先了…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部