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

C#上位机串口接口

文章目录

  • 前言
    • C#上位机串口接口 特点:数据一位接一位地依次传输,具有简单、通用性强等优点,但传输速度相对较慢。
  • 一串口概述
  • 二、使用步骤


前言

C#上位机串口接口
特点:数据一位接一位地依次传输,具有简单、通用性强等优点,但传输速度相对较慢。

一串口概述

串口参数
串口号 :标识设备连接的串行端口,如 “COM1”“COM3” 等。
波特率 :衡量数据传输速率的指标,单位是比特 / 秒(bps),常见的有 9600、115200 等。
数据位 :表示每个字符的数据位数,通常为 7 或 8 位,包含实际传输的数据信息。
校验位 :用于错误检测,可设置为 None(无校验)、Even(偶校验)、Odd(奇校验)等。
停止位 :用于标识一个字符传输的结束,一般为 1 或 2 位。

二、使用步骤

构造方法传入参数

// 构造方法传入参数
SerialPort serialPort = new SerialPort("COM1",9600,Parity.None,8,StopBits.One);

属性设置参数

//属性设置参数
// 串口号
serialPort.PortName = "COM3";
//波特率
serialPort.BaudRate = 9600;
// 校验位(None,Even,Odd)
serialPort.Parity = Parity.None;
// 数据位
serialPort.DataBits = 8;
// 停止位(One,Two)
serialPort.StopBits = StopBits.One;
// 设置接收超时
serialPort.ReadTimeout = 100000;
// 设置发送超时
serialPort.WriteTimeout = 1000;
// 设置接收缓存大小
serialPort.ReadBufferSize = 4800;
// 设置发送缓存大小
serialPort.WriteBufferSize = 4800;
// 打开串口
serialPort.Open();
// 发送数据
SendAndRecive(serialPort);
// 关闭串口
serialPort.Close();

获取本机所有的串口号

// 获取本机的所有串口号
string[] ports =  SerialPort.GetPortNames();

发送数据

 #region 发送数据// 发送字符串//serialPort.Write("abc123");// 发送字节string str = "abc123中文";// 将字符转换成字节Byte[] bytes = Encoding.UTF8.GetBytes(str);serialPort.Write(bytes,0,bytes.Length);#endregion

接收数据

#region 接收数据
// 读取缓存区里面的所有字节,并返回字符串,不卡线程,如果缓存区没有数据就获取一个空的字符串
// 会继续执行后面的任务
//string strRecv = serialPort.ReadExisting();
// 读取缓存区内的字节并保存在byteRecv字节数组中,如果没有数据就等待
// 没有读取到字节不会执行后面的任务,直到读取到字节数据或者读取超时。
//Byte[] byteRecv = new Byte[10];
//serialPort.Read(byteRecv,0,10);// 从缓存区内一个字节一个字节读取数据
//Byte byteRecv = (Byte)serialPort.ReadByte();
// 从缓存区内一个字符一个字符读取数据
//serialPort.ReadChar();
// 从缓存区内读取字符直到指定的特殊字符,例如,发送aaa@bbb,只读取@前面的字符
//没有读取到字节不会执行后面的任务,直到读取到字节数据或者读取超时
//string strRecv = serialPort.ReadTo("@");
// 获取接收缓冲区内的字节数
int len = serialPort.BytesToRead;
Byte[] byteRecv = new Byte[len];
serialPort.Read(byteRecv, 0, len);
#endregion
http://www.dtcms.com/a/265254.html

相关文章:

  • Hamilton系统特征线法下的非线性PDE解与爆破时间分析
  • C++ 完美转发(泛型模板函数)
  • ssh连接服务器,有了ip和private key,还需要其它吗
  • 技术学习_大语言模型
  • el-button/button置灰及原理
  • 应急响应类题练习——玄机第一章 应急响应- Linux入侵排查
  • 代码随想录算法训练营第四十三天|动态规划part10
  • 2025-6GESP六级编程题分析
  • 如何保证缓存和数据库的双写一致性
  • Python训练营Day1
  • 软件测试用例大全
  • 基于大模型的智能体中由自主性引发的安全风险综述
  • CLIP heat map generation
  • 【深度学习:进阶篇】--4.2.词嵌入和NLP
  • MinHook 如何对 .NET 母体 CoreCLR 进行拦截
  • 在米联客4EV上部署tinyriscv
  • 【深度学习新浪潮】国内零样本抗体设计的科研进展如何?
  • docker-compose.yml 文件详解——AI教你学Docker
  • 从一个开发的角度切入mysql索引,查询优化
  • C Primer Plus 第6版 编程练习——第6章(上)
  • 设计模式-享元模式
  • JAVA内存区域划分
  • WEB测试总结
  • ubuntu 安装neo4j
  • 七、分工说明
  • 南方大暴雨及洪水数据分析与可视化
  • 爬虫从入门到精通(22) |TLS指纹
  • 【RHCSA-Linux考试题目笔记(自用)】servera的题目
  • 【C++】--入门
  • HTTPS详解:原理 + 加解密过程 + 面试问答