串口握手协议的XON\XOFF原理

串口握手协议的XON\XOFF原理有人可能搞不清楚,看看下面这个例子你应该能有所感悟。

假设电脑A和电脑B通过RS232串口通信

A 和 B协商使用软件握手协议(dcb.fOutX = TRUE), 定义XonChar \ XoffChar 比如XonChar = 1,

XoffChar = 2.

现在, A向B发送字符2, B向A发送字符串"helloworld". A能收到字符串"helloworld"吗? 不行的.

B向A发送字符1后, A将会收到字符串"helloworld".

问题:是A向B发XoffChar? 还是B向A发XoffChar?

举个形像例子,李四有很多书,现在一本本的传递给张三,张三突然要去厕所,想李四暂停一会儿,于是

张三对李四说:“暂停!”,李四听到后,就停下来不再把书传给张三。
“张三”就是通信的接收端,“李四”是通信的发送端。

XoffChar的传送方向是 接收端 ——> 发送端

当张三从厕所回来后,对李四说:“我回来了,开始吧”。于是,李四把剩余的书一本一本的传递给张三

同理,XonChar的传送方向也是 接收端 ——> 发送端。


问题:发送端接收到XoffChar之后,还没有发送成功的字符由谁保管? 
答:  操作系统。

串口发送信息使用WriteFile(), 如果是overlap方式,发送端收到XoffChar后,WriteFile()会返回FAILE, 
GetLastError() ==  ERROR_IO_PENDING.

如果是非overlap方式,程序会在WriteFile()在停下来, 等待发送成功,当然,还要考虑到Timeout的设置.

接下来继续深入WriteFile的Overlap原理。 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值