程序在使用串口时出现异常,重新启动程序正常使用串口。而我在出现异常后,通过启动超级终端或重启机器后,程序才能正常启动,为什么?如何解决?谢谢了   附打开串口代码
m_hComDev = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL );
if( m_hComDev == INVALID_HANDLE_VALUE) 
{
CString failstr = "Failed to open " + CString(szPort) +"!";
AfxMessageBox(failstr);
return( FALSE );
} COMMTIMEOUTS CommTimeOuts;
// read timeout is 1s + nb_bytes * 1s
CommTimeOuts.ReadIntervalTimeout = MAXDWORD ; // 1s
CommTimeOuts.ReadTotalTimeoutMultiplier = MAXDWORD ; //1s per byte
CommTimeOuts.ReadTotalTimeoutConstant = READ_TIMEOUT;   //1s constant value
// write timeout is 1s + nb bytes * 1s
CommTimeOuts.WriteTotalTimeoutMultiplier = WRITE_TIMEOUT;
CommTimeOuts.WriteTotalTimeoutConstant = WRITE_TIMEOUT;

if (SetCommTimeouts( m_hComDev, &CommTimeOuts )==0)
{
AfxMessageBox("Failed to assign timeouts");
DWORD dwError = GetLastError();
CloseHandle( m_hComDev );
return FALSE;
}

dcb.DCBlength = sizeof( DCB );
GetCommState( m_hComDev, &dcb );
dcb.fBinary=true;
dcb.BaudRate = ComDCB->BaudRate;
dcb.fDtrControl=DTR_CONTROL_DISABLE;
dcb.fRtsControl=RTS_CONTROL_DISABLE;
dcb.ByteSize = ComDCB->ByteSize;
dcb.StopBits = ComDCB->StopBits;
dcb.Parity = ComDCB->Parity; if( !SetCommState( m_hComDev, ComDCB) || (!SetupComm( m_hComDev, 100, 100 )))
{
int a = GetLastError();
DWORD dwError = GetLastError();
AfxMessageBox("Failed to assign DCB structure error : 0x%x",dwError);
CloseHandle( m_hComDev );
return FALSE;
} SetCommMask(m_hComDev, EV_RXCHAR); m_bOpened = TRUE;