亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sendthread.cpp

?? C++語言開發的受機短信相關的源程序
?? CPP
字號:
// SendThread.cpp : implementation file
//

#include "stdafx.h"
#include "HWCmppAPI.h"
#include "SendThread.h"
#include "DataConvert.h"

#include "define.h"


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




extern void GfWriteLog(CString str);

/////////////////////////////////////////////////////////////////////////////
// CSendThread

IMPLEMENT_DYNCREATE(CSendThread, CWinThread)

CSendThread::CSendThread()
{
	m_bIfRun = FALSE;
	this->m_bAutoDelete = TRUE;
	SetIfShowMsg(FALSE);
	m_bInit = FALSE;
}

CSendThread::~CSendThread()
{
	m_bIfRun = FALSE;
}

BOOL CSendThread::InitInstance()
{
	// TODO:  perform and per-thread initialization here
	::CoInitialize(NULL);
	return TRUE;
}

int CSendThread::ExitInstance()
{
	// TODO:  perform any per-thread cleanup here
	CoUninitialize();
//	::PostThreadMessage(this->m_nThreadID,WM_QUIT,0,0);
//	::Sleep(50);
	return CWinThread::ExitInstance();
}

BEGIN_MESSAGE_MAP(CSendThread, CWinThread)
	//{{AFX_MSG_MAP(CSendThread)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
	ON_THREAD_MESSAGE(WM_USER+500,OnSendLoop)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSendThread message handlers

BOOL CSendThread::Init(int nID, CString strQueueUp, CString strQueueDown, char * chIcpId, CHWCmppAPIDlg* pParent)
{
	if(m_bInit == TRUE)
	{
		return TRUE;
	}
	this->m_nID = nID;
	if(!m_queueRW.InitInstance(strQueueUp, strQueueDown)){
		return FALSE;
	}
	if(chIcpId){
		strcpy(m_chIcpId, chIcpId);
	}
	else{
		return FALSE;
	}
	if(pParent)
	{
		m_pParent = (CHWCmppAPIDlg*)pParent;
		SetIfShowMsg(this->m_pParent->m_bIsShowMsg);
	}
	else{
		return FALSE;
	}
	m_bInit = TRUE;
	return TRUE;
}

void CSendThread::Start()
{
	m_bIfRun = TRUE;
	::PostThreadMessage(this->m_nThreadID,WM_USER+500,0,0);
}

void CSendThread::Stop()
{
	m_bIfRun = FALSE;
}

