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日

相关文章

  • Unity实现轮盘方式的按钮滚动效果

    下面是实现“Unity实现轮盘方式的按钮滚动效果”的攻略。 步骤一:创建UI布局 首先,我们需要创建一个包含多个按钮的UI布局。具体操作步骤如下: 在Unity编辑器中,打开场景视图,并点击“Create”->“UI”->“Canvas”创建一个UI画布。 在画布中,创建一个Panel对象,用来存放按钮。 在Panel对象中添加一个Vertica…

    C# 2023年6月3日
    00
  • C#在WinForm中使用WebKit传递js对象实现与网页交互的方法

    下面是C#在WinForm中使用WebKit传递js对象实现与网页交互的方法的完整攻略。 先决条件 为了能够使用WebKit,我们需要安装WebKit .NET控件。WebKit可以在GitHub 安装,安装过程简单快速,直接解压缩即可。 集成WebKit到WinForm 将 WebKitBrowser.dll和 WebKit.Interop.dll两个文件…

    C# 2023年5月31日
    00
  • 在C#和MySQL中存取中文字符时避免乱码的方法

    对于在C#和MySQL中存取中文字符避免乱码的方法,我可以提供以下完整攻略: 1. 设置MySQL字符集 MySQL默认使用的字符集是latin1,这种字符集不支持中文,所以需要设置MySQL字符集为支持中文的utf8字符集。在连接MySQL数据库之前,需要执行以下语句设置字符集: SET NAMES ‘utf8’; // 设置字符集为utf8 这条语句可以…

    C# 2023年5月15日
    00
  • C#中Arraylist的sort函数用法实例分析

    C#中ArrayList的Sort函数用法实例分析 简介 C#中的 ArrayList 是一个动态数组,可以动态地增加或删除数组的元素,不需要提前设置数组的大小。同时,ArrayList 还提供了 Sort 方法来进行元素的排序。Sort 方法是利用快排来完成排序操作的。接下来,我们将详细讲解 C# 中 ArrayList 的 Sort 函数的使用方法。 S…

    C# 2023年6月7日
    00
  • C#实现将类的内容写成JSON格式字符串的方法

    将类的内容写成JSON格式字符串是一种常见的数据序列化方式。在C#语言中,我们可以使用Json.NET库来实现将类的内容写成JSON格式字符串。以下是实现该方法的具体步骤: 安装Json.NET 在Visual Studio中打开项目解决方案,右键点击项目名称,选择“管理NuGet程序包”。在弹出的“NuGet程序包管理器”窗口中搜索“Newtonsoft.…

    C# 2023年5月31日
    00
  • c# webapi 配置swagger的方法

    接下来我将为你详细讲解如何配置Swagger来生成C# Web API文档的步骤和示例。 配置Swagger的方法 步骤一:安装Swagger 首先,你需要通过NuGet安装以下两个软件包:Swashbuckle.AspNetCore和Swashbuckle.AspNetCore.Annotations。 安装方式如下: Install-Package Sw…

    C# 2023年5月15日
    00
  • 超详细讲解Java异常

    超详细讲解Java异常 在Java编程过程中,异常处理是非常重要的一部分。异常是程序运行过程中的非期望事件,如输入数据错误、网络中断等,如果不进行处理,程序将可能会崩溃、出现严重错误,甚至导致系统崩溃。因此,Java提供了一套异常机制,使程序在遇到异常时能够进行妥善的处理,保证程序的稳定性和可靠性。 异常的分类 Java中的异常可以分为两类:Checked …

    C# 2023年5月15日
    00
  • C# 没有动态的数组,可以用arraylist或list取代

    首先,需要说明的是C#中的数组属于静态数组,即在声明数组时就必须确定数组的长度,而不能在程序运行时再动态更改数组的大小。但是,C#提供了一些其他的数据结构,例如ArrayList和List,可以实现动态数组的功能。下面是使用ArrayList和List的具体说明: 使用ArrayList ArrayList是可以动态调整存储数据的容器,通过Add方法可以向其…

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