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

相关文章:

  • Android Studio使用HTTP代理下载依赖
  • 红黑树:高效平衡的秘密
  • linux中的种子下载方案ED2K BT
  • OpenGL空间站场景实现方案
  • 网络协议传输层UDP协议
  • SpringBoot+Docker+Graylog - 让错误自动报警
  • HCIA-实现VLAN间通信
  • 应用密码学纲要
  • vue中ref()和reactive()区别
  • 智能物流革命:Spring Boot+AI实现最优配送路径规划
  • AI之Tool:Glean的简介、安装和使用方法、案例应用之详细攻略
  • STM32F103_Bootloader程序开发11 - 实现 App 安全跳转至 Bootloader
  • OpenHarmony 5.0 解决点击导航栏切换后台按钮再切换到前台导航栏可能覆盖输入法问题,导致输入法下沉,最下面的显示不全
  • RGB下的色彩变换:用线性代数解构色彩世界
  • Flask 安装使用教程
  • Pillow 安装使用教程
  • IO进程线程 (进程)
  • Rust实现黑客帝国数字雨特效
  • CppCon 2018 学习:Feather: A Modern C++ Web Development Framework
  • FPGA的开发流程
  • 旋转不变子空间( ESPRIT) 算法
  • 基于SpringBoot的场地预定管理系统
  • 新版本没有docker-desktop-data分发 | docker desktop 镜像迁移
  • 当AR遇上深度学习:实时超声肾脏分割与测量技术全解析
  • FastAPI 安装使用教程
  • 人脸活体识别3:C/C++实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)
  • 回顾JAVA中的锁机制
  • 重塑智能体决策路径:深入理解 ReAct 框架
  • WPF路由事件:冒泡、隧道与直接全解析
  • 嵌入式软件面经(四)Q:请说明在 ILP32、LP64 与 LLP64 三种数据模型下,常见基本类型及指针的 sizeof 值差异,并简要解释其原因