LRESULT CSendThread::OnSendLoop(WPARAM w,LPARAM l)
{
	CString strLable = "";
	_variant_t vBody;
	vBody.Clear();
	long lPri = 0;
	int nRet = -1;
	BOOL bSendSuccess = TRUE; 

	while(m_bIfRun)
	{
/*		//test
		this->m_pParent->PostMessage(WM_USER+600, 1, 1);//MT++, RC++
		ShowMsg("OnSendLoop!!!");	
*/
		if(m_queueRW.ReadQueue(strLable,vBody,lPri,1))
		{
//			GfWriteLog("InitLable:"+strLable);
			__int32 nMsgID = (__int32)CLable::GetMsgId(strLable);
			CString strGateID;
			
			int MsgFormat = CLable::GetMsgFormat(strLable);
//			if( ::CLable::GetFormatType(MsgFormat) == 0 )//0-text, 1-Binary, x-expand。 Linbo Comment 2002-11-21 11:25:50
			if( ::CLable::GetCodeType(strLable) == 0 )//0-text, 1-Binary, x-expand。 Linbo Comment 2002-11-21 11:25:50
			{
				_bstr_t bstrBody(vBody);
				int msglenbstr=bstrBody.length()*2;	  //長度大	unicode長度
				
				CString strBody;
				strBody=(const char*)bstrBody;
				int msglenstr=strBody.GetLength();	  //不同長度 ascii長度
				
				if(msglenbstr==2*msglenstr)
				{//純英文
					nRet = SendSM(1, 1, CLable::GetSrcId(strLable), CLable::GetDestId(strLable), CLable::GetFeePhone(strLable),
						(char*)(const char*)strBody, msglenstr,
						0, MsgFormat, CLable::GetFeetype(strLable),CLable::GetFeecode(strLable),
						CLable::GetSevId(strLable), nMsgID, lPri, strGateID);		
				}
				else
				{//含中文或純中文
					if(msglenstr >140)
					{
					//	strBody = (const wchar_t *)bstrBody;
						strBody.Left(140);
						msglenbstr  = 140;
					}
					nRet = SendSM(1, 1, CLable::GetSrcId(strLable), CLable::GetDestId(strLable), CLable::GetFeePhone(strLable),
						(char*)(const char*)strBody, msglenstr, 
						0, MsgFormat, CLable::GetFeetype(strLable),CLable::GetFeecode(strLable),
						CLable::GetSevId(strLable), nMsgID, lPri, strGateID);
				}
				bSendSuccess = !nRet;	
			}
			
			else //if(Body.vt==(VT_ARRAY|VT_UI1))	//binary
			{
				char BinaryBuf[1500] = {0};
				_bstr_t bstrBody(vBody);
				CString strBody = (const char*)bstrBody;
				long BodySize = strBody.GetLength()/2;
				
				memcpy(BinaryBuf,(LPCSTR)strBody,strBody.GetLength());
				
				if(CVariantBufConvert::ConvertToBinary((char*)BinaryBuf, BodySize, (char*)BinaryBuf))
				{			
					int packnum=BodySize/140;
					if(BodySize%140)
					{
						packnum++;
					}
					
					for(int i=1;i<=packnum;i++)
					{				
						nRet = SendSM(packnum, i, CLable::GetSrcId(strLable), CLable::GetDestId(strLable), CLable::GetFeePhone(strLable),
							BinaryBuf+(i-1)*140, (i==packnum ? (packnum==1?BodySize:BodySize%140) : (packnum==1?BodySize:140)),
							1, MsgFormat, CLable::GetFeetype(strLable),CLable::GetFeecode(strLable),
							CLable::GetSevId(strLable), nMsgID, lPri, strGateID);
						if(nRet != 0)
						{
							bSendSuccess = FALSE;
						}
					}
				}			
			}
			if(bSendSuccess == TRUE){
				this->m_pParent->PostMessage(WM_USER+600, 1, 1);//MT++, RC++
			}
			else
			{
				this->m_pParent->PostMessage(WM_USER+600, 1, 0);//MT++, RC=RC
			}
			strLable.Format("TYPE:Receipt;MsgId:%d;GateId:%s;Status:%d;",nMsgID, strGateID, (int)(!bSendSuccess));			
			vBody.SetString("");
			m_queueRW.WriteQueue(strLable,vBody, lPri);
			strLable.Format("TYPE:Receipt;MsgId:%d;GateId:%s;Status:%d;",nMsgID, strGateID, nRet);
			ShowMsg(strLable);			
			
		}
		else{
			::Sleep(100);
		}
		::Sleep(10);//每次處理完后休息
	}
	return 0; 
}

