📄 devlinkmanager.cpp
字号:
// DevLinkManager.cpp: implementation of the CDevLinkManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "VSMSCNEW.h"
#include "DevLinkManager.h"
#include "VSMSCNEWDlg.h"
#include "ConstDef.h"
#include "Global.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//在此打印
extern CVSMSCNEWDlg* gpDlg;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BOOL AFXAPI CompareElements(const LinksocketInfo* pElement1, const LinksocketInfo* pElement2)
{
if(strcmp(pElement1->szSim,pElement2->szSim))
return FALSE;
else
return TRUE;
}
CDevLinkManager::CDevLinkManager()
{
}
CDevLinkManager::~CDevLinkManager()
{
ReMoveAll();
}
BOOL CDevLinkManager::AddDev(CDevClientSocket* pDevClientSocket)
{
m_CriticalSection.Lock();
LinksocketInfo LinkInfo;
memcpy(LinkInfo.szSim,pDevClientSocket->m_szSim,strlen(pDevClientSocket->m_szSim));
POSITION pos=m_MyList.Find(LinkInfo);
if(pos==NULL)
{
LinkInfo.pDevClientSocket=pDevClientSocket;
m_MyList.AddTail(LinkInfo);
m_CriticalSection.Unlock();
gpDlg->AddDev(pDevClientSocket->m_szDevName,pDevClientSocket->m_szSim);
char szMsg[256];
sprintf(szMsg,"设备连接成功(SIM:%s)",LinkInfo.szSim);
AddToMsgLog(szMsg);
return TRUE;
}
m_CriticalSection.Unlock();
return FALSE;
}
BOOL CDevLinkManager::ReMoveDev(CDevClientSocket* pDevClientSocket)
{
m_CriticalSection.Lock();
LinksocketInfo LinkInfo;
memcpy(LinkInfo.szSim,pDevClientSocket->m_szSim,strlen(pDevClientSocket->m_szSim));
POSITION pos=m_MyList.Find(LinkInfo);
if(pos)
{
m_MyList.RemoveAt(pos);
pDevClientSocket->CloseSocket();
char szMsg[256];
sprintf(szMsg,"设备断开(SIM:%s)",LinkInfo.szSim);
AddToMsgLog(szMsg);
delete pDevClientSocket;
pDevClientSocket=NULL;
}
gpDlg->RemoveDev(LinkInfo.szSim);
m_CriticalSection.Unlock();
return TRUE;
}
BOOL CDevLinkManager::ReMoveAll()
{
m_CriticalSection.Lock();
POSITION pos=m_MyList.GetHeadPosition();
POSITION prepos=NULL;
while(pos)
{
prepos=pos;
LinksocketInfo LinkInfo=m_MyList.GetNext(pos);
LinkInfo.pDevClientSocket->CloseSocket();
delete LinkInfo.pDevClientSocket;
m_MyList.RemoveAt(prepos);
}
//gpDlg->m_ListCtrl.DeleteAllItems();
m_CriticalSection.Unlock ();
return TRUE;
}
CDevClientSocket* CDevLinkManager::GetAt(char* szSim)
{
LinksocketInfo LinkInfo;
CDevClientSocket* pRet=NULL;
m_CriticalSection.Lock();
memcpy(LinkInfo.szSim,szSim,strlen(szSim));
POSITION pos=m_MyList.Find(LinkInfo);
if(pos)
{
LinkInfo=m_MyList.GetAt(pos);
pRet=LinkInfo.pDevClientSocket;
}
m_CriticalSection.Unlock();
return pRet;
}
BOOL CDevLinkManager::SendToDev(STRUCT_SMPP_SUBMIT &sSubmit)
{
STRUCT_DEV_SUBMIT s_DevSubmit;
ZeroMemory(&s_DevSubmit,sizeof(STRUCT_DEV_SUBMIT));
s_DevSubmit.sHeader.command_id=DEV_SUBMIT;
s_DevSubmit.sHeader.command_status=0;
s_DevSubmit.sHeader.command_length=sizeof(STRUCT_DEV_SUBMIT)+sSubmit.csm_Length-255;
s_DevSubmit.sHeader.sequence_no=GetSEQID();
strcpy(s_DevSubmit.szSimNo,sSubmit.szDest_addr);
s_DevSubmit.bMsg_Len=sSubmit.csm_Length;
memcpy(s_DevSubmit.szMsgContent,sSubmit.szShort_message,s_DevSubmit.bMsg_Len);
CDevClientSocket* pSocekt=GetAt(s_DevSubmit.szSimNo);
char szPrintfContent[1024];
ZeroMemory(szPrintfContent,sizeof(szPrintfContent));
if(pSocekt)
{
if(pSocekt->SendMsg((char*)&s_DevSubmit,s_DevSubmit.sHeader.command_length))
{
sprintf(szPrintfContent,"消息发送给设备(SIM:%s)成功",s_DevSubmit.szSimNo);
AddToMsgLog(szPrintfContent);
return TRUE;
}else
{
sprintf(szPrintfContent,"消息发送给设备(SIM:%s)失败",s_DevSubmit.szSimNo);
AddToMsgLog(szPrintfContent);
return FALSE;
}
}
sprintf(szPrintfContent,"消息发送给设备(SIM:%s)失败(设备未连接)",s_DevSubmit.szSimNo);
AddToMsgLog(szPrintfContent);
return FALSE;
}
BOOL CDevLinkManager::SendToESMC(STRUCT_DEV_DELIVER &sDev_Deliver)
{
char szPrintfContent[1024];
ZeroMemory(szPrintfContent,sizeof(szPrintfContent));
if(!gpDlg->m_SmcRcvSocket->bNewSocket)
{
//if(gpDlg->m_SmcRcvSocket->SendDeliverMsg(sDev_Deliver.szMsgContent,sDev_Deliver.bMsg_Len,sDev_Deliver.szSimNo,sDev_Deliver.szSimNo,"",FALSE,0))
if(gpDlg->m_SmcRcvSocket->SendDeliverMsg(sDev_Deliver.szMsgContent,sDev_Deliver.bMsg_Len,sDev_Deliver.szSimNo,sDev_Deliver.szDesNum,"",FALSE,0))
{
sprintf(szPrintfContent,"消息发送给短信通道(设备SIM:%s)成功",sDev_Deliver.szSimNo);
AddToMsgLog(szPrintfContent);
return TRUE;
}else
{
sprintf(szPrintfContent,"消息发送给短信通道(设备SIM:%s)失败",sDev_Deliver.szSimNo);
AddToMsgLog(szPrintfContent);
return FALSE;
}
}
sprintf(szPrintfContent,"消息发送给短信通道(设备SIM:%s)失败(通道未连接)",sDev_Deliver.szSimNo);
AddToMsgLog(szPrintfContent);
return FALSE;
}
BOOL CDevLinkManager::SendMsgWithRecv(char* szSendMsg,int nLen)
{
if(gpDlg->m_SmcRcvSocket->m_bRecvLink)
return gpDlg->m_SmcRcvSocket->SendMsg(szSendMsg,nLen);
else
return gpDlg->m_SmcSocket->SendMsg(szSendMsg,nLen);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -