|
通过支持AT指令集的手机发送短消息(源代码)(20) delete [] m_pSMPool[dwWaitRet].pData; SetEvent( m_pSMPool[dwWaitRet].hSMPIDLE ); InterlockedDecrement( &m_dwSMNumberInPool ); int len = 0; char* p = pszBuffer; char szTemp[1024] = {0}; bool bEng = false; CopyMemory( szTemp, p, 2 ); int nNumLen = atoi( szTemp ); p += nNumLen * 2; p += 6; NumberDecode( p, 16 ); ZeroMemory( pNo, 15 ); CopyMemory( pNo, "+", 1 ); CopyMemory( pNo + 1, p + 2, 13 ); p += 18; if( strncmp( p, "00", 4 ) == 0 ) bEng = true; p += 2; NumberDecode( p, 10 ); ZeroMemory( pTime, 17 ); sprintf( pTime, "20%.2s.%.2s.%.2s %.2s:%.2s", p, p + 2, p + 4, p + 6, p + 8 ); p += 10; p += 4; CopyMemory( szTemp, p, 2 ); int nMsgLen = atoi( szTemp ); p += 2; char* pResult = NULL; if( bEng ) { len = PDUDecodeEng( p, pResult ); } else { len = PDUDecodeChn( p, pResult ); } if( len > 0 ) { ZeroMemory( pMsg, len + 1 ); CopyMemory( pMsg, pResult, len ); delete [] pResult; } delete [] pszBuffer; return( 0 ); } return( -1 ); } long CGSMPhone::GetMobileName(char *pName) { if( m_strMobileName.IsEmpty() ) { return( -1 ); } else { ZeroMemory( pName, m_strMobileName.GetLength() + 1 ); CopyMemory( pName, (LPCTSTR)m_strMobileName, m_strMobileName.GetLength() ); return( 0 ); } }
|