int CSendThread::SendSM(BYTE byPKTotal, BYTE byPKNum, CString strSrc, CString strDest, CString strFeePhone, char *chMsg, int nMsgLen, BYTE byType, int nFormat, int nFeeType, int nFeeCode, CString strSevID, __int32 nMsgID, long nPriority, CString &strGateID)
{
//移至最開始,要完成長度檢查、切分、內容為空的檢查

	int nTemp = strSrc.GetLength();
	if(nTemp == 0 || nTemp >=21){
		return -2;
	}	
	if(nFeeType<0||nFeeType>5)
		return -3;
	if(nFeeCode<0||nFeeCode>1000)
		return -4;
	if(strSevID.GetLength()>10)
		return -5;

	int  nRet = -1;
	BYTE	chGateID[23];
	memset(chGateID, 0, sizeof(chGateID));
	__int64	nGateID = 0;
	unsigned char chFCS;
	unsigned long lSM_ID;
	CString strFeeType;
	CString strFeeCode;

	strFeeType.Format("%d", nFeeType);
	if(strFeeType.GetLength() == 1){
		strFeeType = "0"+strFeeType;
	}
	strFeeCode.Format("%d", nFeeCode);

	if(byType == 0)//text
	{
		try
		{
			nRet = SubmitAExEx(/*OrgTON*/2, /*OrgNPI*/1, /*OrgAddr*/strSrc,
			/*DestTON*/2, /*DestNPI*/1, /*LPCTSTR DestAddr*/strDest, 
			/*unsigned char PRI*//*(int)(nPriority >0)*/1, /*unsigned char RD*/0, /*unsigned char RP*/0, 
			/*unsigned char SRR*//*(nFeeType==3)? 2:1*/1, /*unsigned char MR*/0, /*!!!!unsigned char DCS*/nFormat, 
			/*unsigned char PID!!!協議類型*/0, /*LPCTSTR Schedule*/NULL, /*LPCTSTR Expire*/NULL, 
			/*unsigned long Default_ID*/0, /*unsigned char UDHI!!!!表示UserData是否是結構*/0, /*unsigned long UDLen*/nMsgLen,
			/*LPCTSTR UserData*/chMsg, /*LPCTSTR ServiceSubType*/strSevID, 
			/*unsigned char* byMsgID*/chGateID, /*unsigned char byPKTotal*//*byPKTotal*/1, 
			/*unsigned char byPKNumber*//*byPKNum*/1, /*unsigned char byMsglevel*/0, 
			/*unsigned char byFeeUserType*/3, /*LPCTSTR sSPID*/m_chIcpId, /*LPCTSTR sFeeType*/strFeeType, 
			/*LPCTSTR sFeeAddr*/strFeePhone, /*LPCTSTR sFeeCode*/strFeeCode,/*unsigned char byUserNum*/1, 
			/*LPCTSTR sDestAddrs*/strDest,	/*unsigned long* SM_ID*/&lSM_ID, /*unsigned char* FCS*/&chFCS);		
		}
		catch(...)
		{
		}
	}
	else if(byType == 1)//binary
	{
		BYTE	byPID = 0;
		BYTE	byUDHI = 1;//40;
		BYTE	byDCS = nFormat;
//		this->BinPro(nFormat, byPID, byUDHI, byDCS);
		try
		{
			nRet = SubmitAExEx(/*OrgTON*/2, /*OrgNPI*/1, /*OrgAddr*/strSrc,
			/*DestTON*/2, /*DestNPI*/1, /*LPCTSTR DestAddr*/strDest, 
			/*unsigned char PRI*//*(int)(nPriority >0)*/1, /*unsigned char RD*/0, /*unsigned char RP*/0, 
			/*unsigned char SRR*//*nFeeType == 3 ? 2:1*/1, /*unsigned char MR*/0, /*!!!!unsigned char DCS*/byDCS, 
			/*unsigned char PID!!!協議類型*/byPID, /*LPCTSTR Schedule*/NULL, /*LPCTSTR Expire*/NULL, 
			/*unsigned long Default_ID*/0, /*unsigned char UDHI!!!!表示UserData是否是結構*/byUDHI, /*unsigned long UDLen*/nMsgLen,
			/*LPCTSTR UserData*/chMsg, /*LPCTSTR ServiceSubType*/strSevID, 
			/*unsigned char* byMsgID*/chGateID, /*unsigned char byPKTotal*/byPKTotal, 
			/*unsigned char byPKNumber*/byPKNum, /*unsigned char byMsglevel*/0, 
			/*unsigned char byFeeUserType*/3, /*LPCTSTR sSPID*/m_chIcpId, /*LPCTSTR sFeeType*/strFeeType, 
			/*LPCTSTR sFeeAddr*/strFeePhone, /*LPCTSTR sFeeCode*/strFeeCode,/*unsigned char byUserNum*/1, 
			/*LPCTSTR sDestAddrs*/strDest,	/*unsigned long* SM_ID*/&lSM_ID, /*unsigned char* FCS*/&chFCS);
		}
		catch(...)
		{
		}
	}
	else
	{
		nRet =-2;
	}

	if(nRet == 0)
	{
	//	strGateID = chGateID;
		CDataConvert::BYTE8ToDeintGateid(chGateID, strGateID);
	}

	else
	//if(nRet != 0)
	{
		CString strSend;
		strSend.Format("\nSendSM Ret:%d,MsgID:%d,SevID:%s, FeeType:%s, FeeCode:%s, GateID:%s, Dest:%s, Src:%s,FeePhone:%s, Body:%s, MsgLen:%d, Format:%d,SM_ID:%d, FCS:%d,SPID:%s",
			nRet,nMsgID,strSevID,strFeeType, strFeeCode, strGateID, strDest, strSrc,	strFeePhone,chMsg,nMsgLen,nFormat, lSM_ID, chFCS, m_chIcpId);
		::GfWriteLog(strSend);
	}	

	return nRet;
}

