⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 watcmdresult.cpp

📁 手机发送短信的Activex控件
💻 CPP
字号:
// WAtCmdResult.cpp: implementation of the CWAtCmdResult class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//tts #include "WSMModule.h"
#include "WAtCmdResult.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

char CWAtCmdResult::szOKCmd[MAX_AT_CMD_RESULT_LEN] = "OK\r\n";
char CWAtCmdResult::szWaitSMSMsg[MAX_AT_CMD_RESULT_LEN] = "> ";

CWAtCmdResult::CWAtCmdResult()
{
	Reset();
}

CWAtCmdResult::~CWAtCmdResult()
{

}

const char* CWAtCmdResult::FindMatchCmd(BYTE toAdd)
{
	if(szOKCmd[m_received] == toAdd) return szOKCmd;
	if(szWaitSMSMsg[m_received] == toAdd) return szWaitSMSMsg;

	return NULL;
}

void CWAtCmdResult::GetResult(LPSTR lpszCmd)
{
	ASSERT(IsEnd());
	strcpy(lpszCmd, (const char*) m_atCmdResult);
}

void CWAtCmdResult::Reset()
{
	m_received = 0;
	pCurrMatch = NULL;
}

enum CWAtCmdResult::CheckResult CWAtCmdResult::AddCmdChar(BYTE toAdd)
{
	if(NULL == pCurrMatch) 
	{
		pCurrMatch = FindMatchCmd(toAdd);
		if(NULL == pCurrMatch) 	return AT_CMD_ERROR;
	}
	
	BOOL bMatch = pCurrMatch[m_received] == toAdd;

	m_atCmdResult[m_received] = toAdd;
	m_received ++;
	
	if(bMatch)
	{
		if (IsEnd())
		{	
			m_atCmdResult[m_received] = '\0';
			return AT_CMD_END;
		}
		else
			return AT_CMD_MATCH;
	}
	else
		return AT_CMD_ERROR;
}

BOOL CWAtCmdResult::IsEnd()
{
	return pCurrMatch && pCurrMatch[m_received] == '\0';
}

CWAtCmdParser::CWAtCmdParser()
{
	Reset();
}
enum ParseResult CWAtCmdParser::ParseOneByte(BYTE toSet)
{
	enum ParseResult parseResult;
	
	m_matchResult = m_atCmd.AddCmdChar(toSet);

	switch(m_matchResult)
	{
	case CWAtCmdResult::AT_CMD_ERROR:
		parseResult = FrameSegmentDiscarded;
		Reset();
		break; 
		
	case CWAtCmdResult::AT_CMD_MATCH :
		parseResult = FrameNotFinished;
		break;
		
	case CWAtCmdResult::AT_CMD_END:		
		parseResult = FrameOK;	// let caller to reset
		break;

	default:
		ASSERT(FALSE);
		break;	
	}


	return parseResult;
}

void CWAtCmdParser::Reset()
{
	m_atCmd.Reset();
	m_matchResult = CWAtCmdResult::AT_CMD_END;
}

const CWAtCmdResult& CWAtCmdParser::GetParseResult() const
{
	return m_atCmd;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -