📄 commanager.cpp
字号:
{
m_CSSubmitRspQueue.Unlock();
}
return TRUE;
}
BOOL CComManager::ProcessErrorReport(char szBuf[])
{
STRUCT_ERROR_REPORT* psErrorReport;
psErrorReport = (STRUCT_ERROR_REPORT*)szBuf;
char szMsg[512];
sprintf(szMsg,"错误报告:%s\r\n",psErrorReport->szError_Msg);
ShowInfo(szMsg);
STRUCT_SUBMIT_QUEUE sSubmitElement;
sSubmitElement.dwSeqID = ntohl(psErrorReport->sHeader.dwSeqNo);
m_CSSubmitQueue.Lock();
POSITION pos = m_SubmitList.Find(sSubmitElement);
if(pos != NULL)
{
m_SubmitList.RemoveAt(pos);
m_CSSubmitQueue.Unlock();
return TRUE;
}
else
{
m_CSSubmitQueue.Unlock();
}
STRUCT_SUBMITRSP_QUEUE sSubmitRspElement;
sSubmitRspElement.dwPlatID = ntohl(psErrorReport->sHeader.dwSeqNo);
m_CSSubmitRspQueue.Lock();
pos = m_SubmitRspList.Find(sSubmitRspElement);
if(pos != NULL)
{
m_SubmitRspList.RemoveAt(pos);
m_CSSubmitRspQueue.Unlock();
return TRUE;
}
else
{
m_CSSubmitRspQueue.Unlock();
}
return FALSE;
}
BOOL CComManager::ProcessDelivery(char szBuf[],DWORD dwBufLen)
{
STRUCT_DELIVERY* psDelivery;
psDelivery = (STRUCT_DELIVERY*)szBuf;
if(psDelivery->sDeliveryHeader.cReDelivery_Count != 0)
return FALSE;
char szMsg[512];
sprintf(szMsg,"收到一条来自%s的Delivery消息:\r\n",psDelivery->sDeliveryHeader.szService_Number);
ShowInfo(szMsg);
sprintf(szMsg,"——消息内容为:%s\r\n",psDelivery->sCMPP12Delivery.Msg_Content);
ShowInfo(szMsg);
return TRUE;
}
BOOL CComManager::ProcessDiscMsg()
{
if(m_pClientSocket == NULL)
{
ShowInfo("应用还未登录到平台!\r\n");
return FALSE;
}
return m_pClientSocket->Disc();
}
BOOL CComManager::ProcessSubmitMsg(STRUCT_SUBMIT sSubmit)
{
char szMsg[512];
CString Mobil;
if(m_pClientSocket == NULL)
{
sprintf(szMsg,"还未连接到平台\r\n");
ShowInfo(szMsg);
return FALSE;
}
DWORD dwSeqID;
dwSeqID = m_pClientSocket->SubmitMsg(sSubmit);
if(dwSeqID == 0)
{
//发送错误
sprintf(szMsg,"与平台连接断开,此时正在重连\r\n");
ShowInfo(szMsg);
return FALSE;
}
STRUCT_SUBMIT_QUEUE sSubmitElement;
sSubmitElement.dwSeqID = dwSeqID;
if(sSubmit.sSubmitHeader.cTimeOut == 0)
sSubmitElement.cTimeOut = 2;
else
sSubmitElement.cTimeOut = sSubmit.sSubmitHeader.cTimeOut;
memcpy((void*)&sSubmitElement.sSubmit,(void*)&sSubmit,sizeof(STRUCT_SUBMIT));
m_CSSubmitQueue.Lock();
if(m_SubmitList.GetCount() >= BUFFER_LEN)
{
m_CSSubmitQueue.Unlock();
//发送缓冲区满
return FALSE;
}
m_SubmitList.AddTail(sSubmitElement);
m_CSSubmitQueue.Unlock();
Mobil=sSubmitElement.sSubmit.sCMPP12Submit.szDest_terminal_ids ;
sprintf(szMsg," 提交消息:手机:%s,流水号:%d\r\n",Mobil,dwSeqID);
//写库 Mobil,SeqID
ShowInfo(szMsg);
return TRUE;
}
BOOL CComManager::IniSCMPP(LPCTSTR IP, short Port, LPCTSTR AppName, LPCTSTR Pwd,WORD AppID)
{
//IniSock();
//参数
STRUCT_SERVER_INFO m_sServerInfo;
STRUCT_APPLOGIN_INFO m_sAppLoginInfo;
strcpy(m_sServerInfo.szIP,IP);
m_sServerInfo.nPort =Port;
strcpy(m_sAppLoginInfo.szAppName,AppName);
strcpy(m_sAppLoginInfo.szPassword,Pwd);
m_sAppLoginInfo.wAppID = AppID;
if(!InitCom(m_sServerInfo,m_sAppLoginInfo))
{
//SetWindowText(hWndOra,"连接失败!");
return false;
}
return true;
}
DWORD WINAPI CheckListThread(LPVOID lpParam)
{
CComManager* pManager = (CComManager*)lpParam;
STRUCT_SUBMIT_QUEUE sSubmitElement;
STRUCT_SUBMITRSP_QUEUE sSubmitRspElement;
int nCount = 0;
POSITION pos,posTemp;
while(!pManager->m_bThreadEnd)
{
if(nCount != 20)
{
nCount++;
Sleep(500);
continue;
}
nCount = 0;
pManager->m_CSSubmitQueue.Lock();
if(!pManager->m_SubmitList.IsEmpty())
{
pos = pManager->m_SubmitList.GetHeadPosition();
while(pos)
{
posTemp = pos;
sSubmitElement = pManager->m_SubmitList.GetNext(pos);
if(sSubmitElement.cTimeOut == 0)
pManager->m_SubmitList.RemoveAt(posTemp);
else
{
sSubmitElement.cTimeOut--;
pManager->m_SubmitList.SetAt(posTemp,sSubmitElement);
}
}
}
pManager->m_CSSubmitQueue.Unlock();
pManager->m_CSSubmitRspQueue.Lock();
if(!pManager->m_SubmitRspList.IsEmpty())
{
pos = pManager->m_SubmitRspList.GetHeadPosition();
while(pos)
{
posTemp = pos;
sSubmitRspElement = pManager->m_SubmitRspList.GetNext(pos);
if(sSubmitRspElement.cTimeOutLeave == 0)
pManager->m_SubmitRspList.RemoveAt(posTemp);
else
{
sSubmitRspElement.cTimeOutLeave--;
pManager->m_SubmitRspList.SetAt(posTemp,sSubmitRspElement);
}
}
}
pManager->m_CSSubmitRspQueue.Unlock();
}
return 0;
}
DWORD CComManager::Submit(BYTE m_btServiceChannelID,BYTE cRegistered_Delivery,
BYTE m_btCredTransmit,BYTE SaveID,BYTE MsgLevel,BYTE MsgFMT,
LPCTSTR m_strServiceID,LPCTSTR m_strFeeType,LPCTSTR m_strFeeCode,
BYTE m_btFeeUserType,LPCTSTR m_strFeeTerminalID,LPCTSTR m_strSrcTerminalID,
LPCTSTR m_strDestTerminalID,LPCTSTR m_strMsgContent)
{
CString strBobilID,tt;
BYTE BobilID;
STRUCT_SUBMIT sSubmit;
tt=(CString)m_strDestTerminalID;
strBobilID=tt.Mid(0,3);
BobilID=1;
if(strBobilID=="130" || strBobilID=="131" || strBobilID=="133") BobilID=2;
//重发消息计数1B
sSubmit.sSubmitHeader.cReSubmit_Count = 0;//'m_btReSubmitCount;
//通道协议类型
sSubmit.sSubmitHeader.cChannel_Protocol =0;//' m_btChannelProtocol;
//电信网络运营商
sSubmit.sSubmitHeader.cTNO = BobilID;
//服务通道ID
sSubmit.sSubmitHeader.cService_ChannelID = m_btServiceChannelID;
//服务平台ID
sSubmit.sSubmitHeader.cService_Plat =0;//' m_btSevicePlatID;
//请求平台ID
sSubmit.sSubmitHeader.cRequest_Plat =0;//' m_btRequestPlatID;
//优先级标志
sSubmit.sSubmitHeader.cPriority_Flag = 0;//'m_btPriorityFlag;
//数据包协议类型
sSubmit.sSubmitHeader.cProtocol_Type = 1;//'只能为1m_btProtocolType;
//超时时间间隔
sSubmit.sSubmitHeader.cTimeOut = 6;
//可靠性传输标志
sSubmit.sSubmitHeader.cCredibility_Transmit =m_btCredTransmit;
//存储转发标志
sSubmit.sSubmitHeader.cSaveForTramSmit = SaveID;
//消息优先级别
sSubmit.sCMPP12Submit.cMsg_Level = MsgLevel;
//消息格式1b
sSubmit.sCMPP12Submit.cMsg_Fmt = MsgFMT;
//GSM协议类型1b
sSubmit.sCMPP12Submit.cTP_pid = 0;
sSubmit.sCMPP12Submit.cTP_udhi = 0;
//状态报告
sSubmit.sCMPP12Submit.cRegistered_Delivery =cRegistered_Delivery;
//业务类别
strcpy(sSubmit.sCMPP12Submit.szService_ID,m_strServiceID);//,10);
//资费类别2bs
strcpy(sSubmit.sCMPP12Submit.szFeeType,m_strFeeType);//,2);
//资费代码6bs
strcpy(sSubmit.sCMPP12Submit.szFeeCode,m_strFeeCode);//,6);
//记费用户类型1
sSubmit.sCMPP12Submit.cFee_UserType = m_btFeeUserType;
//存活17bs
strcpy(sSubmit.sCMPP12Submit.szValid_Time,"\0");//,17);
//定时17bs
strcpy(sSubmit.sCMPP12Submit.szAt_Time,"\0");//,17);
//被计费用户21BS
strcpy(sSubmit.sCMPP12Submit.szFee_terminal_ID,m_strFeeTerminalID);//,21);
//源终端ISDN 21bs
strcpy(sSubmit.sCMPP12Submit.szSrc_terminal_id,m_strSrcTerminalID);//,21);
//接受业务ISDN 21BS
strcpy(sSubmit.sCMPP12Submit.szDest_terminal_ids,m_strDestTerminalID);//,21);
//消息长度2B
sSubmit.sCMPP12Submit.wMsg_Length =htons((WORD)lstrlen(m_strMsgContent));
//消息内容
strcpy(sSubmit.sCMPP12Submit.szMsg_Content,m_strMsgContent);//,m_sMsgLength);
return ProcessSubmitMsg(sSubmit);
}
void CComManager::ShowInfo(CString szMsg)
{
static long ii;
ii++;
CEdit& TempEdit = ((CAppDemoView*)((CMainFrame*)AfxGetApp()->GetMainWnd())->GetActiveView())->GetEditCtrl();
if(ii>1000){TempEdit.SetWindowText("");ii=0;}
TempEdit.SetSel(TempEdit.GetSel());
TempEdit.ReplaceSel(szMsg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -