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日

相关文章

  • 详解asp.net core重新加载应用配置

    详解Asp.Net Core重新加载应用配置攻略 在本攻略中,我们将深入讲解如何在Asp.Net Core应用程序中重新加载应用配置,并提供两个示例说明。 什么是重新加载应用配置? 重新加载应用配置是指在Asp.Net Core应用程序运行时,动态更改应用程序配置,而无需重新启动应用程序。这可以提高应用程序的灵活性和可维护性。 如何重新加载应用配置? 以下是…

    C# 2023年5月17日
    00
  • ASP.NET中相对路径的使用总结

    下面是 ASP.NET 中相对路径的使用总结的详细攻略。 什么是相对路径? 在 ASP.NET 中,相对路径是指相对于当前文件的路径或相对于应用程序根目录的路径。相对路径可以是一个相对于当前文件的相对路径,或者是一个相对于应用程序根目录的相对路径。在编写 ASP.NET 应用程序时,开发人员通常使用相对路径来引用 Web 应用程序中的资源(如图像、样式表和 …

    C# 2023年6月3日
    00
  • C#从字符串中指定位置移除子字符串的方法

    请允许我给出一份详细的攻略来回答您的问题。 问题分析 在C#中,我们可以轻松地使用String类型的Remove方法来从字符串中删除指定的子字符串。但是有一些时候,我们需要从字符串的指定位置开始移除子字符串,这些子字符串可能会出现多次,或者不止一个。 这就需要我们使用Substring方法来截取字符串,并使用Replace方法来将需要移除的子字符串替换为空字…

    C# 2023年6月8日
    00
  • C#枚举类型和结构体详解

    C#枚举类型和结构体详解 枚举类型 C#中的枚举类型是一种特殊的数据类型,用于定义常量。它可以帮助我们在程序中使用更加直观的符号来代表特定的整数值。枚举类型的定义语法如下: enum 枚举名称 { 常量1, 常量2, … } 其中,枚举名称是标识枚举类型的名称,常量1、常量2等是枚举类型中定义的常量,可以指定特定的值,也可以不指定,如果不指定,则默认从0…

    C# 2023年6月8日
    00
  • C# 操作Excel代码总结

    下面就为您详细讲解“C# 操作Excel代码总结”的完整攻略。 一、前言 在日常开发中,Excel 是我们经常应用的工具。在 C# 中,操作 Excel 也是一个常见的需求。本文就通过两个示例,来总结一下 C# 中操作 Excel 的代码实现过程。 二、基本环境 在操作 Excel 的过程中,我们需要引入以下命名空间: using Microsoft.Off…

    C# 2023年6月7日
    00
  • c# 剔除sql语句’尾巴’的五种方法

    接下来我将为大家详细介绍“C#剔除SQL语句‘尾巴’的五种方法”: 一、问题描述 有时候在编写C#程序时,我们需要动态生成SQL语句。但是在动态生成SQL语句中,由于字符串拼接不当可能会导致语句的末尾出现多余的“AND”、“OR”等关键字,这就需要我们对字符串进行处理,去掉这些多余的关键字,以保证SQL语句的正确性。 下面将介绍五种方法来解决这个问题。 二、…

    C# 2023年5月15日
    00
  • 聊一聊C# 8.0中的await foreach使用

    下面是“聊一聊C#8.0中的await foreach使用”的完整攻略: 什么是await foreach 在C# 8.0中,可以使用异步枚举器(async iterator)和await foreach语法来迭代异步可枚举器(async enumerable)。await foreach把foreach循环与异步编程相结合,可以更简单、更有效地处理异步枚举…

    C# 2023年5月15日
    00
  • Python 图片转数组,二进制互转操作

    让我们来详细讲解一下 “Python 图片转数组, 二进制互转操作” 的攻略。 什么是图片转数组? 在 Python 中,我们通常会将一幅图片转换为数组来进行进一步的处理,比如图像的特征提取、模式识别、人脸识别等。将一张图片转换为数组,我们可以获取每个像素点的 RGB 值、灰度值等信息,从而对图片进行更精细的操作。 图片转数组的操作步骤: 首先,我们需要用 …

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