XP下关闭串口问题

极速闪电 2005-05-27 12:32:49
在XP下面,在一个界面初始化时调用打开串口的函数,关闭时调用关闭串口的函数,如果‘打开/关闭’重复三次以上,就会出错,提示一出错时的信息'串口初始化错误'。不知怎么回事。估计是串口没有被关闭。(在Winme下绝少出现此情况)请问下应该怎么关闭串口?程序如下:
void Comm::OpenCom(CString strCom)
{
memset(&ov_read,0,sizeof(OVERLAPPED));
memset(&ov_write,0,sizeof(OVERLAPPED));
recvEvent=CreateEvent(NULL,TRUE,TRUE,NULL);
ov_read.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
ov_write.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
wndThread=hWndParent;//AfxGetMainWnd()->m_hWnd;
threadHnd=CreateThread((LPSECURITY_ATTRIBUTES)NULL,
0,
(LPTHREAD_START_ROUTINE)watchCom, (LPVOID)NULL,
0,
&threadID);
h_Com=CreateFile(strCom,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(h_Com==(HANDLE)-1)
AfxMessageBox("串口初始化错误.");
if(!SetCommMask(h_Com,EV_CTS|EV_RXCHAR|EV_TXEMPTY))
AfxMessageBox("设置掩膜失败");

}

void Comm::CloseCom()
{
CloseHandle(h_Com);
CloseHandle(recvEvent);
CloseHandle(ov_read.hEvent);
CloseHandle(ov_write.hEvent);
CloseHandle(threadHnd);

}
...全文
105 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qrlvls 2005-05-27
  • 打赏
  • 举报
回复
这样看来是木有问题的,与你其他代码有关
极速闪电 2005-05-27
  • 打赏
  • 举报
回复
但是一样的代码,我在Winme下面就没有问题的。

3,245

社区成员

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

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