C#串口连接的读取和发送详解

C#串口连接的读取和发送详解

概述

C#串口连接是一种常见的数据通信方式,利用串口可以使用C#程序与外部硬件设备进行通信,接收外设传送的数据,也可以向外设发送控制指令。本文将详细讲解C#串口连接的读取和发送。

连接串口

在C#程序中连接串口需要进行以下步骤:

  1. 引入System.IO.Ports命名空间

    csharp
    using System.IO.Ports;

  2. 创建串口对象

    csharp
    SerialPort sp = new SerialPort();

  3. 配置串口参数

    csharp
    sp.PortName = "COM1"; // 串口号
    sp.BaudRate = 9600; // 波特率
    sp.DataBits = 8; // 数据位
    sp.StopBits = StopBits.One; // 停止位
    sp.Parity = Parity.None; // 校验位

  4. 打开串口

    csharp
    sp.Open();

  5. 关闭串口

    csharp
    sp.Close();

读取串口数据

进行串口连接后,可以通过如下代码进行串口数据的读取:

if (sp.IsOpen)
{
    string receivedData = sp.ReadLine();
}

其中,sp.ReadLine()方法会一直阻塞直到串口接收到回车符为止。

发送串口数据

进行串口连接后,可以通过如下代码进行串口数据的发送:

if (sp.IsOpen)
{
    sp.WriteLine("Hello World!");
}

其中,sp.WriteLine()方法会自动加上回车符和换行符,可在接收端通过sp.ReadLine()方法读取。

示例说明1

下面是一个简单的示例程序,演示如何进行串口数据读取和发送:

using System;
using System.IO.Ports;

namespace SerialPortDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            SerialPort sp = new SerialPort();
            sp.PortName = "COM1";
            sp.BaudRate = 9600;
            sp.DataBits = 8;
            sp.StopBits = StopBits.One;
            sp.Parity = Parity.None;

            try
            {
                sp.Open();
                Console.WriteLine("串口已打开");

                while (true)
                {
                    if (sp.IsOpen)
                    {
                        string receivedData = sp.ReadLine();
                        Console.WriteLine($"接收到数据:{receivedData}");
                    }

                    Console.Write("请输入要发送的数据:");
                    string sendData = Console.ReadLine().Trim();
                    sp.WriteLine(sendData);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"打开串口时发生错误:{ex.Message}");
            }
            finally
            {
                sp.Close();
                Console.WriteLine("串口已关闭");
            }
        }
    }
}

该程序会不断读取串口接收到的数据,并将读取到的数据输出到控制台。同时,通过控制台输入要发送的数据,并通过串口发送出去。

示例说明2

下面是一个简单的示例程序,演示如何通过按键对外设进行控制:

using System;
using System.IO.Ports;

namespace SerialPortDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            SerialPort sp = new SerialPort();
            sp.PortName = "COM1";
            sp.BaudRate = 9600;
            sp.DataBits = 8;
            sp.StopBits = StopBits.One;
            sp.Parity = Parity.None;

            try
            {
                sp.Open();
                Console.WriteLine("串口已打开");

                while (true)
                {
                    if (sp.IsOpen)
                    {
                        // 接收数据
                        string receivedData = sp.ReadLine();
                        Console.WriteLine($"接收到数据:{receivedData}");
                    }

                    // 检测按键状态
                    if (Console.KeyAvailable)
                    {
                        ConsoleKeyInfo keyInfo = Console.ReadKey(true);

                        if (keyInfo.Key == ConsoleKey.A)
                        {
                            sp.WriteLine("A");
                            Console.WriteLine("已发送 A");
                        }
                        else if (keyInfo.Key == ConsoleKey.B)
                        {
                            sp.WriteLine("B");
                            Console.WriteLine("已发送 B");
                        }
                        else if (keyInfo.Key == ConsoleKey.C)
                        {
                            sp.WriteLine("C");
                            Console.WriteLine("已发送 C");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"打开串口时发生错误:{ex.Message}");
            }
            finally
            {
                sp.Close();
                Console.WriteLine("串口已关闭");
            }
        }
    }
}

