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

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

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

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

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

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

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

同步串口和异步串口的区别及使用情况

在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。   1、异步串行方式的特点   所谓异步通信,是指数...
  • seashine_yan
  • seashine_yan
  • 2017-05-05 10:56:45
  • 5865

串口同步和异步的读取与串口设备编程

本文主要讲述如何对串口进行高效率的读写,当串口中数据到达时立即读取进行处理,以及如何将该方法运用到串口设备编程中。...
  • wlk1229
  • wlk1229
  • 2016-09-19 23:06:45
  • 5852

同步串口类

头文件// SerialPort.h: interface for the CSerialPort class.// 类名: CSerialPort// 创建人: 郑新华// 创建日期:2005-7-...
  • wumingxing0228
  • wumingxing0228
  • 2010-03-03 11:23:00
  • 1111

串口通讯—同步通信方式

1、同步通信方式的特点: 采用同步通信时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字...
  • u014186096
  • u014186096
  • 2015-06-28 18:55:05
  • 1302

同步串行与异步串行

转自:http://blog.chinaunix.net/uid-22778496-id-2114647.html 串行通信是微机接口的一个重要组成部分,有着极其广泛的应用。随着微机...
  • u012160319
  • u012160319
  • 2015-02-04 15:38:43
  • 1305

串口 同步和异步 理解

本文主要三大块:一,串口同步和异步在地产通行上的区别(这部分点到为止,不是主要探讨内容,有个基本理解即可)。                              二,串口同步和异步编程实例及详解...
  • cs74184235
  • cs74184235
  • 2015-09-14 14:29:02
  • 975

串口--异步通信和同步通信深入理解

在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。 同步和异步大家从名称上就大概知道区别在哪里,简单的说就...
  • spdian
  • spdian
  • 2017-05-05 17:14:28
  • 1367

同步串行通信和异步串行通信

原文地址:同步串行通信和异步串行通信作者:SUN_403   串行通信的数据是逐位传送的,发送方发送的每一位都具有因定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收...
  • Sun19910114
  • Sun19910114
  • 2014-08-19 16:27:40
  • 2144

串行通信里的异步通信与同步通信的区别

一、串行通信基本认识     基本的通信方式有并行通信和串行通信两种。     一条信息的各位数据被同时传送的通信方式称为并行通信。并行通信的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据...
  • changyourmind
  • changyourmind
  • 2016-09-08 14:49:08
  • 11499
收藏助手
不良信息举报
您举报文章:不要指望用同步方式同时收、发串口数据
举报原因:
原因补充:

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