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# DES加密算法中向量的作用详细解析

    C# DES加密算法中向量的作用详细解析 什么是DES加密算法? DES(Data Encryption Standard)是一种对称加密算法,它将明文加密为密文,然后将密文解密为明文。它广泛使用在许多领域,如网络通信、数据库管理和文件加密等。 DES加密算法的密钥长度是56位,可以实现高强度的数据保护。但是,如果攻击者知道了DES加密算法的密钥,他就可以轻…

    C# 2023年6月8日
    00
  • C#泛型实例详解

    C#泛型实例详解 本文将详细讲解C#泛型的使用方法与实例,并通过两个示例进行演示。 什么是泛型 泛型在C#中的作用类似于Java中的模板,它能够将具体的数据类型参数化,使得类或者方法可以适应多种不同类型的数据。 使用泛型还有以下优点: 提高程序的可读性和可维护性,减少重复的代码 编译时类型安全,避免因类型错误导致的运行时异常 避免了装箱和拆箱操作,提高了程序…

    C# 2023年5月15日
    00
  • C# Linq的Skip()方法 – 跳过序列中指定数量的元素并返回剩余元素

    当使用LINQ(C# language integrated query)对集合进行查询时,我们经常需要对查询结果进行排序、筛选、分组和投影等操作。而 Skip() 方法是其中一个很有用的操作之一。 一、Skip()方法的概述 Skip() 方法是用来跳过指定数量的元素并返回剩余元素的 LINQ 方法。Skip() 方法跳过序列中的从头开始的指定数量的元素,…

    C# 2023年4月19日
    00
  • .NET Core 环境变量详解

    一、概述 软件从开发到正式上线,在这个过程中我们会分为多个阶段,通常会有开发、测试、以及上线等。每个阶段对应的环境参数配置我们会使用不同的参数。比如数据库的连接字符串,开发环境一般我们都是连接的测试库。以前这种情况通常是 COPY 两个同名的配置文件来进行处理,然后在本地就使用本地的配置,生产环境就使用生产环境的配置文件,十分麻烦。而 ASP .NET CO…

    C# 2023年4月22日
    00
  • C#如何取硬件标志

    要获取硬件标志,可以使用ManagementClass类和ManagementObjectSearcher类来访问Windows的WMI(Windows Management Instrumentation)服务。WMI是一个Windows管理架构,它允许开发人员查询和修改计算机系统中的配置信息。 以下是获取硬件标志的完整攻略: 1. 引入命名空间 首先需要…

    C# 2023年6月6日
    00
  • Win11正式版 22000.675 更新补丁KB5013943推送(附更新修复内容汇总)

    Win11正式版22000.675更新补丁KB5013943推送 Win11正式版22000.675更新补丁KB5013943已经推送,本文将介绍该更新补丁的修复内容汇总以及如何安装该更新补丁。 更新修复内容汇总 Win11正式版22000.675更新补丁KB5013943主要修复了以下问题: 修复了在某些设备上无法启动Windows Hello的问题。 修…

    C# 2023年5月15日
    00
  • c#压缩字符串的方法

    让我来详细讲解一下c#压缩字符串的方法的完整攻略。 为什么需要压缩字符串? 在实际开发中,传输数据是一个常见的需求。然而,如果数据过大,传输所需的时间和网络带宽都会增加,这对网站的性能会产生不良的影响。为了解决这个问题,压缩字符串是一个好的选择。压缩后的字符串文件体积会变小,传输时所需的时间和带宽也会变小。 c#字符串压缩的方法 1. 使用GZipStrea…

    C# 2023年5月31日
    00
  • NET索引器使用方法实例代码

    下面是关于“NET索引器使用方法实例代码”的详细讲解: 什么是.NET索引器? .NET索引器是一种特殊的类成员,它可以让我们像访问数组一样访问类的实例,或者说是将类实例转换成一个类似于数组的结构。 如何定义.NET索引器? 在C#中,可以使用this关键字定义一个索引器,具体语法如下: public class Class { // 自定义索引器 publ…

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