C#串口通信从入门到精通(2)——串口相关参数介绍

news2024/11/16 3:50:00

1、端口号(Port)

我们使用一个串口的时候,首先是要打开这个串口,那么我们怎么知道电脑上现在支持几个串口呢?对应的端口号又是什么呢?
由于我的电脑系统是window11,下面就以window11为例介绍如何查看电脑上现在有几个串口(windows7、window10类似)
第1步、在电脑桌面上,右击“此电脑”,或者“计算机”,或者“我的电脑”,点击鼠标右键,在弹出的窗体中找到“属性”,鼠标左键点击“属性”,如下图:
在这里插入图片描述
在这里插入图片描述
第2步、找到“设备管理器”,鼠标左键点击“设备管理器”,如下图:
在这里插入图片描述
在这里插入图片描述

第3步、鼠标左键点击“端口”,如下图:
在这里插入图片描述
我这里有两个虚拟串口,因为我用的笔记本电脑,笔记本电脑一般是没有自带的串口的,所以我用虚拟串口软件虚拟了一对串口,通过虚拟串口工具就能解决本身的电脑没有串口的问题,关于虚拟串口的使用,请点击我的专栏的这篇文章:如何使用虚拟串口工具,如果是工控机的话,能直接看到COM1这种。所以通过这种方式,我们找到了电脑的支持的串口,后面我们才能使用软件打开相应的串口,当然我也会在专栏的这篇文章介绍如何通过程序自动寻找电脑现在支持的串口,请点击专栏的这篇文章:如何通过程序自动寻找电脑的串口

2、波特率

波特率比较常见的9600,它的单位是bit/s,代表的是每秒中传递9600个bit,一个bit也成为了1位,以后的文章中都叫位,对应的就是计算中的高、低电平,高电平代表的就是值1,低电平代表的就是0,一个bit它的值可能是1,也可能是0。并且这里要引入一个字节的概念,因为串口通信中我们和字节打交道是最多的,那么我们要记着字节和位的关系,一个字节是有8位,一般从左边是最高位,右边是最低位,所以9600bit/s对应的传输效率大概是9600/8=1200个字节,代表串口每秒钟能传输1200个字节,当然这里我用的是大概1200个字节,因为这里我没有考虑停止位、开始位、校验位,知道是大概等于就好。关于波特率要记住以下几点:
1)波特率代表是串口传输数据的能力,波特率越高传输数据越高,但是波特率不是越高越好,太高的话会出现传输数据不稳定的问题,所以一般使用9600的居多。
2)发送方和接收方的波特率必须保持一致,否则就会出现发出去的数据和接收的数据不一致的情况。

3、起始位

在c#开发中,不需要设置起始位

4、数据位

一般情况下数据位有7位、8位两种,使用最多的是8位,除非设备指定数据位为7位,否则我们在软件开发中默认该值就是8

4、停止位

在c#开发中,使用StopBits这个枚举类型来设置停止位,如下图:可以看出停止位有0、1、1.5、2四种,使用最多的是1,除非设备指定,否则我们在软件开发中默认该值就是1,对应的在代码中设置为StopBits.One
在这里插入图片描述

5、校验位

在c#开发中,使用Parity这个枚举类型来设置校验位,如下图:当前一共有五种,None就是无校验,Odd是奇校验,Even是偶校验,在日常开发中使用最多的是None、Odd、Even,并且如果没有特殊要求,比如我们自己平时在测试的过程中使用Node无校验即可。
在这里插入图片描述

6、发送缓冲区

串口使用时一般包含两个缓冲区,发送缓冲区和接收缓冲区,对于发送缓冲区。发送数据时,先将数据存在发送缓冲区,然后通过串口发送,相当于我们软件所做的工作是把数据发送到发送缓冲区,然后硬件自己把缓冲区的数据发出去。

7、接收缓冲区

串口使用时一般包含两个缓冲区,发送缓冲区和接收缓冲区,对于接收缓冲区,接收数据时,先将接收的数据存在接收缓冲区,然后再进行读取,我们软件做的也是从接收缓冲区中读取数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络请求实战-缓存、缓存清理和HTTP缓存

目录 缓存介绍 清空策略(FIFO) 实战:fifo的memory函数 实战:LRU算法 HTTP缓存 Cache-Control 强制缓存 协商缓存 协商缓存-2(用的最多的) 小结 缓存介绍 早期cpu,内存设计上都有缓存…

开发常用的 Linux 命令4(系统、进程和其它)

开发常用的 Linux 命令4(系统、进程和其它) 作为开发者,Linux是我们必须掌握的操作系统之一。因此,在编写代码和部署应用程序时,熟练使用Linux命令非常重要。这些常用命令不得不会,掌握这些命令&#xff0…

【JUC】volatile和JMM

【JUC】volatile和JMM 文章目录 【JUC】volatile和JMM1. volatile1.1 特点1.2 内存语义 2. 内存屏障2.1 分类2.2 什么叫保证有序性?2.3 内存屏障的4种插入策略 3. volatile特性3.1 保证可见性3.2 volatile读写过程3.3 没有原子性3.4 指令禁重排(有序性) 4. 正确使用…

python标识符概念及规范

在python中 能取名字的东西非常非常多 例如 我们之前学的变量 以及后面要接触的 函数 类,等等,等等 而我们给这些取的名字 被统称为 标识符 而 python中 标识符的命名也是有限制的 主要有三种 1 内容限定 2 大小写铭感 3 不能使用关键字 内容限定来讲…

