首页 > 编程语言 >C#串口通讯实战:基础功能及高效数据传输

C#串口通讯实战:基础功能及高效数据传输

时间:2024-01-17 10:23:48浏览次数:26  
标签:通讯 C# serialPort 串口 发送数据 数据传输 SerialPort

 

概述:C#串口通讯示例展示了基本功能,包括打开/关闭串口、设置属性、发送和接收数据。通过SerialPort类实现,可根据需求扩展更复杂的串口通讯应用。

最近有项目应用到串口通讯,网上找到一个C#写的调试工具,如下图:

 

需要的文末可下载。下面我再讲一下串口通讯的基本应用:

在C#中进行串口通讯通常涉及到一些基本的功能,如打开串口、发送数据、接收数据等。以下是一个简单的例子,演示了C#中串口通讯的基本功能。

常用功能:

  1. 打开和关闭串口: 使用SerialPort类的Open()和Close()方法。
  2. 设置串口属性: 包括波特率、数据位、停止位、校验位等。
  3. 发送数据: 使用Write()方法发送数据到串口。
  4. 接收数据: 通过事件处理程序处理DataReceived事件,使用ReadExisting()等方法读取接收到的数据。

示例源代码:

using System;
using System.IO.Ports;

class SerialCommunicationExample
{
    static SerialPort serialPort;

    static void Main()
    {
        // 初始化串口对象
        serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

        // 注册DataReceived事件处理程序
        serialPort.DataReceived += SerialPort_DataReceived;

        try
        {
            // 打开串口
            serialPort.Open();

            // 发送数据
            SendData("Hello, Serial!");

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
        finally
        {
            // 关闭串口
            if (serialPort.IsOpen)
            {
                serialPort.Close();
            }
        }
    }

    // 发送数据到串口
    static void SendData(string data)
    {
        if (serialPort.IsOpen)
        {
            serialPort.Write(data);
            Console.WriteLine("Data sent: " + data);
        }
    }

    // 串口数据接收事件处理程序
    static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        if (serialPort.IsOpen)
        {
            // 读取接收到的数据
            string receivedData = serialPort.ReadExisting();
            Console.WriteLine("Data received: " + receivedData);
        }
    }
}

这个例子创建了一个简单的串口通讯应用。通过实例化SerialPort对象,设置串口属性,注册事件处理程序,打开串口并发送、接收数据,展示了串口通讯的基本流程。在实际应用中,需要根据具体需求进一步处理异常、优化性能等。

 

标签:通讯,C#,serialPort,串口,发送数据,数据传输,SerialPort
From: https://www.cnblogs.com/hanbing81868164/p/17969239

相关文章

  • Kubernetes集群中 Pod 中报pthread_create failed: Resource temporarily unavailable
    查看containerd日志显示如下信息OCIruntimeexecfailed:execfailed:unabletostartcontainerprocess:readinit-p:connectionresetbypeer:unknown"查看Pod日志中显示pthread_createfailed:Resourcetemporarilyunavailable通过监控系统查看节点的进程数t......
  • jenkins启动报错:Failed Loading global config
    jenkins启动报错:FailedLoadingglobalconfig 问题起因:想在构建项目中使用复选框(ExtendedChoiceParameter),需要安装ExtendedChoiceParameter插件,但是因为版本过低的原因,导致插件无法正常安装。然后根据提示,就在jenkins的web页面进行了自动升级。但是在升级过程中......
  • 神经网络优化篇:详解动量梯度下降法(Gradient descent with Momentum)
    动量梯度下降法还有一种算法叫做Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新的权重。例如,如果要优化成本函数,函数形状如图,红点代表最小值的位置,假设从这里(蓝色点)开始梯度下降法,如果......
  • 前缀和求解(c++)
    数组ana1a2...an前缀和Si=a1+a2+...+ai①如何求②作用//一维数组前缀和的计算#include<iostream>usingnamespacestd;constintN=100010;inta[N],s[N];intn,m;intmain(){scanf("%d%d",&n,&m);for(inti=1;i<=n;......
  • pg数据库和Oracle语法哪里有差异
    PostgreSQL(简称为PG)和Oracle是两种不同的关系型数据库管理系统,它们在语法和特性方面存在一些差异。以下是一些常见的差异:数据类型:两者支持的数据类型有一些差异,例如PostgreSQL支持数组类型和范围类型,而Oracle不支持。字符串引号:在PostgreSQL中,可以使用单引号或双引号表示字......
  • C#微信公众号HIS预约挂号系统源码
    微信公众号预约挂号系统、支付宝小程序预约挂号系统主要是让自费、医保患者在手机上就能实现就医全过程,实时预约挂号、自费、医保结算,同时还可以查询检查检验报告等就诊信息,真正实现了让信息“多跑路”,让群众“少跑腿”。系统与HIS对接,通过医院微信公众号,患者用身份证注册以后,可以......
  • 解析 terminating with uncaught exception of type std::bad_cast: std::bad_cast
    解析"terminatingwithuncaughtexceptionoftypestd::bad_cast:std::bad_cast"简介在C++编程中,我们有时会遇到异常(exception),这些异常可能是由于程序运行时出现意外情况而引发的错误。其中,"terminatingwithuncaughtexceptionoftypestd::bad_cast:std::bad_cast"是一种......
  • CNCF大使预测:2024年云原生面临倦怠、离职及云成本精简
    本文由CNCF大使EricD.Schabell撰写,预测2024年云原生领域最可能发生的3大变化,并与其对云原生可观测性领域的见解结合。 关注云原生倦怠毫无疑问,在2023年中云原生可观测性领域的头号话题是倦怠。这涉及到每一个角色,从SREs、DevOps、工程师、开发人员到管理企业内云原生......
  • C语言爬虫程序编写的爬取APP通用模板
    互联网的飞快发展,尤其是手机终端业务的发展,让越来越多的事情都能通过手机来完成,电脑大部分的功能也都能通过手机实现,今天我就用C语言写一个手机APP类爬虫教程,方便后期拓展APP爬虫业务。而且这个模板是通用的适合各种APP爬虫,下面跟着我看下具体的代码吧。下面就是我给大家提供一个基......
  • 如何阅读芯片手册,裸机驱动开发步骤以及纯汇编实现点灯,汇编结合c点灯,c实现点灯
    一.如何阅读芯片手册(datasheet)     作为嵌入式学习者,如何去阅读芯片手册是重中之重。不管是什么芯片手册,在写的怎么天花乱坠,它的本质也就是使用说明书。     可是问题来了,它Y的是本英语的说明书,但是英语不好的友友们不要过于焦虑,我们现在有了很好的翻译软件......