精华内容
下载资源
问答
  • 2022-05-01 09:09:03

    串行通信中包括有三种数据传送3种方式,它研究 对象 和方向性。

    单工通信:只能是一个方向传送。 比如:A传送到传送B,并且只能A传送给B。

    全双工通信:在某一时刻,双方可以同时接收和发送数据。

    半双工通信:双向传送,在某一时刻,只能一方为发送,另一方为接收。

    更多相关内容
  • 关注+星标公众号,不错过精彩内容视频号 | strongerHuang微信公众号|strongerHuang通信的种类和方式有很多,今天为大家分享一下通信中常见的同步、异步,单工、双工...

    关注+星标公众,不错过精彩内容

    dff17371385543a0b196176de5686555.gif

    视频号 | strongerHuang

    微信公众号 | strongerHuang

    通信的种类和方式有很多,今天为大家分享一下通信中常见的同步、异步,单工、双工通信的区别。

    同步、异步通信

    通信分为串行和并行通信,一般串行通信的应用场合更多,比如:UART、 I²C、 SPI、 CAN等这些都属于串行通信。

    串行通信一般又分为同步和异步通信,同步通信需要同步时钟信号,而异步通信则不需要同步时钟信号。

    概念:

    • 同步通信:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。

    • 异步通信:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

    c2433ae531fc26e588d4cb2b70a15bcb.png

    通过定义你应该能测到:像I²C、 SPI这种具有同步时钟的就是同步通信;像UART、 CAN这种没有同步时钟的就是异步通信。

    单工、 双工通信

    通信根据传输的方法分为单方向通信(即单工),和双向通信(即双工)。

    单工通信

    单工即数据传输只在一个方向上传输,方向是固定的,不能实现双向通信(A发送数据给B,而B不能发送数据给A),如:收音机广播,你只能听到广播站发出的广播(数据),而你不能反向给广播站发送广播。

    双工通信

    双工分为 半双工 和 全双工。

    半双工

    半双工比单工先进一点,传输方向可以切换,允许数据在两个方向上传输。

    但是某个时刻,只允许数据在一个方向上传输,可以基本双向通信。

    像485、I²C就属于半双工通信。

    全双工

    比半双工更先进的是全双工,允许数据同时在两个方向传输。发送和接收完全独立,在发送的同时可以接收信号,或者在接收的同时可以发送。它要求发送和接收设备都要有独立的发送和接收能力。

    如:RS232、SPI通信等。

    用一张图的说明:单工、半双工、全双工通信:

    a2467810d459d397df1559eb11136986.png

    最后

    通信领域需要掌握的知识比较多,还有像什么传输方式、编码方式、通信协议等。

    对于初学者可能看到这些概念都想放弃了,其实,拆解每一个知识点都不难。

    声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

    ------------ END ------------

    关注公众号后台回复『通信教程』『单片机』阅读更多相关文章。

    回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

    711538cb9003aef20ca7150353a22b98.png

    abf66fbc5d390916c4528675f9292b0c.png

    点击“阅读原文”查看更多分享

    展开全文
  • 我们都知道本地计算机在线程通信时可以根据每个进程的PID来识别不同的程序但如果一台计算机和另外一台计算机进行通信时光靠进程的PID是不行的,因为进程在生成时的PID也是随机的。网络中的TCP/IP协议加上端口可以...

    我们都知道本地计算机在线程通信时可以根据每个进程的PID来识别不同的程序

    但如果一台计算机和另外一台计算机进行通信时光靠进程的PID是不行的,因为进程在生成时的PID也是随机的。

    网络中的TCP/IP协议加上端口可以唯一确定一台计算机的某个进程,IP确定了是哪台计算机,端口号又确定了了是哪个进程。

    本机进行数据交流时可以通过OutputStream、InputStream这样的IO数据流来进行信息传递

    需要通过网络传递数据时就可以用Socket这个类了。

    9c58de5211cea0b1b76f3f36cdf87ba5.png

    数据在网络里也是一层套一层地包装好然后发给对方的,如果把数据比作货车上的货品,Socket差不多就是货车负责记录自己从哪里来(自己的本地IP地址),要到哪个工厂(对方的IP地址),货品都对应工厂的哪个仓库(端口)。

    225eeb1f117715e69673c59c3ec5c9a8.png

    根据上图可知,首先得有一个服务器来等待客户端发数据

    实例化一个ServerSocket对象,并传入一个端口参数,这里建议用2000到65535的参数,因为之前的端口可能已经被系统某个进程使用了。这里服务器端口参数为8888,所以想和他连接的客户端程序端口也要设置成8888。

    new ServerSocket(8888);

    既然是服务器,当然也要知道自己的IP,但是new ServerSocket(8888)并没有设置

    虽然用的是一个参数的构造方法但也会调用三个参数的构造方法,同时将端口号传了过去

    73118d77cea36a66721ab2d0c7b38c12.png

    backlog是连接队列,系统以及提供了默认值,想修改的话也可以用两个参数的构造方法

    在三个参数的构造方法里又自动实例化了一个InetSocketAddress对象

    407c226c46ab0275f5b76598cce08f6e.png

    InetSocketAddress已经自动调用其他方法获取到了本地IP地址。

    这就是唯一确定的服务器进程实例化的大致流程。

    5f993afcd7cbfdf6f470bdd7ed6c5f80.png1d9f4c9f72a24642868a272f9f88859b.png

    数据流都是一层套一层,而ServerSocket是最外层,所以accept()方法可以获取内部的某层数据流,应该可以这样理解。

    接下来就是数据流之间的互相传递数据了,需要注意的是:

    在用Socket通信时,由于是网络通信所以要用网络数据流,比如常见的DataInputStream,否则数据格式不对。

    如果用键盘写入数据推荐用BuffereReader写,用Scanner直接写给网络数据流的readUTF()会出错。因为Scanner从键盘获取的值并不是IO数据流的格式,就没法在它的基础上继续包装。而BuffereReader符合数据流的格式从而可以在它的基础上在包装成网络数据流格式。

    此例子仅是单工通信,也就是客户端写一个服务器读取一个,然后服务器再写一个客户端再读一个。

    服务器代码如下:

    public class ServeTest {

    public static void main(String[] args) throws IOException {

    ServerSocket serverSocket = new ServerSocket(8888);

    Socket accept = serverSocket.accept();

    InputStream inputStream = accept.getInputStream();

    OutputStream outputStream = accept.getOutputStream();

    DataInputStream dis= new DataInputStream(inputStream);

    DataOutputStream dos=new DataOutputStream(outputStream);

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String account=dis.readUTF();

    String password=dis.readUTF();

    System.out.println("账号:"+account+",密码:"+password);

    while (!account.equals("哔哔小子")||!password.equals("123")) {

    System.out.println("输入错误");

    dos.writeUTF("输入错误");

    account=dis.readUTF();

    password=dis.readUTF();

    }

    dos.writeUTF("输入正确");

    System.out.println("验证通过");

    while(true){

    String info=dis.readUTF();

    System.out.print("客户端说:"+info+"\n");

    if (info.equals("bye"))

    break;

    System.out.print("我:");

    dos.writeUTF(br.readLine());

    System.out.println();

    }

    br.close();

    dos.close();

    dis.close();

    }

    }

    客户端的Socket初始化和ServerSocket基本上差不多,需要注意的是:

    既然是在本机上的模拟网络通信,所以能用的IP地址就是本机的IP地址,实例化Socket时传入的IP地址可以是本机IP地址也可以是"127.0.0.1",这个特殊地址是回路地址,就是用来测试本地连接用的。

    如果服务器或者客户端还在读取数据,对方对应的Scoket先结束了,会报错。

    客户端只要不结束,服务器的网络数据流在read()时就会一直进入阻塞状态直到对方发来数据

    客户端代码如下:

    public class ClientTest {

    public static void main(String[] args) throws Exception, IOException {

    Socket socket = new Socket("127.0.0.1",8888);

    Scanner scanner = new Scanner(System.in);

    OutputStream outputStream = socket.getOutputStream();

    InputStream inputStream = socket.getInputStream();

    DataOutputStream dos = new DataOutputStream(outputStream);

    DataInputStream dis = new DataInputStream(inputStream);

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("输入账号:");

    //String account=scanner.nextLine();必须要有参数接收,否则直接data写会出错

    dos.writeUTF(br.readLine());

    System.out.println("输入密码");

    //String password=scanner.nextLine();也是问题

    dos.writeUTF(br.readLine());

    String info=dis.readUTF();

    while (info.equals("输入错误")){

    System.out.println("输入有误,请重新输入!");

    System.out.println("输入账号:");

    dos.writeUTF(br.readLine());

    System.out.println("输入密码");

    dos.writeUTF(br.readLine());

    info=dis.readUTF();

    }

    System.out.println("已连接到主机");

    System.out.println("进入聊天模式");

    while(true){

    System.out.print("我:");

    String message=br.readLine();

    System.out.println();

    dos.writeUTF(message);

    if (message.equals("bye"))

    break;

    message=dis.readUTF();

    System.out.print("服务器说:"+message+"\n");

    }

    br.close();

    dos.close();

    dis.close();

    }

    }

    展开全文
  • 单工通信:所谓单工通信,是指消息只能单方向传输的工作方式。例如遥控、遥测,就是单工通信方式单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不...

    单工通信: 所谓单工通信,是指消息只能单方向传输的工作方式。例如遥控、遥测,就是单工通信方式

    单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。

    通信双方采用“按——讲”(Push To

    Talk,PTT)单工通信属于点到点的通信。根据收发频率的异同,单工通信可分为同频通信和异频通信

    半双工通信: 即Half-duplex

    Communication。这种通信方式可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。也就是说,通信信道的每一段都可以是发送端,也可以是接收端。但同一时刻里,信息只能有一个传输方向。如日常生活中的例子有步话机通信等。

    双工通信:全双工即Full duplex

    Communication,是指在通信的任意时刻,线路上存在A到B和B到A的双向信号传输。全双工通信允许数据同时在两个方向上传输,又称为双向同时通信,即通信的双方可以同时发送和接收数据。在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送。全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利。这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号。(可能还需要控制线和状态线,以及地线)。

    理论上,全双工传输可以提高网络效率,但是实际上仍是配合其他相关设备才有用。例如必须选用双绞线的网络缆线才可以全双工传输,而且中间所接的集线器(HUB),也要能全双工传输;最后,所采用的网络操作系统也得支持全双工作业,如此才能真正发挥全双工传输的威力。

    实际应用的例子

    ,计算机主机用串行接口连接显示终端,而显示终端带有键盘。这样,一方面键盘上输入的字符送到主机内存;另一方面,主机内存的信息可以送到屏幕显示。通常,往键盘上打入1个字符以后,先不显示,计算机主机收到字符后,立即回送到终端,然后终端再把这个字符显示出来。这样,前一个字符的回送过程和后一个字符的输入过程是同时进行的,即工作于全双工方式。

    双工通信和打电话一样,说的同时也能听,边说边听。这种发射机和接收机分别在两个不同的频率上(两个频率差有一定要求)能同时进行工作的双工机也称为异频双工机。双工机包括双工手持机、双工车载机、双工基地/中转台。双工手持机大多在VHF频段和UHF频段上跨段工作。一般将双工手持机称为跨段双工手持机。其工作时,或VHF发射、UHF接收,或UHF发射、VHF接收。而双工车载机及基地/中转台就不存在这个问题,可以跨段双工工作,也可以做成(VHF或UHF频段的)同频双工机。

    像RS422,RS488以及LAN都支持全双工通信

    展开全文
  • 通信工作当中,借助于现有的电话网也能实现远距离传输,因此串行通信接口是计算机系统当中的常用接口,是一种通信双方按位进行,遵守时序的一种通信方式。 我们在串行通信中,数据通常是在两个站(如终端和微机)之间...
  • 同步和异步 同步通信(Synchronous) ,通过在发送端和接收端之间使用共同的时钟从而使得它们保持“协调” 。虽多占了一根10线作为时钟线,但数据传输速度快,适于...单工通信(Simplex ) ,是指数据只能单向传送,任何时候
  • ps: 如果有任何问题可以评论留言,我看到后会及时解答,评论或...单工通信 概念:只能从一边到另一边的通信,一边是发送端,另一边是接收端,不可逆,通道是单向的 eg:广播站 、无线电站等 半双工通信 概念:...
  • msp430与A7105实现单工通信 A7105是一款性价比不错的RF。单个人认为它的实现比较麻烦,好在还有手册,有参考程序,总算是实现了,现在拿来与大家分享一下。
  • 单片机双机串行通信多数据传输汇编语言编程实现.pdf
  • 文章目录0、前言1、硬件连接示意图2、单线单工通讯协议3、关于波特率自适应的处理4、数据接收程序流程图5、数据接收程序的代码实现(纯定时器扫描)5.1、不带校准位的代码实现—即不带波特率自适应5.2、带校准位的...
  • 单工、半双工和全双工通信的区别

    千次阅读 2020-05-09 16:30:51
    半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。 全双工数据...
  • 摘要:本文基于ATMEGA16L单片机实现一个具有单工语音和数据传输功能的无线呼叫系统。通过编码电路、单片调频发射电路和高频功放电路实现主站的语音及数据发送;通过解码电路、调频解调和语音功放电路实现从站的语音...
  • 文章目录一、数据通信模型示例二、数据通信模型三、数据通信模型 分类四、数据通信 术语五、三种通信方式六、数据传输方式一、数据通信模型示例数据通信模型 示例 :① 通信场景 : 两台计算机通过电话网络进行通信 ;...
  • 高频无线通信的设计方案集 实现单工呼叫,40M调频发射,可发送短信,可单向通话
  • 摘要:本文基于ATMEGA16L单片机实现一个具有单工语音和数据传输功能的无线呼叫系统。通过编码电路、单片调频发射电路和高频功放电路实现主站的语音及数据发送;通过解码电路、调频解调和语音功放电路实现从站的语音...
  • 三种通信方式——单工、半双工和双工通信

    万次阅读 多人点赞 2019-08-29 11:46:23
    单工通信只支持信号在一个方向上传输(正向或反向),任何时候不能改变信号的传输方向。 为保证正确传送数据信号,接收端要对接收的数据进行校验,若校验出错,则通过监控信道发 送请求重发的信号。 此种方式适用于...
  • ------------恢复内容开始------------Linux下C语言实现半双工的UDP通信1、单向通信:又称为单工通信,即只能有一个方向的通信而没有反方向的交互。无线电广播或有线电广播以及电视广播就属于这种类型。单向通信只...
  • 如何用c实现 各路神仙帮帮忙 被这个问题难住了
  • 串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。  与之前一样,首先我们来了解单片机串口相关的寄存器。  SBUF...
  • 基于AT89C52单工串行通信系统设计

    千次阅读 2021-11-21 18:15:16
    串行通信基础 计算机通信大多是指计算机与外部设备或者是计算机之间进行相关信息或者数据进行互换、交换。 串行通信主要有并行通信和串行通信两种方式。在两个或者多个微系统交换信息中多采用串行通信方式。 并行...
  • 引言  在众多的高空探测手段中,GPS探空仪作为一种新型的探测手段,探空仪是一种测量高空大气温、压、湿、风的... 通信系统的设计与实现  本通信系统由发射部分和接收部分组成,工作方式为单工。发射部分由发射模
  • 数据通信中,数据在线路上的传送方式可以分为单工通信、半双工通信和全双工通信三种。 ewlw半双工通信:半双工通信是指数据可以沿两个方向传送,但同一时刻一个  半双工总线结构 信道只允许单方向传送...
  • (2)管道是一种半双工通信方式(通信方式有单工(固定接收方发送方,接收方只能接收,发送方只能发送)、半双工(如同对讲机,两端可以切换写入和接收)、全双工(每端都可以接收和写入,且可以同时进行))。...
  • 引言  在众多的高空探测手段中,GPS探空仪作为一种新型的探测手段,探空仪是一种测量高空大气温、压、湿、风的... 通信系统的设计与实现  本通信系统由发射部分和接收部分组成,工作方式为单工。发射部分由发射模
  • 2.管道是一种单工或者说半双工的通信方式,传递信息的方向是固定的,只能由一端传递到另一端。头文件及函数原型:#include int pipe(int fd[2]);当用pipe 创建管道后,两个文件描述符fd[0],fd[1]就可以使用了,其中fd...
  • 2.半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。 3.全双工...
  • 1.并行通信:是指数据的各位同时在多根数据线上发送或接收。如下图 并行通信的特点:控制简单,传输速度快;由于传输线较多,适用于短距离通信。 2.串行通信:是指数据的各位在同一根数据线上逐位发送和接收。如下...
  • 它使用单工对讲方式工作,工作频率在915.012 5~916.087 5 MHz之间。该系统具有无中心组网、数字选呼、自动接续、多址用户多信道共用、链路分散控制等诸多技术特点,拥有广阔的实际应用前景和深入开发潜力。该系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,585
精华内容 3,834
关键字:

如何实现单工通信?

友情链接: 新建文件夹.rar