leetcode6_N字形变换

如有错误,感谢不吝赐教、交流 leetcode6 题目描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下: P A H N A P L S I…

HTB-SecNotes

HTB-SecNotes 信息收集8808端口80端口通过CSRF获取通过二次注入 立足tyler -> administrator 信息收集 8808端口 Windows IIS 10.0 可以从官方文档查看10.0版本可能的操作系统。 80端口 通过CSRF获取 目录扫描发现需要登陆后继续进一步操作啊。 对其进行简单的SQL注入测…

数据库基础篇 《7.单行函数》

目录 1. 函数的理解 1.1 什么是函数 1.2 不同DBMS函数的差异 ​编辑1.3 MySQL的内置函数及分类 ​编辑 2. 数值函数 2.1 基本函数 ​编辑 2.2 角度与弧度互换函数 2.3 三角函数 ​编辑 2.4 指数与对数 ​编辑 2.5 进制间的转换 ​编辑3. 字符串函数 ​编辑…

SAM(segment anything model)分割一切 Demo测试及API调用

SAM 分割一切 一,SAM介绍1.1 介绍1.2 项目链接 二,Demo-Test:2.1 Demo功能介绍2.1.1,首页就是这个SAM,点击try demo,可以选择它的自带图片,也可以自己添加。2.1.2 , 自己上传图片测试&#xff1…

[java基础]面向对象(五)

访问控制修饰符:--------------保护数据的安全(隐藏数据、暴露行为),实现封装 public:公开的,任何类 private:私有的,本类 protected:受保护的,本类、派生类、同包类 默认的&…

learn_C_deep_3 (最名不符实的关键字 - static、static关键字总结、基本数据类型、最冤枉的关键字 - sizeof)

目录 最名不符实的关键字 - static stati修饰全局变量和函数 static修饰局部变量 static关键字总结 几个问题 1.c语言要设置全局变量和函数可以跨文件使用的原因 2.C程序地址空间是什么样的? 3.局部变量为什么具有临时性 4.全局变量为什么具有全局性 5.为…

vue-cli版本号始终是2.9.6,且无法删除,安装更新无效的问题。

参考博客 目录 1.问题出现原因2.我的解决办法:删除原脚手架&删除原vuevue.cmd 1.问题出现原因 从各种博客我得知,这种问题出现在2处: 没有卸载原来的脚手架原来的vue和vue.cmd没删除干净 2.我的解决办法:删除原脚手架&…

[oeasy]python0135_命名惯用法_name_convention

命名惯用法 回忆上次内容 上次 了解了isidentifier的细节 关于 关键字关于 下划线 如何查询 变量所指向的地址? id 如何查询 已有的各种变量? locals 如果 用一个变量a的值 给另一个变量b 赋值是什么样的过程 呢??🤔…

当,Kotlin Flow与Channel相逢

前言 之前的文章已经分析了Flow的相关原理与简单使用,Flow之所以用起来香,Flow便捷的操作符功不可没,而想要熟练使用更复杂的操作符,那么需要厘清Flow和Channel的关系。 本篇文章构成: 1. Flow与Channel 对比 1.1 Fl…

AVL树(C++实现)

文章目录 AVL树的概念AVL树结点定义AVL树的插入AVL树的旋转左单旋右单旋左右单旋右左双旋 AVL树的验证AVL树的性能AVL树及测试完整代码 AVL树的概念 二叉搜索树虽然可以缩短查找的效率,但如果数据有序或接近有序,那么二叉搜索树将退化为单支树,查找元素则相当于在顺序表中搜索…

从零手写Resnet50实战——利用 torch 识别出了虎猫和萨摩耶

大家好啊,我是董董灿。 自从前几天手写了一个慢速卷积之后(从零手写Resnet50实战—手写龟速卷积),我便一口气将 Resnet50 中剩下的算法都写完了。 然后,暴力的,按照 Resnet50 的结构,将手写的…

【Flowable】Flowable基础表结构

1.表结构讲解 表结构创建文件:flowable-engine-6.3.0.jar!\org\flowable\db\create\flowable.mysql.create.engine.sql 工作流程的相关操作都是操作存储在对应的表结构中,为了能更好的弄清楚Flowable的实现原理和细节,我们有必要先弄清楚Fl…

Python边缘检测之prewitt, sobel, laplace算子

文章目录 滤波算子简介具体实现测试 滤波算子简介 ndimage中提供了卷积算法,并且建立在卷积之上,提供了三种边缘检测的滤波方案:prewitt, sobel以及laplace。 在convolve中列举了一个用于边缘检测的滤波算子,统一维度后&#xf…

es6 const的使用

1.const用来定义常量&#xff0c;赋值知乎不能再赋值&#xff0c;再次赋值会报错。 <script>//1.定义常量&#xff0c;赋值后不能再赋值&#xff0c;在赋值报错const count 1// count 2</script> ​ 2.const不能只声明不赋值&#xff0c;会报错。 <script>…

智能学习 | MATLAB实现CS-BP多变量时间序列预测(布谷鸟搜索算法优化BP神经网络)

智能学习 | MATLAB实现CS-BP多变量时间序列预测(布谷鸟搜索算法优化BP神经网络) 目录 智能学习 | MATLAB实现CS-BP多变量时间序列预测(布谷鸟搜索算法优化BP神经网络)预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现CS-BP多变量时间序列预测(布谷鸟搜索算法…