我正在尝试整理一个用于读取/写入串行端口的概念证明,但我在设计/概念方面遇到了问题。我不想轮询,所以我尝试使用 Overlapped I/O。在这种情况下,它不是一个多线程应用程序——它只是使用高效的等待。
- 打开端口(重叠)
- SetCommState(设置端口波特率、奇偶校验、CTS/RTS 等)
- SetCommMask(EV_BREAK、EV_CTS、EV_DSR、...、EV_RXCHAR、EV_RXFLAG、EV_TXEMPTY)
- 创建重叠的结构和事件
- WriteFile(到端口)
- WaitCommEvent(由于写入)
- WaitCommEvent(待读)
- 读取文件(来自端口)
- 检查读缓冲区
MSDN 示例有点蹩脚(监控通信事件)。我目前正在使用两个事件,但该ReadFile
步骤以ERROR_INVALID_PARAMETER
.
在上述步骤中,我需要一个或两个重叠结构吗?如果是一种OVERLAPPED
结构,是步骤WriteFile
,WaitCommEvent
(用于写入),重置事件,WaitCommEvent
(用于读取)ReadFile
,?