PC端处理:

本端发送
          当 发现(不一定及时发现) CTS (-3V to -15V)无效时,停止发送,
          当 发现(不一定及时发现) CTS (3V to 15V)有效时,恢复发送;
    本端接收
          0<M<N<LEN_OF_RX_BUFFERS(不要在处于边界时才给出指示,否则对端很有可能来不及停发而造成本端接受缓冲区溢出。)
          当接收buffers中的bytes<M 时,给 RTS 有效信号(+3v to +15v),
          当接收buffers中的bytes>N 时,给 RTS 无效信号(-3v to -15v);
   
    MODEM端处理:
          同上,但RTS与CTS交换

图1表示DTE向DCE发送数据时的流控过程。DTE和DCE一般都会有一定容量的FIFO(先入先出)缓冲区,例如16字节。DTE以设定的波特率(如115200)向DCE发送数据,当DCE的FIFO缓冲区快满时,DCE使CTS无效,DTE软件检测到此信号后停止发送。同时DCE继续向电话线上发送数据,一旦发出,DCE的FIFO就变成不满,CTS恢复有效,允许DTE继续写入。串口波特率只是接口速率,不是Modem的实际传输速率,一般发送都快于接收,为避免溢出丢失数据,均需要接收端控制发送端发送速度,即流控。
    DCE向DTE发送数据用RTS进行流控,过程与上面讲的类似。

流控在通信里的作用非常重要,它能使发送和接收保持均衡,避免数据因为收发速率不匹配而丢失。例如:在TCP协议里,当数据丢失时,总是假定丢包是由于网络拥塞引起的,此时采用拥塞避免算法,超时时间加倍,拥塞窗减半,尽管此时信道正常,有数据可以发,但因为拥塞窗减小导致不能发送,而且超时等待时间加倍,TCP的性能将急剧下降,测试报告不会好看。信道上因为误码引起的丢包和网络上因为拥塞造成的丢包都是不可控的,而收发速率不匹配造成的数据丢失完全可以通过流控避免,因此,在接收速率小于/等于发送速率的地方都要使用流控。硬件流控不能跨越设备,软件流控可以实现端到端控制。
    注意:MODEM是否配置硬件流控可以通过AT指令动态修改。在不支持硬件流控时,这两个信号在数据传输状态一直有效。此时可以无流控,或者通过ON(0x11)/XOFF(0x13)软件流控。
   
    RI(RingIndicator振铃指示)------------这个引脚用于指示是否有90V铃流信号输入。如果检测到振铃信号,MODEM将周期改变RI引脚电平,变化频率与振铃频率无关,DTE设备检测RI上的电平变化,并计数,一旦符合规定次数,就发出DTR信号,指示DCE摘机应答。以前的“笨猫”没有CPU,所以需要DTE帮助判断是否有拨入,现在的“聪明猫”(HayesSmartmodem)有CPU,完全可以自动应答,我看,这个信号以后就可以省掉了,毕竟RS232是很早以前的标准,已经过时了,不必拘泥于原来的规范。

DTE           DCE        AB                     HJD04D大型程控电话交换机
  ---------     ----------  电话线   ---------   ST-BUS -------------ST-BUS------------   E1
  |FIFO缓冲|---->|FIFO缓冲|--------->|SLIC板|<------->|DSN交换网络|<------>|DTP数字中继|<----->经汇接局到另一端局的相应电路
  ---------     ----------           ---------         -------------        ------------               (左图逆序)
       RTS--><--CTS                    ^                  |     ^
                                        |                  |     |
                         公共资源  ----------------------------------------------------------
                                     铃流源                 |   信号音(拨号/回铃/忙/催挂音)
                                                           V
                                                         DTMF双音多频收号器
                                      图1 硬件流控图(DTE向DCE发送数据)

如图1,MODEM的另一端连接电话线,通过AB线与对端(局端)程控电话交换机SLIC板(用户线接口电路)相连,需要实现用户线信令(摘机、挂机、振铃、拨号音、忙/催挂/回铃音等),还有用于判断链路通断的载波检测。
   
    以上讨论的DB9串口是很早以前设计的,随着技术的发展,MODEM越来越聪明,软件完全可以取代一些硬件控制连线,甚至重新设计MODEM串口。如果今后遇见不符合现在定义的MODEM接口是不足为奇的。

****************************************
    * (4) 串口交叉连接方式和MODEM工作时序  *
    ****************************************
    交叉连接用于两个DTE设备互连
    图略
    (1)最简连接
        用于调试目的等非RS232应用,通信软件不能检测DSR、DCD、CTS信号
        (本端)--(对端):  (2)--(3)  (3)--(2)   (5)--(5)
        1--4--6--7--8--9悬空
    (2)RS232连接
        用于屏蔽RS232通信软件的检测,早期BIOS和OS通信软件只能在符合RS232规则的接口线上运行,此种接法可使其只用3根线即可正常工作。
        短接本端 1--4--6;短接本端 7--8
        (本端)--(对端):  (2)--(3)  (3)--(2)   (5)--(5)
        9悬空
    (3)完全连接
        忽略DCD和RI,带硬件流控的交叉连接
        (本端)--(对端):  (2)--(3)  (3)--(2)  (5)--(5)  (7)--(8)  (8)--(7)  (6)--(4)   (4)--(6)
        1和9悬空
    (4)NULL MODEM连接
        用于模拟两个DTE之间通过MODEM连接。在PPP开发时,可以节省大量通信费用。
        (本端连接)--(对端连接):(2)-(3) (3)-(2) (7--8)--(1) (6--9)--(4) (5)--(5)(1)--(7--8) (4)--(6--9) (9--6)--(4)

