4

我正在尝试整理一个用于读取/写入串行端口的概念证明,但我在设计/概念方面遇到了问题。我不想轮询,所以我尝试使用 Overlapped I/O。在这种情况下,它不是一个多线程应用程序——它只是使用高效的等待。

  1. 打开端口(重叠)
  2. SetCommState(设置端口波特率、奇偶校验、CTS/RTS 等)
  3. SetCommMask(EV_BREAK、EV_CTS、EV_DSR、...、EV_RXCHAR、EV_RXFLAG、EV_TXEMPTY)
  4. 创建重叠的结构和事件
  5. WriteFile(到端口)
  6. WaitCommEvent(由于写入)
  7. WaitCommEvent(待读)
  8. 读取文件(来自端口)
  9. 检查读缓冲区

MSDN 示例有点蹩脚(监控通信事件)。我目前正在使用两个事件,但该ReadFile步骤以ERROR_INVALID_PARAMETER.

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

4

1 回答 1

10

看看这篇文章,关于如何使用重叠 I/O 和串行端口更彻底:

串行通信

于 2012-09-19T23:02:34.317 回答