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

时间:2012-09-19 22:30:12

标签: 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(to port)
  6. WaitCommEvent(由于写入)
  7. WaitCommEvent(由于阅读)
  8. ReadFile(来自端口)
  9. 检查读取缓冲区
  10. MSDN示例有点蹩脚(Monitoring Communications Events)。我目前正在使用两个事件,但ReadFile步骤因ERROR_INVALID_PARAMETER而失败。

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

1 个答案:

答案 0 :(得分:7)

看一下这篇文章,关于如何在串口上使用重叠I / O更加全面:

Serial Communications