小白搞懂异步通讯、同步通讯;全双工通讯,半双工通讯。
自己一开始的时候很容易弄混,在此记录一下,这几个分属不同的概念;
首先全双工/半双工通讯类似于有几个传输线的问题:全双工两根,半双工单根,前者两边可以同时收发,我打电话给你说的同时你也能说,这是全双工;后者类似于对讲机,我给你说的时候你不能说,咱两只能一个人说。
更有趣的例子是上课,正常课堂半双工,老师讲学生听或者学生回答问题老师听;如果是全双工那就会被问道死亡之问,老师:到底是你说还是我说?
同步/异步是指步调一致,时钟相同;同步通信类似于打电话,时间必须一致,你说的话我才能听到;异步通信像发邮件,时间不一定一致。
同步通讯注意的是步调时刻相同:没有数据发送时,传输线处于MARK状态。为了表示数据传输的开始,发送方先发送一个或两个特殊字符,该字符称为同步字符。当发送方和接收方达到同步后,就可以一个字符接一个字符地发送一大块数据,而不再需要用起始位和停止位了,这样可以明显地提高数据的传输速率。采用同步方式传送数据时,在发送过程中,收发双方还必须用一个时钟进行协调,用于确定串行传输中每一位的位置。接收数据时,接收方可利用同步字符使内部时钟与发送方保持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,供CPU读取,直至收到结束符为止。
异步通讯注意的是要有开始和停止符:异步通信是一种很常用的通信方式。相对于同步通信,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的,当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。内部处理器在完成了相应的操作后,通过一个回调的机制,以便通知发送端发送的字符已经得到了回复。