gpt4 book ai didi

c++ - GetQueuedCompletionStatus 停止读取串口

转载 作者:可可西里 更新时间:2023-11-01 11:41:00 28 4
gpt4 key购买 nike

我有一个通过串行端口生成消息的设备。当我重新启动设备时,IO 完成端口停止读取字节。

代码是调用 GetQueuedCompletionStatus():

BOOL bRet = GetQueuedCompletionStatus(
m_hCompletionPort,
&dwBytesTransferred,
&dwCompletionKey,
&pOverlapped,
INFINITE);

PortMon 看起来像:

...
IRP_MJ_WRITE Serial1 SUCCESS LENGTH: 7 REBOOT.
IRP_MJ_READ Serial1 CANCELLED LENGTH: 1

记录显示以下结果:

bRet=true, dwBytesTransferred=7, pOverlapped=0x0202B028, GetLastError()=997
(sleep forever)

有什么方法可以检测到这种故障并重新建立通信吗?

我可以监视热跳动并关闭/重新打开串行端口,但 Windows API 允许串行通信像这样静静地中断似乎不对。

最佳答案

如果您对打开以开始读取数据的串行端口的句柄执行WaitForSingleObject,那么当设备重新启动时句柄是否会发出信号?也许这是一种告诉您何时需要再次打开端口的方法?

关于c++ - GetQueuedCompletionStatus 停止读取串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1409364/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com