使用API函数打开串口,关闭后再打开即出错!
最近使用CreateFile进行串口操作,环境为vc2013 unicode 下,使用句柄函数打开
if (!m_Com.NewConnection(DATA_BY_CALLBACK, 0, nPort, this, OnCallbackComMsg))
{
MessageBox(_T("串口打开错误!"), _T("错误"), MB_ICONINFORMATION);
return;
}
HANDLE CComLink::OpenConnection(AFX_THREADPROC pfnThreadProc, BYTE nPort)
{
HANDLE h_Com;
wchar_t szPort[15];
COMMTIMEOUTS CommTimeOuts;
wsprintf(szPort,_T("\\\\.\\COM%d"),nPort);
h_Com = CreateFile(szPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
if(h_Com == INVALID_HANDLE_VALUE)
return NULL;
……
}
打开后关闭
m_Com.CloseCom();
BOOL CComLink::CloseCom(/*HANDLE h_Com*/)
{
m_bConnected = false;
return FindClose(m_hCom);
}
发现运行后,第一次打开串口(笔记本插入usb转rs232线,串口号5),正常,也能发送数据
然后点关闭后再次打开,即出错,显示打开错误!跟踪显示句柄为0fxxxxxxxx。
不知何原因?如何解决?