Win32,串行端口读/写和重叠

问题描述:

我正试图把读/写到串口的概念证明放在一起,而我遇到了设计/概念问题。我不想轮询,所以我试图使用重叠I/O。在这种情况下,它不是一个多线程应用程序 - 它只是使用高效的等待。Win32,串行端口读/写和重叠

  1. 开放端口(具有重叠)
  2. SetCommState(设置端口波特率,奇偶校验,CTS/RTS等)
  3. SetCommMask(EV_BREAK,EV_CTS,EV_DSR,...,EV_RXCHAR,EV_RXFLAG,EV_TXEMPTY)
  4. 创建OVERLAPPED结构和活动
  5. 的WriteFile(端口)
  6. WaitCommEvent(由于写)
  7. WaitCommEvent(因念)
  8. ReadFile的(从端口)
  9. 检查读缓冲

的MSDN例子是种跛脚(Monitoring Communications Events)。我目前使用两个事件,但ReadFile步骤与ERROR_INVALID_PARAMETER一起失败。

在上面的步骤中,我是否需要一个或两个重叠结构?如果一个OVERLAPPED结构,是步骤WriteFileWaitCommEvent(用于写入),重置事件,WaitCommEvent(用于读取),ReadFile

+1

你需要证明你实际的代码,而不是你的代码的说明,如果你期望任何人都能够帮助你。没有看到你实际传递给'ReadFile()'的参数,你期望得到帮助,找出它为什么会抱怨它们? –

看一看这篇文章,它更深入了解如何使用重叠I/O串行端口:

Serial Communications