void CSendThread::BinPro(int nFormat, BYTE &byPID, BYTE &byUDHI, BYTE &byDCS)
{
	switch(nFormat)
	{
//		packSubmit.msg_mode = packSubmit.msg_mode |1;//要求狀態報告
	case 2:
		{
			break;
		}
	case 3:
		{
			break;
		}
	case 4:	//Nokia
		{
			break;
		}
	case 5:
		{
			break;
		}
	case 8://Nokia  --> binary format
		{
			break;
		}
	case 9://Siemens --> 
		{
			byPID = 0;
			byUDHI = 0;
			byDCS = 245;//0xF5;
			break;
		}
	case 10://Motorola ringtone --> ASCII FORMAT
		{
			byPID = 0;
			byUDHI = 1;//40;
			byDCS = 4;
			break;
		}
	case 11://Motorola big picture, EMS picture, EMS ringtone, 松下 picture. --> binary format, TP_UDHI=1.
		{
			byPID = 0;
			byUDHI = 1;
			byDCS = 4;
			break;
		}
	case 12://Alcatel	picture and ringtone.  -- TP_UDHI=1, TP_PID=7D, TP_DCS=0XF5.
		{		
			byPID = 125;//0x7d
			byUDHI = 1;//40;
			byDCS = 245;//0xf5
		}
	default:
		{
			byPID = 0;
			byUDHI = 40;
			byDCS = 4;
			break;
		}
	}

}

void CSendThread::SetIfShowMsg(BOOL bIsSHow)
{
	m_criticalIsShowMsg.Lock();
 	this->m_bIsShowMsg = bIsSHow;
	m_criticalIsShowMsg.Unlock();
}
BOOL CSendThread::GetIfShowMsg()
{
	m_criticalIsShowMsg.Lock();
	BOOL bIsShow = m_bIsShowMsg;
	m_criticalIsShowMsg.Unlock();
	return bIsShow;
}

void CSendThread::ShowMsg(const CString &strMsg)
{
 	if(this->GetIfShowMsg())
	{
		m_strMsg = strMsg;
		m_pParent->SendMessage(WM_USER+605, 1, m_nID);		
	}
}

