不要指望用同步方式同时收、发串口数据

原创 2007年10月11日 23:35:00

很久以前记下的一条血的教训,当时折腾了很长时间,才从书上看到这个结论。串口通信时,如果你希望数据到达能监听到,那你可能会为了简单,而使用同步方式来实现数据的收发,用SetCommEvent来设置数据到达事件提醒,在监听线程中使用WaitCommEvent来等待数据的到达,数据一直没来,这时你又想要发送数据,于是用WriteFile来写,但此时你会发现,程序会锁死,为什么?如何解决?

据书上说,可能的原因是:同步方式下,一个API函数还没有执行完的时候,是会一直阻塞在一处的,这就导致了在数据一直没有到达的时候,监听线程中的WaitCommEvent函数永远阻塞,所以当你想要再WriteFile,就进行不下去了,程序就会锁死。

据书上说,解决方案就是将同步改成异步。想要在同步方式下实现,书上说还没发现有什么办法可以解决。就我的惨痛经历来说,我试了N种方法,也没有发现解决办法,最后只能改成异步模式,就把问题解决了。用同步模式是为了图简单,结果反而造成了巨大的麻烦,还是要用回异步模式,血的教训。

usart学习笔记

usart 通用同步/异步串行收发接口 uart为通用异步串行收发接口 异步通信数据格式:起始位,数据位(最低为5位最高为9位),奇偶校验位 ,停止位...
  • suohailongjob
  • suohailongjob
  • 2015年09月21日 22:11
  • 446

一种串口高效收发思路及方案

摘要:本文在探讨传统数据收发不足之后,介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法;之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,...
  • zhzht19861011
  • zhzht19861011
  • 2015年09月17日 15:46
  • 7390

Android串口通信的数据同步上传

Android串口通信是很多行业比较重要的一项技术,既然有通信,就一定存在着数据,而且多数情况下,这个数据有着共同的特点,数据量大、实时性强、数据格式固定等。串口通信大多以字节数组的形式相互传送,通过...
  • qq_31336019
  • qq_31336019
  • 2016年09月08日 10:41
  • 415

Linux系统串口接收数据编程

之前基于IBM deveplopworks社区的代码,做了串口初始化和发送的程序,今天在此基础上添加了读取串口数据的程序。首先是最简单的循环读取程序,第二个是通过软中断方式,使用信号signal机制读...
  • u010871058
  • u010871058
  • 2017年03月21日 20:41
  • 599

一种串口高效收发思路及方案

摘要:本文在探讨传统数据收发不足之后,介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法;之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,...
  • zhzht19861011
  • zhzht19861011
  • 2015年09月17日 15:46
  • 7390

什么是UART中的FIFO ?

FIFO是先进先出缓冲区的意思,即串口接收到的数据可以先进入FIFO,不必马上进入中断服务程序接收,这样可节省CPU时间。对于发送数据也一样,可以把要发送的数据一起写入FIFO,串口控制器可按写入顺序...
  • zlsh007
  • zlsh007
  • 2014年06月27日 23:28
  • 2637

STM32 USART串口DMA接收和发送模式

STM32 USART串口DMA接收和发送模式 温馨提示:需要下载资料的请到原文下载 串口DMA发送: 发送数据的流程: 前台程序中有数据要发送,则需要做如下几件事 1.  ...
  • sandform
  • sandform
  • 2016年05月18日 16:33
  • 4106

MTK之UART串口收发数据

MTK之UART
  • ivy_reny
  • ivy_reny
  • 2016年04月19日 17:00
  • 3123

关于串口接收的处理策略

串口;接收;粘包;断帧
  • u010456460
  • u010456460
  • 2016年11月02日 16:32
  • 2114

STM32之USART串口接收数据处理

//原帖http://bbs.elecfans.com/forum.php?mod=viewthread&tid=445463 //在学习过程中发现几处编译错误,并改正; //主要贴出定义、和...
  • u010230055
  • u010230055
  • 2016年04月28日 22:01
  • 23651
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不要指望用同步方式同时收、发串口数据
举报原因:
原因补充:

(最多只允许输入30个字)