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

C#串口通信

C# 通信编程笔记:串口通信 / TCP 通信 / Socket 通信

一、串口通信 (Serial Port Communication)

1. 基本概念
串口通信是一种逐位(bit)传输数据的通信方式,常用于与**嵌入式设备**、**单片机**、**GPS模块**、**传感器**等硬件通信。

2. 核心类与命名空间
- **命名空间**:`System.IO.Ports`
- **核心类**:`SerialPort`

using System.IO.Ports; // 导入串口命名空间 using System; public class SerialExample { static SerialPort _serialPort; public static void Main() { // 1. 创建 SerialPort 对象 _serialPort = new SerialPort(); // 2. 配置参数(关键词) _serialPort.PortName = "COM3"; // 端口名 _serialPort.BaudRate = 9600; // 波特率 _serialPort.DataBits = 8; // 数据位 _serialPort.StopBits = StopBits.One; // 停止位 _serialPort.Parity = Parity.None; // 校验位 _serialPort.Handshake = Handshake.None; // 3. 注册 DataReceived 事件(接收数据) _serialPort.DataReceived += SerialPort_DataReceived; // 4. 打开串口 _serialPort.Open(); Console.WriteLine("串口已打开,等待数据..."); // 5. 发送数据(字符串或字节数组) _serialPort.WriteLine("Hello Device"); // 或发送字节: _serialPort.Write(new byte[]{0x01,0x02},0,2); Console.ReadKey(); _serialPort.Close(); // 6. 关闭串口 } // 数据接收事件处理方法 private static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { // 读取字符串(按行) string data = _serialPort.ReadLine(); // 直到换行符 // 或读取字节: int bytes = _serialPort.BytesToRead; byte[] buffer = new byte[bytes]; _serialPort.Read(buffer,0,bytes); Console.WriteLine($"接收到: {data}"); } }

### 3. 关键术语解释

| 关键词 | 含义 | 说明 |
|--------|------|------|
| `PortName` | 端口名称 | 如 `COM3`、`COM5`,表示物理或虚拟串口 |
| `BaudRate` | 波特率 | 每秒传输的符号数,常见值:9600、115200 |
| `DataBits` | 数据位 | 每个字节的数据位数,通常为 8 |
| `StopBits` | 停止位 | 标识数据包结束,常为 `StopBits.One` |
| `Parity` | 校验位 | 检错方式:None(无)、Even(偶校验)、Odd(奇校验) |
| `Handshake` | 握手协议 | 流量控制:None、XOnXOff、RequestToSend |
| `Open()` / `Close()` | 打开/关闭串口 | 通信前必须打开,结束后关闭释放资源 |
| `DataReceived` | 数据接收事件 | 当串口收到数据时触发,需在事件处理器中读取数据 |

http://www.jsqmd.com/news/831774/

相关文章:

  • 基于Lepton AI的轻量级RAG系统实践:从向量检索到智能问答
  • 书成紫微动,律定凤凰驯:从海棠山铁哥的经历看,草根创作者也能成为文脉的主角
  • Cyclops:基于Kubernetes的声明式应用管理平台实践指南
  • weclaw爬虫框架解析:从配置化到云原生部署的自动化数据采集
  • 还在手动处理 JSON?这个在线工具已经帮你自动搞定了
  • 1987年4月29日下午13-15点出生性格、运势和命运
  • 前端工程化实战:从代码规范到构建优化的高效开发工具箱
  • Arm Neoverse CMN-700互连架构与CCIX端口聚合技术解析
  • ARM Cortex处理器缓存架构与优化实践
  • PyTorch实战:手把手教你实现DCNv2可变形卷积(附完整代码与避坑指南)
  • 免费解锁英雄联盟国服皮肤:R3nzSkin完整使用指南
  • 实测OpenClaw:从开源AI助手到自主数字队友,这波AI变革真的不一样
  • 国自然冲刺必看:利用Gemini 3.1 Pro这三招,把每一个细节都打磨成加分项
  • anlogic 共享中断驱动和应用层读取
  • 量子优化算法在组合优化问题中的应用与性能分析
  • ARM Cortex-M3开发板环境搭建与固件烧录全攻略
  • Figma界面秒变中文!3分钟完成Figma汉化的完整终极指南
  • 3分钟快速上手:m4s-converter让B站缓存视频秒变MP4格式
  • 从流量黑盒到协同出海:TokUnion 如何用实业逻辑重构跨境服务合规边界
  • 紧急预警:ElevenLabs 2.3.1 SDK存在声纹混淆漏洞!3行Python代码即可触发跨用户语音嫁接(附临时缓解PoC)
  • 大力出奇迹的背后:OpenAI找到了炼丹的物理定律
  • 杀虫灯哪个厂家做得好?这 5 家国内外厂家给出答案
  • 5.11-5.17周报
  • ElevenLabs日文TTS落地全链路:从API鉴权、假名预处理到JIS X 4051合规性校验的5步闭环
  • 书成紫微动,律定凤凰驯:不是玄学迷信,是海棠山铁哥的作品与天道轨迹的现实呼应
  • 上海GEO优化公司硬核优选排行:2026年行业头部梯队实力盘点
  • 前端开发者的瑞士军刀:Front-end-helper工具集设计与实战
  • Lib2Vec:自监督学习在集成电路库单元向量表示中的应用
  • 英文专业论文,可以用维普AIGC检测查AI率吗?
  • 基于LeptonAI的RAG语义搜索实践:从原理到部署调优