MODEM的工作时序:
        在整个通信过程中,DTR和DSR及DCD必须一直有效,RTS和CTS用于硬件流控(软件实现的),RTS有效时指示DTE可以收,CTS有效时指示DCE可以收(详见引脚说明)。
        当电话打入时,交换机SLIC(用户线接口电路)板发出90V振铃信号,MODEM识别后发出RI信号,RI变化频率与振铃频率无关,PC机对RI变化记数,达到触发值时,PC机发出DTR信号通知MODEM摘机应答。MODEM发出载波后有效DSR,通知PC已摘机。当接收到对端载波后,DCD有效,指示话音通道连通。通信完毕任一方停止载波,导致两端载波消失,PC检测到DCD无效,就使DTR无效,MODEM随后使DSR无效响应之,一次通信过程结束。
        现在的MODEM一般都可以自动应答,RI信号可忽略。当MODEM识别出振铃后,摘机应答并发载波,同时有效DSR,通知PC机有拨入,PC随即有效DTR,允许拨入。当收到对端载波,MODEM有效DCD,指示话音通道连通。通信完毕任一方停止载波,导致两端载波消失,PC检测到DCD无效,就使DTR无效,MODEM随后使DSR无效响应之,一次通信过程结束。
        PC机拨出时,先有效DTR,指示MODEM摘机拨号,MODEM回应DSR有效,在识别出拨号音后拨号,然后在回铃音结束后发载波,一旦收到对端载波,MODEM有效DCD,指示话音通路连通。此后,就可以进行PPP协商了。通信完毕任一方停止载波,导致两端载波消失,PC检测到DCD无效,就使DTR无效,MODEM随后使DSR无效响应之,一次通信过程结束。

串口与modem流量控制大全(2)相关推荐

  1. 串口与modem流量控制大全(1)

    MODEM是用户接入互联网的重要设备.虽然网络干线上已经普及宽带光纤传输,但是在拥有庞大用户群的最后一公里路段上,目前最现实的接入方式还是铜线连接(电话线,双绞线.电缆).另外,随着无线技术的发展,采 ...

  2. Delphi 串口通信技术资料

    一.总目录如下所示: 资料1.Delphi安装源文件(总共2个文件,大小:502MB) 资料2.Delphi串口通信源码(总共242个源码,大小:151MB) 资料3.Delphi串口通信技术文章(总 ...

  3. 虚拟串口最大传输速率_【干货】详解RS232、RS485、RS422、串口amp;amp;握手

    RS232.RS485和RS422基础知识 一.RS232基础知识计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式.由于串行通讯方式具有使用线路少.成本低,特别是在远程传输 ...

  4. labview 串口通信开发基础详解

    串口通信的基本概念 串口通信的基本概念 1,什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用设 ...

  5. vb串口 任意波特率_串口通讯基本知识

    串口通信的基本概念 1,什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用设备通信的协议(不要与 ...

  6. 详解RS232、RS485、RS485、串口握手

    一.RS232基础知识 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式.由于串行通讯方式具有使用线路少.成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用 ...

  7. 详解串口通信232/485/422,入门必看!

    关注.星标公众号,直达精彩内容 来源:网路素材 一.RS232基础知识 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式.由于串行通讯方式具有使用线路少.成本低,特别是在远 ...

  8. 232接口针脚定义_详解串口通信232/485/422,一文就可以搞定!

    一.RS232基础知识 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式.由于串行通讯方式具有使用线路少.成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用 ...

  9. Linux串口驱动阅读笔记

    sccv串口驱动学习–8250.c 本文主要记录学习CGEL3(基于Linux version 2.6.21.7) 中关于8250串口驱动代码的心得.代码位于Z:\CGEL3\archto\mips\ ...

最新文章

  1. UIActivityViewController使用
  2. Python面向对象中:__init__() 构造方法
  3. pacemaker集群管理相关命令
  4. 23种设计模式的有趣见解 .
  5. 软件设计师习题笔记-重点习题二
  6. pads铺铜不能开启drp_PADS中常见问题解决方案
  7. 软件测试工程师-数据库
  8. elementui 嵌套表单验证_elementUI 表单嵌套表格验证,日期选择器联动限制等写法
  9. mongodb和mysql创建表_MongoDB 数据库创建删除、表(集合)
  10. 河南城建计算机网络试卷,河南城建计算机网络技术学习心得体会.docx
  11. RHELServer6.2下编译GDAL和mysql和proj4支持
  12. 离线安装包_Altium Designer 19.0.14离线安装包
  13. 生活就像北京的地铁1
  14. 关于 NM_CONTROLLED和Network Manager
  15. Visual studio 无法下载安装
  16. CPT,CPM,CPS
  17. 同济弱鸡21考研逆袭之路(四)
  18. web前端开发入门(一)
  19. R语言基础入门(学习笔记通俗易懂版)
  20. 网络规划设计师怎么样

热门文章

  1. ubuntu远程连接windows工具rdesktop
  2. Android M 新的运行时权限开发者需要知道的一切
  3. 用计算机打字英语单词,常用计算机专业英语词汇-前401-500单词
  4. JavaIO流加解密,AES对字符串加解密
  5. Vector的使用详解
  6. 在vue中操作DOM--this.$nextTick()
  7. 变量的比较之equals 与 == 的区别
  8. angularjs中的分页指令
  9. 小议同步IO :fsync与fdatasync
  10. LINQ是死是活?——很奇怪为什么会有这样的话题?