当前位置: 首页 > 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.zskr.cn/news/1299659.html

相关文章:

  • 基于Lepton AI的轻量级RAG系统实践:从向量检索到智能问答
  • 中小团队如何利用taotoken实现多模型api的统一管理与访问控制
  • 还在手动处理 JSON?这个在线工具已经帮你自动搞定了
  • 如何通过Python快速接入Taotoken并调用多模型API完成代码生成任务
  • ARM Cortex处理器缓存架构与优化实践
  • RL78/G13单片机实现流水呼吸灯:软件PWM与状态机编程实践
  • 实测OpenClaw:从开源AI助手到自主数字队友,这波AI变革真的不一样
  • 国自然冲刺必看:利用Gemini 3.1 Pro这三招,把每一个细节都打磨成加分项
  • Linux内核启动探秘:从stext入口到start_kernel的底层之旅
  • Gemini 3.1 Pro学术写作指南:基于四个核心能力的深度实操(附提示词)
  • 书成紫微动,律定凤凰驯:不是玄学迷信,是海棠山铁哥的作品与天道轨迹的现实呼应
  • 为什么Claude能“顿悟”而GPT不能?深度对比LLM推理路径的7个分水岭节点,
  • AI PoE 交换机智能供电与散热功率器件选型方案
  • MySQL 创建,管理,增删改实用笔记
  • GD32F303 CAN总线通信配置与调试实战:从回环模式到多节点应用
  • 【限时解密】Midjourney未公开的Tea印相冷启动协议:如何绕过默认sampler干扰,直触胶片模拟内核(仅剩37位开发者掌握)
  • Arduino NeoPixels DMA硬件加速:解放CPU,实现多任务实时控制
  • 4.2.1 Spark SQL数据源 - 初探默认数据源格式
  • Cursor Pro功能解锁完整指南:3种方法实现AI编程助手永久免费使用终极方案
  • Cursor Free VIP:如何绕过试用限制,实现AI编程助手的永久免费使用?
  • Cursor编辑器规则集:统一团队代码规范的开箱即用方案
  • 多智能体系统实战:构建AI分析师团队的技术架构与应用
  • Claude Code用户如何通过Taotoken解决API密钥与额度困扰
  • 5月16日TRO最新案件预警
  • Windows效率神器!微软官方白送,30+工具让 Windows 效率翻倍!
  • 量子同态加密与隐私信息检索的技术融合解析
  • 等保2.0安全通用要求第二级别之安全建设管理
  • Logseq Full House Templates 终极指南:如何用智能模板提升知识管理效率
  • 时光会把你雕刻成,你应有的样子
  • 【限时失效】ElevenLabs教育版/非营利计划隐藏入口(2024.06实测有效):附申请话术模板+审核拒因TOP5解析