首页 > 其他分享 >数据通信的基础概念,串行、并行、半双工、全双工、同步异步的区分与定义

数据通信的基础概念,串行、并行、半双工、全双工、同步异步的区分与定义

时间:2024-11-19 15:13:53浏览次数:3  
标签:异步 同步 通信 半双工 传输 串行 全双工

在通信领域中,串行、并行、半双工、全双工、同步和异步是描述数据传输方式和特性的重要概念。以下是对这些通信方式的区分与定义(本文结合原子教程以及自己的一些学习笔记综合而成):

按照数据通信方式可以分为串行、并行通信:

串行通信:数据逐位按照顺序依次传输

并行通信:数据各位通过多条数据线同时传输

串行通信的传输速率较低,抗干扰能力较强,通信距离较长,IO口资源占用较少,成本较低;与之相比,并行通信的传输速率较高,抗干扰能力较弱,通信距离较短,IO口资源占用较少,成本较高。

按照数据传输方向分,可以分为单工、半双工、全双工通信:

单工通信:数据只能沿一个方向传输

半双工通信:数据可以沿两个方向传输,但需要分时进行,即同一时刻一个信道只允许单方向传送,同一时间A只能发送给B,过一段时间待发送完全后,B也可以发送给A。

全双工通信:数据可以同时进行双向传输,即,A到B和B到A的双向信号传输可以同时进行。

按照数据同步方式进行分类,分为同步通信、异步通信:

同步通信:同步通信是指发送端和接收端必须使用同一时钟,是一种连续传送数据的通信方式,一次通信可以传送多个字符数据(一帧数据)。与异步的区别就是看是否使用了同一时钟。

异步通信:没有时钟信号,通过在数据信号中起始位、校验位、停止位等一些停止信号。

同步通信必须有同步时钟,传输信息量大,传输速率高,但传输设备复杂,技术要求高,在传输数据的同时,还必须传输时钟信号;异步通信不需要同步时钟,通信实现简单,设备简单,但传输速率不高,字符帧之间的间隙可以是任意的,每个字符的前后都要用一些数位来作为分隔位。

常见的串行通信接口:

CAN总线属于串行半双工异步通信(采用差分信号传输,具有类似同步通信的某些特性)

CAN是一种用于汽车和工业网络中进行分布式通信的串行通信协议。它采用半双工通信方式,使用两条信号线(CAN_H和CAN_L)进行差分传输。这种设计提高了抗干扰能力,使得CAN总线在电磁环境复杂、长距离传输的场合仍能保持稳定可靠的通信。

标签:异步,同步,通信,半双工,传输,串行,全双工
From: https://blog.csdn.net/qq_45583758/article/details/143873875

相关文章

  • unity3d————场景异步加载
    总结本文介绍了Unity中场景切换的两种方法:同步切换和异步切换。同步切换在切换场景时会删除当前场景的所有对象并加载下一个场景的信息,可能导致卡顿。因此,异步切换被引入来解决这个问题。异步切换有两种实现方式:通过事件回调函数和通过协程。通过事件回调函数实现异步加载代......
  • 同步和异步
    一、javascript中为什么需要引入异步?  1.我们知道js是单线程语言,只能同时做一件事。但在遇到需要等待(网络请求,定时任务)不能卡住,所以引入了异步  2.异步就是为了解决单线程需要等待的问题(如:网络请求,定时任务) 3.异步是基于回调callback函数形式 二、同步和异步1.异步......
  • unity3d————Resources异步加载
    知识点一:Resources异步加载是什么?在Unity中,资源加载可以分为同步加载和异步加载两种方式。同步加载会在主线程中直接进行,如果加载的资源过大,可能会导致程序卡顿,因为从硬盘读取数据到内存并进行处理是需要时间的。而异步加载则是Unity内部新开一个线程进行资源加载,这样就不会造......
  • React setState是异步吗?
     React官网对于setState的说明:将setState()认为是一次请求而不是一次立即执行更新组件的命令。为了更为可观的性能,React可能会推迟它,稍后会一次性更新这些组件。React不会保证在setState之后,能够立刻拿到改变的结果。以上说明执行setState时,有可能是异步(大部分情况下)更新......
  • 异步学习小例子
    voidTest1(){ChangeText("==========================================================");ChangeText("iamwashingleftnow...");}//执行Test方法为Test线程asyncvoidTest()......
  • stringRedisTemplate 异步操作的问题记录
    一、问题背景StringRedisTemplate使用stringRedisTemplate.opsForValue().set时,会出现set之后立马get获取值,发现获取不到set进去的值。二、问题原因1、在使用redisson的情况下,stringRedisTemplate.opsForValue().set操作会是异步操作,造成。你在set之后,立马get获取值的时候会......
  • 【FastAPI】解决下载文件预处理时间较长的问题:FastAPI 实现异步任务处理
    解决下载文件预处理时间较长的问题:FastAPI实现异步任务处理在开发Web应用时,我们经常会遇到需要对文件进行预处理的场景。例如,用户请求下载一个文件之前,需要进行压缩、转换或者数据处理等操作。然而,这些预处理任务往往会花费较长时间,如果我们在后端直接处理这些任务,会导......
  • Java8 CompletableFuture异步任务
    无返回值调用importjava.util.concurrent.CompletableFuture;publicclassTestDemo{publicstaticvoidmain(String[]args){System.out.println("进入主线程=============");CompletableFuture.runAsync(()->getNum());System.......
  • 深入理解Spring框架中的@Async注解实现异步任务
    目录1.引言2.环境准备3.启用异步支持4.创建异步任务5.调用异步任务6.运行应用7.使用@Async需要注意的地方8.结论在现代Web应用中,异步任务的执行变得越来越重要。Spring框架提供了强大的@Async注解,可以帮助开发者轻松实现异步任务。本文将详细介绍如何在Sprin......
  • 同步异步,阻塞非阻塞
    同步异步,阻塞非阻塞区别: 同步:调用者发出请求后,一直等待被调用者返回结果或通知,才进行下一步操作。 异步:调用者发出请求后,不等待被调用者返回结果或通知,就进行下一步操作。阻塞:调用者发出请求后,被调用者不返回结果或通知,调用者就一直等待,不能进行其他操作。 非阻塞:调用者发出请......