串口类CserialPort的问题,请求帮助。

Peter.song 2014-06-06 09:55:40
发现问题:当发送完数据后,串口没有任何返回时以下代码会循环卡死。
测试情况如下:
1、发送"AT\r",串口可以正常返回OK
2、发送"A\r",因为终端内部识别到"A\r"是无效数据所以没有任何数据吐出。之后,串口类无法处理写事件,因为读事件一直占用。

以上,请各位帮忙分析。谢谢

for (;;) 
{
bResult = WaitCommEvent(port->m_hComm, &Event, &port->m_ov);

if (!bResult)
{
// If WaitCommEvent() returns FALSE, process the last error to determin
// the reason..
switch (dwError = GetLastError())
{
case ERROR_IO_PENDING:
{
break;
}
case 87:
{
break;
}
default:
{
port->ProcessErrorMessage("WaitCommEvent()");

// add 2014-05-30 by shq, 检测到错误后停住串口进程
CloseHandle(port->m_hComm);
port->m_hComm = NULL;
port->m_bThreadAlive = FALSE;

AfxEndThread(100);
return 0;
// end
}
}
}
else
{
bResult = ClearCommError(port->m_hComm, &dwError, &comstat);

if (comstat.cbInQue == 0)
continue;
} // end if bResult
}
...全文
140 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