串口硬件流量控制说明

来源:互联网 发布:申万证券交易软件 编辑:程序博客网 时间:2024/05/21 09:26

流量控制 对 串口而言,意味着 可以停止发送 然后重新开始,而不丢失任何数据

用专用的控制线来发送 “停止”和“开始”信号

RTS   Request To Send   我可以接受数据,请求发送数据给我
CTS   Clear     To Send     允许我发送数据给你?
当一端 准备接受数据时, 它将RTS 升为 高电平(意思是 Request To Send to me).
如果它不能接受更多的数据时, 它将RTS降为 低电平(表示stop sending to me),

对于PC机, 或者non-modem这样的终端设备, 它的CTS线  与 另外一端的 RTS线相连接

Linux系统只支持RTS/CTS流量控制 (当然可以自己写一个特殊驱动来支持DTR/DSR流量控制)

如果一端准备停止接受, 它就将RTS降为 -5V, 意思是, request NOT to send to me(停止发送)
如果处理完毕,可以接受更多数据时,将RTS拉为 高电平,    接收的数据流 就恢复了

流控信号的发送方向,跟 信息数据的发送 方向恰好是相反的

有时候,这两个信号的定义,容易跟 原始的RTS的用途(I Request To Send to you)混淆,
用来请求发送, 跟数据的流动方向相同。并且它只保护一个方向的数据流(从PC到modem的)

DTR,告诉别人自己上电了,可以操作了

硬件流控是靠软件实现的,之所以强调“硬件”二字,仅仅是因为硬件流控提供了用于流量情况指示的硬件连线(CTS/RTS),并不是说,你只要把线连上,硬件就能自己流控。如果软件不支持,光连上RTS和CTS是没有用的。

软件流控 不需要 额外的连线, 只需要TxD和RxD, 在数据通道上 发送特殊的流量控制字符来实现

DCB.fOutxCtsFlow = TRUE 表示, DTE的CTS信号在关闭状态下, DTE将不能发送数据, WriteFile() 会Pending状态.

转载连接处:http://blog.163.com/hastenlin@126/blog/static/9486185820111125124787/

 

0 0
原创粉丝点击