准备篇--串口通信概述
前言
最近家里有些事情所以这个系列的文章一直耽搁了,现在开始进行编写希望各位看官见谅,这个系列是我对之前一段时间工作的总结也是我自己的复习和重构,本着互相学习的目的,如果我在其中有理解错误和方向不对的地方还请大家指正。
1.1 什么是串口
什么是串口其实应该首先说什么是通信,不过“通信”二字对于我们Coder来说不是什么难理解的概念,也就无需多述了。
串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。其通信的特点就是数据是一位一位的进行传输,在.NET下我们使用的数据格式就是byte.
通信线路也很简单就是一根串口线,不过有时候还会使用串口服务器,不过这都是后话了。通信成本低的同时传输速度也很低和以太网通信的速度是一个天上一个地下,但是一般情况下我们在串口传输的数据量也是很小的,超过200个字节都算是天文数字了。
串口线在我们实际工作和测试的时候有2种,一种是普通的串口线,一种是USB转串口(使用笔记本进行开发的童鞋们是必备的)


图 1.1-1 普通串口线 图1.1-2 USB转串口线
1.2 通信的模式
通过单线传输数据是串行数据通信的基础,数据通常是在2个站(点对点)之间进行传输,按照数据流的方向可以分为3种模式:单工、半双工、全双工。
1)单工模式
单工模式的数据传输方式是单向的,在通信的双方中,一方固定为发送端,另一方固定为接收端。信息只能沿一个方向传输,使用一根传输线。

图1.2-1 单工模式
2)半双工模式
半双工模式使用同一根传输线,既可发送数据又可接收数据,但不能同时发送和接收。在任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工模式既可以使用一条数据线,也可以使用两条数据线。
这个模式在日常工作中我是使用的最多的。

图1.2-2 半双工模式
3)全双工模式
全双工模式分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作。很多时候都是一根线负责发送数据,另外一根线负责接收数据。

图1.2-3 全双工模式
1.3 异步传输与同步传输
其实这部分我是不想写的,因为同步传输在长距离上会出现时钟误差,在我这一年半的工作时间里,我都是使用的异步传输。
在异步传输方式中,传输的单位是字符。在通信的数据流中,字符间是异步的,对于单个字符内部的各位间是同步。异步通信方式中的“异步”主要就是体现在字符与字符之间通信没有严格的定时要求,字符可以是连续地,也可以是一个个的发送,可以是不连续地随即的进行单独发送。所以收/发双方需要预先约定传输速率。
在串行通信中,数据是以帧为单位进行传输,帧有大帧和小帧(平时在工作中和硬件工程师进行沟通时说的数据帧是指的大帧,既完整的请求命令或者回传的数据),小帧包含一个字符,大帧包含多个字符。
异步通信采用小帧传输,一帧中有10-12个二进制数据位。每一针有1个起始位,7-8个数据位(一般都是用8个)、一个奇偶校验位(可以没有,我写的程序都没有,呵呵)和停止位(1位或者2位)组成。被传输的一组数据相邻的两个字符停顿时间不一致。这个字符停顿不一致的问题,在后面的章节我会详细的解说,这个问题也造成了我们在编写程序时的一些麻烦。

图1.3-1 串口异步传输数据
大家可能在看这个图感觉东西很多,其实分开来看就3部分
A 起始位、校验位、停止位 这3个是我们在定义通信参数时使用的(后面会讲)。
B 数据位 这里就是我们所关心的数据 也就是我们程序中需要接收的byte。
C 空闲 2个小帧之间的不确定时间间隔
1.4 串行通信的基本参数
串行端口的通信方式是将字节拆分成一个接一个的位再传输出去,接到此电位信号的一方再将此一个一个的位组合成原来的字符,如此形成一个字节的完整传输,在数据传输时,应在通信端口的初始化时设置几个通信参数。
1)波特率
通俗的讲就是传送数据的速度,不过这里的“数据”是数据位数。波特率的意思就是在一秒中可以传输的数据位数,单位是bps。如果采用波特率4800bps进行传输,那么每秒可以传输600个byte。
2)数据位
当接收设备收到起始位后,紧接着就会收到数据位,数据位的个数可以是5、6、7或者8位。在字符数据传输的过程中,数据位从最低有效位开始传输。
3)起始位
在串口线上,没有数据传输时处于逻辑“1”状态,当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传像接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位,因此起始位所起的作用就是告诉接收方字符传输的开始。
4)停止位
在奇偶校验位或者数据位(无奇偶校验位时)就是停止位,它可以是1位、1.5位或者2位,停止位是一个字符数据的结束标志。
5)奇偶校验位
数据位发送完之后,就可以发送奇偶校验位。奇偶校验用于有限差错校验,通信双方在通信时约定一致的奇偶校验方式。就数据传输而言,奇偶校验位是冗余位,但它表示数据的一种性质,这种性质用于检错,虽然有限但很容易实现。
1.5 接口标准
接口标准对于我们写上位机来说区别基本没有,那些是电气工程师的事情,如果需要建立高层的通信协议那么需要详细的了解,网上这方面的资料很多,在这里我就不整理,下面列出标准大家可以去度娘。
1)RS-232C 接口标准
2)RS-422/485接口标准
参考资料:
2 《Visual C#.NET 串口通信及测控应用典型实例》 李江全 邓红涛 刘巧 李伟 等编著 电子工业出版社

浙公网安备 33010602011771号