|
通过支持AT指令集的手机发送短消息(源代码)(6) return( true ); } } } } else { Sleep( 100 ); return( true ); } return( false ); } DWORD CGSMPhone::ReadComm(char *szBuffer, DWORD dwBufLen) { BOOL bResult = TRUE; DWORD dwEvtMask = 0; DWORD dwError = 0; DWORD dwBytesRead = 0; COMSTAT comstat; EnterCriticalSection( &m_csComm ); ClearCommError( m_hIDComDev, &dwError, &comstat); if( comstat.cbInQue == 0 ) { LeaveCriticalSection( &m_csComm ); return( 0 ); } dwBytesRead = comstat.cbInQue; bResult = ReadFile( m_hIDComDev, szBuffer, dwBytesRead, &dwBytesRead, &m_Overlapped ); LeaveCriticalSection( &m_csComm ); if( !bResult ) { if( GetLastError() == ERROR_IO_PENDING ) { Sleep( 100 ); WaitForSingleObject( m_Overlapped.hEvent, 2000 ); GetOverlappedResult( m_hIDComDev, &m_Overlapped, &dwBytesRead, FALSE ); } } Sleep( 200 ); return( dwBytesRead ); } DWORD CGSMPhone::ReadStringFromComm(char *szBuffer, DWORD dwBufLen) { char szBuf[1024]; DWORD dwRet = 0; while( 1 ) { Sleep( 100 ); memset( szBuf, 0, 1024 ); dwRet = ReadComm( szBuf, 1024 ); if( dwRet > 0 ) { m_strCommBuffer += szBuf; if( m_strCommBuffer.Find( "OK" ) == -1 ) continue; if( m_strCommBuffer.Find( '\r' ) > 0 ) break; } else { break; } } if( !m_strCommBuffer.IsEmpty() ) {
|