void CSendThread::QuitThread()
{
	m_bIfRun = FALSE;
	::PostThreadMessage(this->m_nThreadID,WM_QUIT,0,0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆.com| 色婷婷久久一区二区三区麻豆| 国产91精品露脸国语对白| 色先锋资源久久综合| 精品欧美乱码久久久久久1区2区 | 国产乱码精品一区二区三| 不卡一二三区首页| 欧美www视频| 亚洲bt欧美bt精品| www.性欧美| 精品美女被调教视频大全网站| 一区二区三区丝袜| 懂色一区二区三区免费观看 | 91久久久免费一区二区| 亚洲精品在线观| 日本欧美一区二区在线观看| 成人99免费视频| 国产三级精品三级在线专区| 日本欧美一区二区三区| 欧美伊人精品成人久久综合97| 国产精品福利在线播放| 国产一区二区在线观看免费| 欧美一区二区三区视频在线| 亚洲午夜一二三区视频| 成人av电影免费在线播放| 国产免费成人在线视频| 国产精品小仙女| 26uuu亚洲| 国产在线播放一区二区三区 | 一本色道久久综合精品竹菊| 国产欧美精品在线观看| 国产一区啦啦啦在线观看| 91精品国产高清一区二区三区蜜臀 | 国产欧美综合在线观看第十页| 香港成人在线视频| 欧美日韩另类一区| 亚洲自拍偷拍图区| 欧美视频一区在线| 亚洲线精品一区二区三区| 欧美日本不卡视频| 日韩精品久久久久久| 欧美一级高清片| 久久成人免费网站| 国产亚洲欧美一级| 成人ar影院免费观看视频| 中文字幕一区二区视频| 色视频一区二区| 亚洲国产综合91精品麻豆| 欧美日韩和欧美的一区二区| 日韩高清中文字幕一区| 日韩欧美激情在线| 国产精品99久久久| **性色生活片久久毛片| 91国偷自产一区二区使用方法| 亚洲一区日韩精品中文字幕| 欧美日韩亚洲综合| 久久99精品久久只有精品| 中文字幕不卡在线| 色噜噜夜夜夜综合网| 日产欧产美韩系列久久99| 久久综合五月天婷婷伊人| 波多野结衣欧美| 亚洲超碰97人人做人人爱| 精品欧美一区二区在线观看| gogo大胆日本视频一区| 石原莉奈一区二区三区在线观看| 精品裸体舞一区二区三区| 91社区在线播放| 免费人成黄页网站在线一区二区| 国产三级精品在线| 欧美猛男gaygay网站| 国产美女精品人人做人人爽| 一区二区三区精品| 久久久综合九色合综国产精品| 一本一道久久a久久精品综合蜜臀| 日韩精彩视频在线观看| 国产精品久久三区| 91精品国产全国免费观看| 成人av电影在线网| 老司机免费视频一区二区三区| 国产精品国产a| 日韩欧美二区三区| 成人精品国产一区二区4080| 日本伊人精品一区二区三区观看方式 | 欧美亚洲综合网| 国产成人在线免费| 亚洲成年人影院| 国产精品超碰97尤物18| 欧美xxx久久| 欧美日韩黄色影视| 色综合色综合色综合色综合色综合| 琪琪一区二区三区| 亚洲国产精品久久一线不卡| 国产精品三级在线观看| 欧美一区二区网站| 欧美伊人久久久久久午夜久久久久| 懂色一区二区三区免费观看| 精品一区二区在线视频| 无吗不卡中文字幕| 1区2区3区精品视频| 国产视频在线观看一区二区三区 | 91视频观看视频| 国产91富婆露脸刺激对白| 麻豆精品在线看| 亚洲第一福利视频在线| 亚洲欧美在线另类| 亚洲国产精品二十页| 欧美成人a视频| 欧美一区二区三区四区视频| 欧美日韩国产一区| 欧美视频日韩视频在线观看| 色悠悠久久综合| 99视频精品全部免费在线| 成人美女视频在线观看18| 国产精品456露脸| 国产精品69毛片高清亚洲| 国产一区二区三区四区五区入口 | 亚洲午夜久久久久中文字幕久| 最新久久zyz资源站| 中文字幕人成不卡一区| 国产精品人妖ts系列视频| 国产欧美日产一区| 国产精品久久福利| 日韩美女精品在线| 樱桃视频在线观看一区| 亚洲图片欧美一区| 青草av.久久免费一区| 精品在线免费观看| 国产成人一级电影| 91在线porny国产在线看| 色婷婷综合在线| 欧美日韩性生活| 91精品国产综合久久婷婷香蕉 | 精品国产麻豆免费人成网站| 欧美成人高清电影在线| 久久久亚洲高清| 亚洲图片另类小说| 天堂资源在线中文精品| 九九在线精品视频| 高清国产午夜精品久久久久久| 成人激情午夜影院| 欧洲色大大久久| 777亚洲妇女| xfplay精品久久| 日韩伦理电影网| 视频一区在线播放| 国产在线国偷精品免费看| 色综合色综合色综合| 日韩一级二级三级| 国产精品盗摄一区二区三区| 洋洋av久久久久久久一区| 黄页视频在线91| 一本高清dvd不卡在线观看| 3d动漫精品啪啪一区二区竹菊| 久久伊人中文字幕| 一区二区三区成人在线视频| 久久精品国产精品亚洲红杏| 99re亚洲国产精品| 日韩一级片网址| 自拍偷在线精品自拍偷无码专区| 日韩精品成人一区二区三区| 丰满少妇久久久久久久| 欧美人伦禁忌dvd放荡欲情| 国产欧美日韩不卡| 秋霞午夜鲁丝一区二区老狼| 99久久久精品免费观看国产蜜| 这里只有精品视频在线观看| 国产精品乱码久久久久久| 日本91福利区| 91福利精品视频| 中文字幕av一区二区三区高| 久久精品99国产精品| 欧洲一区二区三区免费视频| 中文字幕不卡在线观看| 激情久久五月天| 欧美日本乱大交xxxxx| 亚洲欧美一区二区三区极速播放| 国产中文一区二区三区| 欧美电影一区二区| 亚洲免费在线观看视频| 国产成人综合精品三级| 欧美tickle裸体挠脚心vk| 亚洲午夜电影网| 色拍拍在线精品视频8848| 国产精品丝袜一区| 国产精品18久久久久久久久 | 欧美探花视频资源| 最近日韩中文字幕| av一区二区三区黑人| 精品国产乱码久久久久久1区2区 | 久久精品国产免费| 日韩一区二区三区视频| 亚洲va中文字幕| 欧美色网站导航| 亚洲高清在线精品| 欧美少妇xxx| 午夜精品一区在线观看| 欧美日韩一级视频| 亚洲国产wwwccc36天堂| 欧美日韩国产一区|