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

jww*_*jww 3 winapi serial-port wait

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

  1. 打开端口(使用OVERLAPPED)
  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示例有点蹩脚(监控通信事件).我目前正在使用两个事件,但ReadFile步骤失败了ERROR_INVALID_PARAMETER.

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

Rem*_*eau 7

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

串行通信