当前位置: 首页 > article >正文

C# 实现串口通信

一、基本介绍

在C#中实现串口通信,可以使用System.IO.Ports.SerialPort类。这个类提供了串口通信的基本功能,包括打开和关闭串口、发送和接收数据等。

二、简单示例

1. 添加命名空间

首先,确保你的C#文件顶部包含了必要的命名空间:

using System;
using System.IO.Ports;

2. 配置串口

创建一个SerialPort对象,并配置其属性,如端口号、波特率等:

SerialPort serialPort = new SerialPort("COM3"); // 替换为实际的COM端口
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.DataBits = 8;
serialPort.Handshake = Handshake.None;

3. 打开串口

在发送或接收数据之前,需要打开串口:

serialPort.Open();

4. 发送数据

发送数据时,可以使用WriteWriteLine方法:

string dataToSend = "Hello, Serial Port!";
serialPort.Write(dataToSend);

5. 接收数据(等待超时)

为了接收数据并处理超时,可以设置ReadTimeout属性,并在读取数据时使用ReadExistingReadLine方法。这里使用ReadExisting方法作为示例:

6. 关闭串口

完成数据传输后,关闭串口:

serialPort.Close();

三、完整示例代码

using System;
using System.IO.Ports;

class Program
{
    static void Main()
    {
        SerialPort serialPort = new SerialPort("COM3");
        serialPort.BaudRate = 9600;
        serialPort.Parity = Parity.None;
        serialPort.StopBits = StopBits.One;
        serialPort.DataBits = 8;
        serialPort.Handshake = Handshake.None;

        try
        {
            serialPort.Open();
            string dataToSend = "Hello, Serial Port!";
            serialPort.Write(dataToSend);

            serialPort.ReadTimeout = 5000;
            try
            {
                string receivedData = serialPort.ReadExisting();
                Console.WriteLine("Received: " + receivedData);
            }
            catch (TimeoutException)
            {
                Console.WriteLine("Timeout occurred while waiting for data.");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
        finally
        {
            if (serialPort.IsOpen)
            {
                serialPort.Close();
            }
        }
    }
}


http://www.kler.cn/a/464745.html

相关文章:

  • 2025年1月4日蜻蜓q旗舰版st完整开源·包含前后端所有源文件·开源可商用可二开·优雅草科技·优雅草kir|优雅草星星|优雅草银满|优雅草undefined
  • GESP真题 | 2024年12月1级-编程题2《奇数和偶数》及答案(Python版)
  • Mac M2基于MySQL 8.4.3搭建(伪)主从集群
  • 如何安装适配pytorch版本的torchvision
  • Golang的并发编程实战经验
  • LeetCode:106.从中序与后序遍历序列构造二叉树
  • re:Invent 2024: Blueshift 和 VidMob 谈广告和营销中的生成性人工智能应用
  • JavaWeb开发(一)IDEA工具下载、配置、项目创建、Tomcat配置
  • 阿里云人工智能工程师ACA认证免费课程学习笔记
  • 【C#】校验和计算
  • Unreal虚幻引擎使用遇到的问题记录
  • 4.为什么java不支持多重继承?
  • STM32-笔记21-脉冲计数
  • 鸿蒙OS的API进行交互
  • Science Robotics让软机器人“活”得更久的3D打印!
  • XSS讲解
  • AndroidStudio运行报错Invalid keystore format解决办法
  • PHP框架+gatewayworker实现在线1对1聊天--聊天界面布局+创建websocket连接(5)
  • JVM对象创建过程
  • LeetCode 3146 两个字符串的排列差
  • 车路云网图安全风险复杂交织
  • 分布式、集群、Mac M1装Ubuntu、Mac扩容
  • 每天40分玩转Django:Django实战 - 社交网络开发
  • 招银网路Java后端一面,难度有点大!
  • 多光谱图像的处理和分析方法有哪些?
  • 应用层协议(Https)(超详解)