该程序会不断读取串口接收到的数据,并将读取到的数据输出到控制台。同时,通过按下ABC键控制向串口发送数据,实现对外设的控制。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#串口连接的读取和发送详解 - Python技术站

(1)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#中efcore-ShardingCore呈现“完美”分表

    我会详细讲解“C#中efcore-ShardingCore呈现‘完美’分表”的完整攻略,并包含两条示例说明。 ShardingCore 什么是ShardingCore? ShardingCore是一个基于EF Core的分表库,它提供了完美的分表功能,欢迎大家去GitHub上了解更多信息。 ShardingCore分表的实现方式 ShardingCore实现…

    C# 2023年5月31日
    00
  • .NET 6 中的 dotnet monitor详细解析

    .NET 6 中的 dotnet monitor 详细解析 dotnet monitor 是 .NET 6 中的一个新特性,它可以帮助我们监视和诊断 .NET 应用程序。在本攻略中,我们将介绍 .NET 6 中的 dotnet monitor 的详细信息,包括如何安装和使用它,以及如何使用它来监视和诊断应用程序。以下是 .NET 6 中的 dotnet mo…

    C# 2023年5月17日
    00
  • C# 7.0中解构功能详解

    C# 7.0中解构功能详解 在C# 7.0中,引入了解构功能。该功能能够让开发人员从复杂的数据结构中分离出各个变量,使得数据变得更加易于操作。本文将全面讲解解构的相关知识,包括什么是解构、如何使用解构、解构的语法和两个示例说明。 什么是解构? 解构是指将一个大型的数据结构破解成一堆小型变量的过程。换言之,当我们需要操作较大、复杂的数据结构时,我们可以通过解构…

    C# 2023年6月1日
    00
  • 比较简单的将数据信息导入wrod文档方案(C# for word)

    完整攻略如下: 标题 比较简单的将数据信息导入Word文档方案(C#forword) 准备工作 安装Microsoft.Office.Interop.Word组件 导入数据信息的步骤 创建Word文档 使用Microsoft.Office.Interop.Word组件创建Word文档,可以使用如下代码: “`csharp // 创建Application对…

    C# 2023年5月15日
    00
  • NancyFx框架检测任务管理器详解

    NancyFx框架检测任务管理器详解 简介 NancyFx框架是一个轻量级的、无痛点的Web框架,它是一个Microsoft .NET平台上的开源项目。它非常简单易用,可以让你快速构建Web应用程序。 在本文中,我们将介绍如何使用NancyFx框架来检测任务管理器,并且详细地讲解这个过程。 步骤 以下是如何使用NancyFx框架来检测任务管理器的详细过程: …

    C# 2023年6月3日
    00
  • .NET Core实现企业微信消息推送

    . 确定需求 首先,我们需要明确要实现的需求是什么,即企业微信消息推送。 #. 了解企业微信 需要了解微信企业号,术语翻译:公共账号(公众号)=企业号,开发文档:https://work.weixin.qq.com/api/doc#12977 #. 了解企业微信API 企业微信API包含了企业微信端所有的操作,例如成员管理、部门管理、消息通知等等,其接口文档…

    C# 2023年6月3日
    00
  • 基于C#代码实现九宫格算法横竖都等于4

    实现横竖相加都等于4的九宫格算法,可以采用回溯算法。以下是实现的完整攻略: 步骤一:定义九宫格模板 首先需要定义九宫格的模板,可以使用二维数组来表示。按照九宫格的规则处理,定义每个格子的坐标。 int[,] template = new int[,] { {0,0}, {0,1}, {0,2}, {1,0}, {1,1}, {1,2}, {2,0}, {2,…

    C# 2023年6月7日
    00
  • ASP.net连接Excel的代码

    ASP.NET连接Excel的代码主要是利用ADO.NET技术来实现的。我们可以使用连接字符串在代码中定义Excel的文件路径。下面是连接Excel文件的完整攻略及示例代码说明: 步骤1:添加Excel连接器 在ASP.NET应用程序中连接Excel,我们需要在该应用程序中添加Excel连接器。 使用NuGet包管理器对项目引用Microsoft.ACE.O…

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