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#交错数组知识点分析 什么是交错数组 交错数组(Jagged Array),是指一个数组中的元素也是一个数组,可以类比于一个“数组的数组”。 交错数组最大特点就是可以先定义第一维的长度,然后再分别为第二维的每个数组定义长度,这样可以建立不规则的二维数组。 交错数组的定义 在C#中,定义交错数组的方法与二维数组类似,只需要在定义时将第一维的数组长度确定即可。…

    C# 2023年6月6日
    00
  • javascript入门之数组[新手必看]

    JavaScript入门之数组[新手必看] 简介 数组(Array)在JavaScript中是一种常用数据类型,能够轻松地存储和访问多个元素。本文章将介绍如何定义、访问、操作以及常用的数组方法。 定义数组 定义数组的方式有多种,其中最常用的方式是使用方括号([])来包裹数组元素,每个元素之间使用逗号(,)隔开。如下所示: // 定义一个包含3个元素的数组 v…

    C# 2023年6月7日
    00
  • C# 创建报表过程详解

    标题:C# 创建报表过程详解 1. 介绍 在C#中,我们可以使用ReportViewer控件来创建报表。ReportViewer控件是Visual Studio自带的,使用它可以在Web和Winform应用程序中显示报表。本文将介绍如何使用ReportViewer控件创建报表。 2. 步骤 2.1 安装ReportViewer控件 在Visual Studi…

    C# 2023年6月2日
    00
  • 带着问题读CLR via C#(笔记二)类型基础

    首先,你需要明确CLRviaC#是一本深入CLR和C#的书籍,针对读者提出了一系列问题,通过深入讲解各种类型的基础知识来解答这些问题。因此,想要完整掌握CLRviaC#,需要掌握以下几个步骤: 1. 阅读笔记前先阅读CLRviaC#原著 CLRviaC#是一本非常优秀的书籍,但它也是非常深入的一本书籍。为了能够真正理解笔记,你需要先阅读原著,并掌握其中的主要…

    C# 2023年5月15日
    00
  • C#中的委托数据类型简介

    C#中的委托数据类型简介 什么是委托? 在 C# 编程语言中,委托(delegate)是一种引用类型,可以用于引用具有特定签名和返回类型的方法。 委托将方法作为第一个参数或参数之一传递,并且可以减少编程工作量,因为无需编写相同的代码,只需要传递方法即可。 通过使用委托,可以根据具有相同签名的多个方法创建一个通用方法,从而使得代码更加的灵活和易于管理。 委托的…

    C# 2023年5月31日
    00
  • JS实现问卷星自动填问卷脚本并在两秒自动提交功能

    JS实现问卷星自动填问卷脚本并在两秒自动提交功能需求主要包括两个部分:一是自动填写问卷;二是在两秒钟内自动提交问卷。 自动填写问卷 首先,我们要查看问卷星的页面源代码,找到需要填写的问题的输入框的相关信息,可以使用Chrome开发者工具或者Firefox的Firebug等浏览器扩展工具。 然后,在代码中用JavaScript代码获取到填写的问题的输入框元素,…

    C# 2023年6月6日
    00
  • c# 数据标注与数据校验

    以下是“c# 数据标注与数据校验”的完整攻略: 什么是数据标注与数据校验 在C#中,数据标注和数据校验是用来确保输入数据的有效性的两个重要概念。数据标注可以将各种标记应用于数据,使得我们可以在数据类中定义该数据的元数据。而数据校验可以帮助保证数据符合特定的规则和限制条件,从而消除了由错误数据引起的问题。 数据标注详解 什么是数据标注 数据标注是一种将标记应用…

    C# 2023年5月31日
    00
  • Node.js实现Excel转JSON

    下面是“Node.js实现Excel转JSON”的完整攻略。 一、安装依赖模块 在开始使用Node.js进行Excel转JSON之前,需要安装一些必要的模块。打开命令行工具,输入以下命令: npm install xlsx 这将会安装一个名为xlsx的模块,该模块可以让Node.js读取和写入Excel文件。 二、实现Excel转JSON Step 1:读取…

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