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

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

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

1、端口号(Port)

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

第3步、鼠标左键点击“端口”,如下图:
C#串口通信从入门到精通(2)——串口相关参数介绍
我这里有两个虚拟串口,因为我用的笔记本电脑,笔记本电脑一般是没有自带的串口的,所以我用虚拟串口软件虚拟了一对串口,通过虚拟串口工具就能解决本身的电脑没有串口的问题,关于虚拟串口的使用,请点击我的专栏的这篇文章:如何使用虚拟串口工具,如果是工控机的话,能直接看到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
C#串口通信从入门到精通(2)——串口相关参数介绍

5、校验位

在c#开发中,使用Parity这个枚举类型来设置校验位,如下图:当前一共有五种,None就是无校验,Odd是奇校验,Even是偶校验,在日常开发中使用最多的是None、Odd、Even,并且如果没有特殊要求,比如我们自己平时在测试的过程中使用Node无校验即可。
C#串口通信从入门到精通(2)——串口相关参数介绍

6、发送缓冲区

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

7、接收缓冲区

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