C# 实现串口通信

一、基本介绍

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

二、简单示例

1. 添加命名空间

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

cs 复制代码
using System;
using System.IO.Ports;

2. 配置串口

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

cs 复制代码
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. 打开串口

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

cs 复制代码
serialPort.Open();

4. 发送数据

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

cs 复制代码
string dataToSend = "Hello, Serial Port!";
serialPort.Write(dataToSend);

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

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

6. 关闭串口

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

cs 复制代码
serialPort.Close();

三、完整示例代码

cs 复制代码
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();
            }
        }
    }
}
相关推荐
myloveasuka4 分钟前
C++进阶:利用作用域解析运算符 :: 突破多态与变量隐藏
开发语言·c++
OxyTheCrack18 分钟前
【C++】详细拆解std::mutex的底层原理
linux·开发语言·c++·笔记
云栖梦泽35 分钟前
易语言开发从入门到精通:进阶篇·网络爬虫与数据采集分析系统深度实战
开发语言
lsx2024061 小时前
XSLT `<sort>` 元素详解
开发语言
_olone1 小时前
牛客每日一题:显生之宙(Java)
java·开发语言·算法·牛客
Sirens.1 小时前
Java 包装类、泛型与类型擦除
java·开发语言·javac
小光学长1 小时前
基于ssm的膳食健康管理系统e6whl4q7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·开发语言·数据库·学习·ssm
无心水1 小时前
【常见错误】2、Java并发编程避坑指南:从加锁失效到死锁,10个案例教你正确使用锁
java·开发语言·python
青衫码上行1 小时前
【项目开发日记 | Java架构】第一天
java·开发语言·spring cloud
至为芯1 小时前
IP2075_34S至为芯支持C口快充的30W功率AC/DC芯片
c语言·开发语言