3.串口的初步认识之简单概念

突然发现,很多术语还是需要解释一下..看来我又要贴百度百科了..其实,如果只是在应用层面使用串口,这些概念基本只要简单了解一下即可,只要保证上下位机一致即可.至少我只停留在应用层面,欢迎鄙视...

波特率:(BaudRate)
  模拟线路信号的速率,也称调制速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如果数据进行了压缩,那么每秒钟传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。
  波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(Baud)。波特率与比特率的关系是比特率=波特率X单个调制状态对应的二进制位数。
  在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是传输通道频宽的指标。
  每秒钟通过信道传输的信息量称为位传输速率,简称比特率。比特率表示有效数据的传输速率。
  波特率
  电子通信领域,波特率即调制速率,指的是信号被调制以后在单位时间内的波特数,即单位时间内载波参数变化的次数。它是对信号传输速率的一种度量,通常以“波特每秒”(Bps)为单位。 波特率有时候会同比特率混淆,实际上后者是对信息传输速率(传信率)的度量。波特率可以被理解为单位时间内传输码元符号的个数(传符号率),通过不同的调制方法可以在一个码元上负载多个比特信息。

只有上下位机的波特率(校验位,字长,停止位)一致,才可以正确的通信,龚建平的个人网站上有一个用一句通信命令判断波特率的方法,很有意思,有兴趣可以找来看看.

校验位:(Parity)
是指或者奇数或甚至对一个数字的性质。奇偶校验通常用在数据通信中来保证数据的有效性。每个设备必须决定是否它将被用为偶校验、奇校验、或非校验。发送设备添加1s在每个它发送的每条串上或决定这个数是偶数或奇数。然后,它添加一个额外的位,叫奇偶校验位流程图做校验位,到这个串上。如果偶校验在使用,校验位将这些位置为偶数;如果奇校验在使用,校验位将这些位置为奇数。
  奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。
  奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为 1,从而使得总的 1 的个数是偶数。如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的 1 的个数是奇数。偶校验实际上是循环冗余校验的一个特例,通过多项式 x + 1 得到 1 位 CRC。

数据位数和停止位...我真的懒得贴了...请自行百度或者谷歌...
引脚的定义也请自行了解,如果用过MSCOMM,或许对这些有一定的了解,均为高低电平的开关量,因为我在工作很少用到,所以也没了解,我还是在应用层面讲讲我的理解吧.

一般的串口组件,均有一个接收到数据的事件,但是这个事件并不好用,因为你无法知道这个事件响应的是你发出的哪个命令(应答式).而且有可能一个命令分多次触发事件(如:下位机处理数据所需要的时间超过了设定的2次读取数据的间隔).也会存在你发出了一个需要应答的命令,下位机却没有理你..但是只通过接收事件,是无法判断出这一点的.
所以通用的串口组件,在处理应答设备的时候,会比较麻烦.或者说不是很理想.
数据通讯这一块,很需要学习一下多线程的使用,因为不可能读取数据的时候让主线程像死了似的.
推荐阅读CnRs232的源代码.开源组件,注释也很多.如果能读懂..我后面写的东西..您就别看了..省得看了想打我...

原文地址:https://www.cnblogs.com/solokey/p/2126554.html