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日

相关文章

  • C/C++/C#

    C/C++/C# 入门攻略 C、C++ 和 C# 都是广泛使用的编程语言,被用于各种用途。下面是一个逐步学习这些语言的攻略。 1. 学习 C 语言 如果您是一个新手程序员,那么学习 C 语言会是一个不错的开始。C 语言是一种结构化编程语言,许多其他语言都从 C 语言中继承了部分特性。下面是学习 C 语言的一些步骤: 1.1 安装 C 语言开发环境 首先需要在…

    C# 2023年5月15日
    00
  • C#使用DirectX.DirectSound播放语音

    下面我就详细讲解一下C#使用DirectX.DirectSound播放语音的完整攻略。 1.准备工作 在开始使用DirectX.DirectSound播放语音之前,需要先安装Microsoft DirectX SDK,并将其添加到工程引用中。 2.创建DirectSound实例 使用DirectX.DirectSound播放语音的第一步是创建DirectSo…

    C# 2023年6月6日
    00
  • 详解.NET Core使用Quartz执行调度任务进阶

    在 .NET Core 中,可以使用 Quartz.NET 来执行调度任务。Quartz.NET 是一个开源的作业调度框架,可以用于在 .NET 应用程序中执行定时任务、计划任务等。以下是详解 .NET Core 使用 Quartz 执行调度任务进阶的完整攻略: 步骤一:安装 Quartz.NET 在 .NET Core 项目中,可以使用 NuGet 包管理…

    C# 2023年5月17日
    00
  • C#判断一个字符串是否包含另一个字符串的方法

    本文将为大家介绍C#中判断一个字符串是否包含另一个字符串的方法。 方法一:使用Contains()方法 使用C#的字符串类型中的Contains()方法,可以判断一个字符串是否包含其他某个字符串。该方法返回一个布尔值,如果被查询字符串包含在主字符串中,返回true;否则返回false。 string str1 = "hello world&quot…

    C# 2023年5月15日
    00
  • C# Socket编程实现简单的局域网聊天器的示例代码

    下面我将为您详细讲解如何使用C# Socket编程实现局域网聊天器的示例代码。 1. 简介 Socket编程是指通过套接字(socket)实现网络通信的编程,可以实现多种类型的网络通信,包括TCP、UDP等。在局域网中,可以使用Socket编程实现简单的聊天器,实现用户之间的即时通信。 2. Socket编程基础知识 在开始开发局域网聊天器之前,需要了解So…

    C# 2023年5月31日
    00
  • C#判断某程序是否运行的方法

    为了判断某程序是否运行,可以使用C#中的System.Diagnostics命名空间下的Process类和相关方法。具体步骤如下: 引用System.Diagnostics命名空间 在代码文件顶部使用using关键字引用System.Diagnostics命名空间,代码如下: using System.Diagnostics; 构造Process类对象 使用…

    C# 2023年6月7日
    00
  • C#实现AddRange为数组添加多个元素的方法

    “AddRange”方法可以用于在C#数组中添加多个元素。下面是实现“AddRange”方法的步骤: 步骤1:创建一个数组 首先,你需要创建一个数组来存储要添加的元素。下面是创建一个包含3个元素的字符串数组的示例代码: string[] myArray = new string[] { "apple", "banana&quot…

    C# 2023年6月1日
    00
  • efcore性能调优

    性能调优——EFCore调优 按下硬件、网络不提,我们单表从程序层面对系统的性能进行优化,翻来覆去无外乎三个方面 缓存 异步 sql本片文章,我们针对.net core web项目的ef core框架进行性能优化。 1. EF Core框架已经本地缓存机制memorycache,所以我们访问一个接口,二次访问的性能相比首次会提升一大截 2.尽可能的通过主键查…

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