📄 smstraffic.cpp
字号:
// SmsTraffic.cpp: implementation of the CSmsTraffic class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "GrpsTest.h"
#include "SmsTraffic.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSmsTraffic::CSmsTraffic()
{
}
CSmsTraffic::~CSmsTraffic()
{
}
UINT CSmsTraffic::SmThread(LPVOID lParam)
{
CSmsTraffic* p=(CSmsTraffic *)lParam; // this
int nMsg; // 收到短消息条数
int nDelete; // 目前正在删除的短消息编号
SM_BUFF buff; // 接收短消息列表的缓冲区
SM_PARAM param[256]; // 发送/接收短消息缓冲区
CTime tmOrg, tmNow; // 上次和现在的时间,计算超时用
enum {
stBeginRest, // 开始休息/延时
stContinueRest, // 继续休息/延时
stSendMessageRequest, // 发送短消息
stSendMessageResponse, // 读取短消息列表到缓冲区
stSendMessageWaitIdle, // 发送不成功,等待GSM就绪
stReadMessageRequest, // 发送读取短消息列表的命令
stReadMessageResponse, // 读取短消息列表到缓冲区
stDeleteMessageRequest, // 删除短消息
stDeleteMessageResponse, // 删除短消息
stDeleteMessageWaitIdle, // 删除不成功,等待GSM就绪
stExitThread // 退出
} nState; // 处理过程的状态
// 初始状态
nState = stBeginRest;
// 发送和接收处理的状态循环
while (nState != stExitThread)
{
switch(nState)
{
case stBeginRest:
// TRACE("State=stBeginRest\n");
tmOrg = CTime::GetCurrentTime();
nState = stContinueRest;
break;
case stContinueRest:
// TRACE("State=stContinueRest\n");
Sleep(300);
tmNow = CTime::GetCurrentTime();
if (p->GetSendMessage(¶m[0]))
{
nState = stSendMessageRequest; // 有待发短消息,就不休息了
}
else if (tmNow - tmOrg >= 5) // 待发短消息队列空,休息5秒
{
nState = stReadMessageRequest; // 转到读取短消息状态
}
break;
}
// 检测是否有关闭本线程的信号
DWORD dwEvent = WaitForSingleObject(p->m_hKillThreadEvent, 20);
if (dwEvent == WAIT_OBJECT_0) nState = stExitThread;
}
// 置该线程结束标志
SetEvent(p->m_hThreadKilledEvent);
return 9999;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -