说说流控制(RTS/CTS/DTR/DSR 你都明白了吗?)【转】

转自:http://bbs.ednchina.com/BLOG_ARTICLE_129041.HTM

以前写的博文,转过来

 

==============

 

先引用一篇网文,作者不详,因几个地方都说自己是原创,我昏了,不知道是谁原创的  

 

RS232中RTS和CTS的作用 
问:
以前挺明白的,今天一下子觉得以前的理解都不对了,以下三种解释哪个对呢?

 

解释一:
RTS:终端我已经准备就绪,有数据就发过来吧
CTS:来了,接招

 

解释二:
RTS:终端我准备发数据给你,快用CTS应答,准备好没?
CTS:好了,来吧

 

解释三:
CTS:主机,我有数据,请求接收
RTS:我是主机,就绪,请求发送。

 

我今天弄了个SIM100模块,我将RTS设置无效之后,凡是要发往主机的数据都没有发过来(包括主动数据RING),指令和指令返回结果都没有返回,都缓存在模块之中,等我将RTS设置有效后,缓存的数据全发来了,包括一大堆指令的执行结果,由此,我觉得上面的“解释一”应该正确,而“解释二”应该是错的,但“解释三”是否正确呢?就是说CTS和RTS哪个是发起者呢?

 

答:
一是错的
二是RS232标准
三是MODEM的硬件流控
SIMCOM公司的解释完全正确

 

    很久很久以前,计算机还没有出现,那时就已经存在了(计算机)史前的串口设备(电传打字机,工控测量设备,通信调制解调器),为了连接这些串口,EIA制定了RS232标准,采用DB25接插件,支持同步和异步串口,D型的接口可以有效防止插反。标准化给使用带来了便利。
    时光荏苒,个人计算机出现了,这些已有的串口设备毫无疑问地成为了最初的外设,自然而然地RS232标准被个人计算机采纳。但是设备制造商倾向于体积更小,成本更低的接口,因此,将DB25中未使用的和支持同步模式的引脚去掉,形成DB9。最初的情况相当混乱,因为DB9只定义了信号,却没有指定信号和引脚的对应关系,各个制造商只能自行定义。幸运的是,IBM的PC成了工业标准,DB9逐渐统一到IBM的定义上来。
    DB9只有9根线,遵循RS232标准。定义如下:
    DTR,DSR------DTE设备准备好/DCE设备准备好。主流控信号。
    RTS,CTS------请求发送/清除发送。用于半双工时,收发切换。属于辅助流控信号。半双工的意思是说,发的时候不收,收的时候不发。那么怎么区分收发呢?缺省时是DCE向DTE发送数据,当DTE决定向DCE发数据时,先有效RTS,表示DTE希望向DCE发送,一般DCE不能马上转换收发状态,DTE就通过监测CTS是否有效来判断可否发送,这样避免了DTE在DCE未准备好时发送所导致的数据丢失。
    全双工时,这两个信号一直有效即可。
    
    随着计算机的日益普及,很多非RS232的串口也要接入PC机,如果为每一种新出现的串口都增加一个新的I/O口显然不现实,因为PC后面板位置有限,因此,将RS232串口和非RS232串口都通过RS232口接入是最佳方案。UART的U(通用)指的就是这个意思。早期ROM BIOS和DOS里的通信软件都是为RS232设计的,在没有检测到DCD有效前不会发送数据,因此,就连发送一个字符这样朴素的应用也要给出DCD、DTR、DSR等控制信号。因此,串口接头上要将一些控制线短接,或者干脆绕过系统软件自己写通信程序。
    到此,UART的涵义就总结为:通用的 异步 (串行) I/O口。
    就在UART冠以通用二字,准备一统江湖的时候,制造商们不满于它的速度、体积和灵活性(软件可配置),推出了USB和1394串口。目前,笔记本上的UART串口有被取消的趋势,因而有网友发出了“没有串口,吾谁与归”的慨叹,古今多少事,都付笑谈中,USB取代UART是后话,暂且不表。
    话说自从贺氏(Hayes)公司推出了聪明猫(SmartModem),他们制定的MODEM接口就成了业界标准,自此以后,所有公司制造的兼容猫都符合贺氏标准(连AT指令也兼容,大家一起抄他呗)。
    细观贺氏制定的MODEM串口,与RS232标准大不相同。DTR在整个通信过程中一直保持有效,DSR在MODEM上电后/可以拨号前有效(取决于软件对DSR的理解),在通信过程的任意时刻,只要DTR/DSR无效,通信过程立即终止。在某种意义上,这也可以算是流控,但肯定不是RS232所指的那种主流控。如果拘泥于RS232,你是不会理解DTR和DSR的用途的。
    贺氏不但改了DTR和DSR,竟然连RTS和CTS的涵义也重新定义了。因此,RTS和CTS已经不具有最开始的意义了。从字面理解RTS和CTS,是用于半双工通信的,当DTE想从收模式改为发模式时,就有效RTS请求发送,DCE收到RTS请求后不能立即完成转换,需要一段时间,然后有效CTS通知DTE:DCE已经转到发模式,DTE可以开始发送了。在全双工时,RTS和CTS都缺省置为有效即可。然而,在贺氏的MODEM串口定义中,RTS和CTS用于硬件流控,和什么劳什子的全双工/半双工一点关系也没有。
    注意,硬件流控是靠软件实现的,之所以强调“硬件”二字,仅仅是因为硬件流控提供了用于流量情况指示的硬件连线,并不是说,你只要把线连上,硬件就能自己流控。如果软件不支持,光连上RTS和CTS是没有用的。
    RTS和CTS硬件流控的软件算法如下:(RTS有效表示PC机可以收,CTS有效表示MODEM可以收,这两个信号互相独立,分别指示一个方向的流量情况。

 

========== 我是分隔线 ==========

 

以下是我的几句胡言乱语

 

最近在捣鼓一个GSM模块,正好也要用到这东西,就baidu了一把,可以帮助我理解Datasheet的内容。看了上面的内容,我不知道各位明白了几分,如果觉得都明白了,就不用看我废话了。

 

还是先引用一些文字,来自Telit公司GM862 QUAD/PY的数据手册
Pin Signal    I/O  Function
20 C103/TXD I Serial data input (TXD) from DTE
29 C106/CTS O Output for Clear to send signal (CTS) to DTE
33 C107/DSR O Output for Data set ready signal (DSR) to DTE
37 C104/RXD O Serial data output to DTE
43 C108/DTR I Input for Data terminal ready signal (DTR) from DTE
45 C105/RTS I Input for Request to send signal (RTS) from DTE

 

注意上面各个功能的I/O的方向,看到这些缩写的全称,结合信号流向,是不是更容易理解呢  

 

DTE是数据发送的主动方,DCE是数据的接受方。

 

CTS是让DTE明白的,也就是说DCE需要把自己的CTS给DTE看,让他知道DEC已经准备好接受数据了。
RTS是DTE给DCE看的,告诉DCE,DTE有数据要发。

 

好啦,这个话题就到这里~~  还没看懂的同学继续.....

时间: 2024-09-21 11:08:37

说说流控制(RTS/CTS/DTR/DSR 你都明白了吗?)【转】的相关文章

UART中的硬件流控RTS与CTS DTR DSR DTE设备和DCE设备【转】

中低端路由器上使用disp interface 查看相应串口状态信息,其中DCD.DTR.DSR.RTS及CTS等五个状态指示分别代表什么意思? DCD ( Data Carrier Detect 数据载波检测) DTR(Data Terminal Ready,数据终端准备好) DSR(Data Set Ready 数据准备好) RTS( Request To Send 请求发送) CTS(Clear To Send 清除发送) 在这五个控制信号中,DTR和RTS是DTE设备(数据终端设备,在实

互联网时代,大家都明白电商用户体验的重要性

随着经济的不断发展和生活水平的不断提高,人们对于http://www.aliyun.com/zixun/aggregation/4762.html" style="line-height: 1.6;">商品与服务的要求不仅仅限于"有"就行,还必须"好"才行. 一.用户体验必须系统化.用户体验本质上是一种商品或服务与人之间的关系,它从来不是一个单独的个体或概念,而是企业营销服务生态系统中重要组成部分.无论是商品设计.网站展示.服务模

UART中的硬件流控RTS与CTS【转】

转自:http://blog.csdn.net/zeroboundary/article/details/8966586 5/23/2013 5:13:04 PM at rock-chips inshenzhen 最近太忙了,没时间写对Ucos-II的移植,先将工作中容易搞错的一个知识点记录下来,关于CTS与RTS的. 在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) 推出了聪明猫(SmartModem)后就有点混淆了,不过现在这种意义为主流意义的,各大芯片制造厂家对

PHP在RS232串口通讯协议的应用演示[测试环境WinXP/PHP5.1.4]

php5|应用演示 一. 预先的知识: 什么是RS232/RS484及其应用?       QUOTE:RS232接口就是串口,电脑机箱后方的9芯(或25芯)插座,旁边一般有 "|O|O|" 样标识. 一般机箱有两个,新机箱有可能只有一个.笔记本电脑有可能没有. 有很多工业仪器将它作为标准通信端口.通信的内容与格式一般附在仪器的用户说明书中. 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式.由于串行通讯方式具有使用线路少.成本低,特别是在远程传输时,避免了

RTS与CTS的含义【转】

转自:http://www.cnblogs.com/sunyubo/archive/2010/04/21/2282176.html 一.RS232标准中的RTS与CTS RTS,CTS------请求发送/清除发送,用于半双工时的收发切换,属于辅助流控信号.半双工的意思是说,发的时候不收,收的时候不发.那么怎么区分收发呢?缺省时是DCE向DTE发送数据,当DTE决定向DCE发数据时,先有效RTS,表示DTE希望向DCE发送.一般DCE不能马上转换收发状态,DTE就通过监测CTS是否有效来判断可否

推广没那么容易 每个平台都有它的脾气

<没那么简单>里面有一句歌词叫"相爱没有那么容易,每个人都有它的脾气",我做为一名草根站长,建伟想说的 一句话是"推广没那么容易,每个平台都有它的脾气",目前互联网上的推广平台日益增多,但是不管哪种平台,只要找到适合自己的平台,不断创新营销,并把它做到极致,就一定能够在网络营销的大军中脱颖而出,这点也让我想起了牟常青说的一句话:任何一种网络推广的方法做到极致都是一种好的方法. "小而不全,全而不精,精而不专" 想必很多站长都存在这样的

为什么每个大型企业网站都需要SEO

昨天在课堂上给学生谈到了关于网络营销技术的一些相关问题,今天我想谈谈为什么为什么每个大型企业网站都需要seo的问题!大家都明白seo是搜索引擎优化,为什么每个大型的网站都要做seo呢?或许有些人想过,有些人只是盲目的去做.我在这里就简单的总结几个理由 1. seo能够让行业网站中的产品和服务更加完善,让客户更满意你网站中的产品,这一流程具体是怎么王城的呢?你耐心的往下看,我会一一的为你解答清楚.行业网站通过什么样的手段来吸引顾客的呢?很简单,在每个顾客的心里,他们都喜欢大减价大卖场模式,掌握这个

每个时代都有梦想

引言 09年刚入行互联网,当时我对互联网的理解是:互联网就是电子商务.因为任何互联网产品形态,最终都靠电子商务买卖变现.基于这个理解,我将当时的社区类产品规划为电子商务.于是,我急忙给两个搭档说:我要干电子商务!因为现在不干,以后就没的干. 产品人格言:每个时代都有梦想 当时搭档的一句话,让我印象深刻:每个时代都有它该有的梦想.我们现在专心做社区,即便错过了电子商务,过一些年又会有新的梦想出来. 1.那些时代造就的梦想 QQ,开始的梦想是做成IM聊天工具,完全都没有商业模式.赶上SP服务的时代,

栗宪庭:我要让人人都能消费艺术

他希望用一种艺术集市的新形式,把当代艺术带出由极少数人操纵的圈子 文|<创业家>记者 何宽 "叫他老栗就可以了."这是我见到栗宪庭时他的朋友说的.在当代艺术圈里,作为艺术批评家的栗宪庭是公认的少数极具影响力的人之一.在我的印象中,他的名字应该经常和岳敏君.王广义这样的艺术大腕们出现在一起,不起眼,但是份量十足. 我不熟悉朋友口中的"老栗",我只知道那个被称作"当代艺术教父"的栗宪庭:他在上世纪80年代初首先介绍了"星星画派&