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

相关文章:

  • docker常见命令
  • 模型预测专题:强鲁棒性DPCC
  • Springboot开发常见注解一览
  • C++ 完美转发(泛型模板函数)
  • CSS外边距合并(塌陷)全解析:原理、场景与解决方案
  • apoc-5.24.0-extended.jar 和 apoc-4.4.0.36-all.jar 啥区别
  • 大数据平台与数据中台:从概念到落地的系统化实践指南
  • Point-LIO代码阅读与解析
  • opencv基础的图像操作
  • 回顾JAVA中的锁机制
  • 2-RuoYi-UI管理平台的启动
  • 少样本学习在计算机视觉中的应用:原理、挑战与最新突破
  • 第8章网络协议-NAT
  • ai之RAG本地知识库--基于OCR和文本解析器的新一代RAG引擎:RAGFlow 认识和源码剖析
  • HTTP 协议深入理解
  • 【51单片机单595点阵8按键调节速度方向花样】2022-6-18
  • 运用逆元优化组合计算#数论
  • monorepo + Turborepo --- 构建仓库结构
  • 创客匠人解构知识付费爆单密码:产品力打造与 IP 变现的深度耦合
  • [转载]数据库锁分布式锁实现接口幂等性
  • 如何将文件从 iPhone 传输到 Android(新指南)
  • BUUCTF在线评测-练习场-WebCTF习题[ZJCTF 2019]NiZhuanSiWei1-flag获取、解析
  • 02-更换证件背景
  • 节点小宝内网穿透实测:告别“无网”烦恼,让你的设备“触手可及”
  • python实现基于资金分布、RSI及布林策略的方案
  • 智慧赋能高压并网:分布式光伏监控系统在5.88MW物流园项目的实践解析
  • [环境配置] 3. 使用 UV管理 Python 环境
  • 416. 分割等和子集
  • docker拉取redis并使用
  • STEP-BACK PROMPTING:退一步:通过抽象在大型语言模型中唤起推理能力