• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 串口编程中的流控制

串口编程中的流控制

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了c#串口编程,串口编程,qt串口编程实例,linux串口编程,c#串口编程实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 串口编程中的流控制
描述:

   一般在工业上,为了数据不发生丢失,一般采用硬件流和软件流控制?
  硬件流:在DB9的接口上,除了TX,RX,GND,还需要用到:DTR/DSR方式和RTS/CTS方式。在实现时,是不是这两个信号用一般的GPIO来控制?再结合软件来实现?我有一个疑问:我们一般用的串口通信只用了TX,RX,GND一样通信,为什么用这两个多余的信号?我也没看见说只用三个信号线有数据丢失多严重的现象?
  软件流怎么用?求大神指教啊


解决方案1:

引用 10 楼 u013816798 的回复:
Quote: 引用 9 楼 sprawling 的回复:

流控制的目的就是告訴通信的對方什麼時候喂數據,什麼時候自己飽了.

那DB9上的这几个接口DTR/DSR方式和RTS/CTS其实在使用时也是用一般的GPIO来控制,在实际编程中也是if判定?还是说UART控制器自己有一套自己的硬件机制来实现这个协议?

如果你的单片机 UART 模块支持全双工,那么 DTR/DSR 就不需要。一般来说,PC 端不需要接收时流控制,RTC 也不必使用。这样将剩下了 CTS(表示相当于 Modem 的外设可接收),可用来表示 MCU 忙(注意,信号无效为忙)。此情况下,单片机是 CTS 信号的发送方,它不需要对此信号进行判断。在 PC 端,这个信号需要应用软件去处理。
引用 12 楼 schlafenhamster 的回复:
其中XON采用ASCII字符集中的控制字符DC1(0x11),XOFF采用ASCII字符集中的控制字符DC3(0x13)
软件每接受到一个 字符 必须检查是不是 控制字符DC, 因而 只能 用于 字符(文本)通讯,因为 二进制 通讯 区分不了 DC (0x11,0x13)

XON 和 XOFF 都是接收方发送的,因此不存在从数据流中识别控制字的问题。
比如,你的单片机接收 PC 发送的数据,当你需要暂停时,就发送 XOFF;可以重新开始时,再发送 XON。
在 PC 端,XON/XOFF 是用户不可见的。假设你在 PC 端使用 WriteFile() API 发送数据,当驱动层接收到 XOFF 时,如果你使用的是 overlap 方式,WriteFile() 会返回 FAILE。如果你用 GetLastError()  提取错误,将得到 ERROR_IO_PENDING。如果你使用的是非 overlap 方式,程序会在 WriteFile() 处停下来, 等待发送成功(如果未超时)。

解决方案2:

引用 10 楼 u013816798 的回复:
Quote: 引用 9 楼 sprawling 的回复:

流控制的目的就是告訴通信的對方什麼時候喂數據,什麼時候自己飽了.

那DB9上的这几个接口DTR/DSR方式和RTS/CTS其实在使用时也是用一般的GPIO来控制,在实际编程中也是if判定?还是说UART控制器自己有一套自己的硬件机制来实现这个协议?

如果你的单片机 UART 模块支持全双工,那么 DTR/DSR 就不需要。一般来说,PC 端不需要接收时流控制,RTC 也不必使用。这样将剩下了 CTS(表示相当于 Modem 的外设可接收),可用来表示 MCU 忙(注意,信号无效为忙)。此情况下,单片机是 CTS 信号的发送方,它不需要对此信号进行判断。在 PC 端,这个信号需要应用软件去处理。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 串口编程中的流控制
  • 怎样编程建立串口?

相关文章

  • 2017-06-05 请问是否有什么工具软件可以随时抓取PCMCIA接口的数据
  • 2017-06-05 纯小数的补码原码
  • 2017-06-05 想应聘手机驱动这个职位,需要准备什么?
  • 2017-06-05 请问游戏摇杆的油门踏板什么原理呢?
  • 2017-06-05 编译报错\vadefsh:19:42:#errorERROR:OnlyWin32targetsupported!
  • 2017-06-05 DDR3local_init_done一直拉低,无法初始化
  • 2017-06-05 如何用SoftICE调试自己开发的驱动程序呢??
  • 2017-06-05 98驱动与2000驱动源代码有什么区别啊
  • 2017-06-05 104-AI12-8模拟多功能I/O板的数据采集(AD转换)的相关问题,求大神指点迷津!!!
  • 2017-06-05 液晶屏驱动芯片SSD1963的小问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 光驱挂载不上我用的HI3531
    • 怎样用驱动处理光盘弹出的消息?
    • 51单片机中,正在执行定时器中断程序时,定时器是否还在计数?
    • 怎么监控下载速度,让下载速度低于某值的时候发出声音通知我?
    • 看看下面的程序哪里的语法错误
    • 请问一下,有什么版本的linux里的fdisk可以正确的识别DOC盘的吗?
    • windowsxpddk下载
    • C程序调用汇编程序
    • modbus寄存器数据进制转换问题
    • 怎么用c来开发嵌入式手机输入系统?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有