📄 callsmscomdlg.cpp
字号:
UpdateData(FALSE);
}
void CCallSmsComDlg::OnMobileDisconnect()
{
// TODO: Add your control notification handler code here
CComVariant varWaitSendCount;
g_spiModemService->DisConnectModem(&varWaitSendCount);
varWaitSendCount.ChangeType(VT_I4);
if(varWaitSendCount.lVal!=0)
::MessageBox(this->GetSafeHwnd(),_T("还有短信没有发送!"),XTTSOFT_SMS_APPNAME,MB_OK);
}
void CCallSmsComDlg::OnMobileConnectmodem()
{
// TODO: Add your control notification handler code here
XTTSMSCOM::EMobileModemStatus eModemStatus=XTTSMSCOM::UNINIT_STATUS;
g_spiModemService->get_ModemStatus(&eModemStatus);
if(eModemStatus>XTTSMSCOM::UNINIT_STATUS)
{
::MessageBox(this->GetSafeHwnd(),_T("已经连接或正在连接!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
UpdateData(TRUE);
int iCommPort=m_ctlCommList.GetCurSel();
if(iCommPort==-1)
{
::MessageBox(this->GetSafeHwnd(),_T("端口无效!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
VARIANT_BOOL bFlag=VARIANT_FALSE;
if(m_bEnableSend==TRUE)
bFlag=VARIANT_TRUE;
else
bFlag=VARIANT_FALSE;
g_spiModemService->put_EnableSendFunction(bFlag);
if(m_bAutoRouter==TRUE)
bFlag=VARIANT_TRUE;
else
bFlag=VARIANT_FALSE;
//设置自动路由,仅对多个短信猫同时连接有效
g_spiModemService->put_EnableRouterSend(bFlag);
g_spiModemService->put_Timeouts(m_iOverTime);//超时时间,如果接的是WAVECOM的USB,建议设为30秒及以上
g_spiModemService->put_SendFailedTry(m_iTryTime);//尝试发送的次数
g_spiModemService->put_SendStartTime(CComVariant(m_StartTime));
g_spiModemService->put_SendEndTime(CComVariant(m_EndTime));
// g_spiModemService->put_SimulateSend(VARIANT_TRUE);//设置模拟发送标志,执行此设置后组件将发送过程模拟,而不实际发送短信,节省调试程序费用
g_spiModemService->put_CountryCode(CComVariant(m_strCountryCode));
XTTSMSCOM::EMobileCommPort eCommPort=(XTTSMSCOM::EMobileCommPort)(iCommPort+1);
if(m_bAsynConnect==TRUE)
g_spiModemService->put_WorkMode(XTTSMSCOM::ASYNCHRONOUS_WORKMODE);//设为异步连接
else
g_spiModemService->put_WorkMode(XTTSMSCOM::SYNCHRONOUS_WORKMODE);//设备阻塞模式连接
XTTSMSCOM::EMobileCommPara eCommPara=(XTTSMSCOM::EMobileCommPara)m_iCommPara;
g_spiModemService->ConnectModem(eCommPort,eCommPara,&eModemStatus);
if(eModemStatus==XTTSMSCOM::UNINIT_STATUS)
{
CComVariant varErrDes;
XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
CString strErrInfo(_T(""));
if(varErrDes.vt==VT_BSTR && varErrDes.bstrVal!=NULL)
strErrInfo.Format(_T("连接短信猫失败!错误码为%d,错误信息为 %s。"),eErrType,(CString )varErrDes.bstrVal);
else
strErrInfo=_T("连接短信猫失败!");
varErrDes.Clear();
::MessageBox(this->GetSafeHwnd(),strErrInfo,XTTSOFT_SMS_APPNAME,MB_OK);
}
else
{
if(m_bAsynConnect==FALSE)
::MessageBox(this->GetSafeHwnd(),_T("连接短信猫成功!"),XTTSOFT_SMS_APPNAME,MB_OK);
}
}
void CCallSmsComDlg::OnModemReadmsg()
{
// TODO: Add your control notification handler code here
XTTSMSCOM::EMobileModemStatus eModemStatus=XTTSMSCOM::UNINIT_STATUS;
g_spiModemService->get_ModemStatus(&eModemStatus);
if(eModemStatus<XTTSMSCOM::OK_STATUS)
{
::MessageBox(this->GetSafeHwnd(),_T("还没有正常连接短信猫!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
UpdateData(TRUE);
int iMsgPosition=m_ctlMsgList.GetCurSel();
if(iMsgPosition<0)
{
::MessageBox(this->GetSafeHwnd(),_T("请先取到总的数量!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
m_strReadInfo.Empty();
CComVariant varFrom,varArrivedTime,varContent,varMsgType;
VARIANT_BOOL bReadFlag=VARIANT_FALSE;
g_spiModemService->ReadSimMsg(iMsgPosition+1,&varFrom,&varArrivedTime,&varContent,&varMsgType,&bReadFlag);
if(bReadFlag==VARIANT_FALSE)
{
CComVariant varErrDes;
XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
CString strErrInfo(_T(""));
if(varErrDes.vt==VT_BSTR && varErrDes.bstrVal!=NULL)
strErrInfo.Format(_T("读取短信失败!错误码为%d,错误信息为 %s。"),eErrType,(CString )varErrDes.bstrVal);
else
strErrInfo=_T("读取短信失败!");
::MessageBox(this->GetSafeHwnd(),strErrInfo,XTTSOFT_SMS_APPNAME,MB_OK);
UpdateData(FALSE);
return;
}
CString strMsgContent(_T("")),strFromNumber(_T(""));
if(varFrom.vt==VT_BSTR && varFrom.bstrVal!=NULL)
strFromNumber=varFrom.bstrVal;
if(varContent.vt==VT_BSTR && varContent.bstrVal!=NULL)
strMsgContent=varContent.bstrVal;
varFrom.Clear();
varContent.Clear();
COleDateTime MsgTime(varArrivedTime.date);
m_strReadInfo.Format(_T("手机号:%s;时间:%d年%02d月%02d日 %02d时:%02d分:%02d秒;内容:%s"),\
strFromNumber,MsgTime.GetYear(),MsgTime.GetMonth(),MsgTime.GetDay(),MsgTime.GetHour(),\
MsgTime.GetMinute(),MsgTime.GetSecond(),strMsgContent);
UpdateData(FALSE);
}
void CCallSmsComDlg::OnModemGetcount()
{
// TODO: Add your control notification handler code here
XTTSMSCOM::EMobileModemStatus eModemStatus=XTTSMSCOM::UNINIT_STATUS;
g_spiModemService->get_ModemStatus(&eModemStatus);
if(eModemStatus<XTTSMSCOM::OK_STATUS)
{
::MessageBox(this->GetSafeHwnd(),_T("还没有正常连接短信猫!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
m_strMsgCount.Empty();
CComVariant varUsed,varTotal;
g_spiModemService->GetSimMsgCount(&varUsed,&varTotal);
varUsed.ChangeType(VT_I2);
varTotal.ChangeType(VT_I2);
m_strMsgCount.Format(_T("%d/%d"),varUsed.iVal,varTotal.iVal);
int iCount=m_ctlMsgList.GetCount(),index=0;
for(index=0;index<iCount;index++)
m_ctlMsgList.DeleteString(0);
CString strIndex(_T(""));
for(index=1;index<varTotal.iVal+1;index++)
{
strIndex.Format(_T("%d"),index);
m_ctlMsgList.AddString(strIndex);
strIndex.Empty();
}
m_ctlMsgList.SetCurSel(0);
varUsed.Clear();
varTotal.Clear();
UpdateData(FALSE);
}
void CCallSmsComDlg::OnModemSendmsg()
{
// TODO: Add your control notification handler code here
XTTSMSCOM::EMobileModemStatus eModemStatus=XTTSMSCOM::UNINIT_STATUS;
g_spiModemService->get_ModemStatus(&eModemStatus);
if(eModemStatus<XTTSMSCOM::OK_STATUS)
{
::MessageBox(this->GetSafeHwnd(),_T("还没有正常连接短信猫!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
UpdateData(TRUE);
m_strSendTo.TrimLeft();
m_strSendTo.TrimRight();
if(m_strSendTo.IsEmpty() || m_strSendContent.IsEmpty()==TRUE)
{
::MessageBox(this->GetSafeHwnd(),_T("参数错误!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
if(m_bAsynSend==TRUE)
g_spiModemService->put_WorkMode(XTTSMSCOM::ASYNCHRONOUS_WORKMODE);//设为无阻塞模式发送
else
g_spiModemService->put_WorkMode(XTTSMSCOM::SYNCHRONOUS_WORKMODE);//阻塞模式发送
int iFind=-1;
BOOL bGroupFlag=FALSE;
iFind=m_strSendTo.Find(_T(";"));
if(iFind!=-1)
bGroupFlag=TRUE;
m_strMsgID.Empty();
CComVariant varMsgID;
g_spiModemService->CreateUniqueID(&varMsgID);
if(varMsgID.vt==VT_BSTR && varMsgID.bstrVal!=NULL)
m_strMsgID=varMsgID.bstrVal;
varMsgID.Clear();
if(m_strMsgID.IsEmpty()==TRUE)
{
::MessageBox(this->GetSafeHwnd(),_T("生成短信ID失败!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
m_arrSendTo.RemoveAll();
//将发送的短信入库...
m_arrSendTo.Add(m_strSendTo);
CString strSignName(_T(""));
if(m_strSignName.IsEmpty()==FALSE)
strSignName.Format(_T("[%s]:"),m_strSignName);
//执行发送
HRESULT hRet(E_FAIL);
CComVariant varSplitCount;//拆分的数量
if(bGroupFlag==FALSE)
{
XTTSMSCOM::EMobileMsgStatus eMsgStatus=XTTSMSCOM::UNKNOWN_MSGSTATUS;
hRet=g_spiModemService->SendMsg(m_strMsgID.AllocSysString(),m_strSendTo.AllocSysString(),m_strSendContent.AllocSysString(),&varSplitCount,XTTSMSCOM::TEXTSMS_MSGTYPE,strSignName.AllocSysString(),m_iSendPri,VARIANT_FALSE,VARIANT_FALSE,&eMsgStatus);
// g_spiModemService->SendMsg(m_strMsgID.AllocSysString(),m_strSendTo.AllocSysString(),m_strSendContent.AllocSysString(),&varSplitCount,XTTSMSCOM::TEXTSMS_MSGTYPE,strSignName.AllocSysString(),m_iSendPri,VARIANT_TRUE,VARIANT_FALSE,&eMsgStatus);//要求状态报告
varSplitCount.ChangeType(VT_I2);
m_sSplitCount=varSplitCount.iVal;
//iSplitCount为1表示没有拆分
if(m_bAsynSend==FALSE)
{
if(eMsgStatus==XTTSMSCOM::SENTOK_MSGSTATUS)
::MessageBox(this->GetSafeHwnd(),_T("发送成功!"),XTTSOFT_SMS_APPNAME,MB_OK);
else
{
CComVariant varErrDes;
XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
CString strErrInfo(_T(""));
if(varErrDes.vt==VT_BSTR && varErrDes.bstrVal!=NULL)
strErrInfo.Format(_T("发送失败!错误码为%d,错误信息为 %s"),eErrType,(CString )varErrDes.bstrVal);
else
strErrInfo=_T("发送失败!");
::MessageBox(this->GetSafeHwnd(),strErrInfo,XTTSOFT_SMS_APPNAME,MB_OK);
}
}
else
{
if(FAILED(hRet))
{
CComVariant varErrDes;
XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
CString strErrInfo(_T(""));
if(varErrDes.vt==VT_BSTR && varErrDes.bstrVal!=NULL)
strErrInfo.Format(_T("提交到队列失败!错误码为%d,错误信息为 %s"),eErrType,(CString )varErrDes.bstrVal);
else
strErrInfo=_T("提交到队列失败!");
::MessageBox(this->GetSafeHwnd(),strErrInfo,XTTSOFT_SMS_APPNAME,MB_OK);
}
else
::MessageBox(this->GetSafeHwnd(),_T("成功提交到发送队列!"),XTTSOFT_SMS_APPNAME,MB_OK);
}
//无阻塞模式发送结果由事件通知
return;
}
//群发
COleVariant varSendTo(m_strSendTo);//可以直接是以分号“;”分割的字符串
varSendTo.ChangeType(VT_BSTR);
hRet=g_spiModemService->SendGroupMsg(m_strMsgID.AllocSysString(),varSendTo,m_strSendContent.AllocSysString(),strSignName.AllocSysString(),m_iSendPri,VARIANT_FALSE,VARIANT_FALSE,&varSplitCount);
varSplitCount.ChangeType(VT_I2);
m_sSplitCount=varSplitCount.iVal;
if(FAILED(hRet))
{
CComVariant varErrDes;
XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
CString strErrInfo(_T(""));
if(varErrDes.vt==VT_BSTR && varErrDes.bstrVal!=NULL)
strErrInfo.Format(_T("提交到队列失败!错误码为%d,错误信息为 %s"),eErrType,(CString )varErrDes.bstrVal);
else
strErrInfo=_T("提交到队列失败!");
::MessageBox(this->GetSafeHwnd(),strErrInfo,XTTSOFT_SMS_APPNAME,MB_OK);
}
else
::MessageBox(this->GetSafeHwnd(),_T("成功提交到发送队列!"),XTTSOFT_SMS_APPNAME,MB_OK);
}
void CCallSmsComDlg::OnModemDelmsg()
{
// TODO: Add your control notification handler code here
XTTSMSCOM::EMobileModemStatus eModemStatus=XTTSMSCOM::UNINIT_STATUS;
g_spiModemService->get_ModemStatus(&eModemStatus);
if(eModemStatus<XTTSMSCOM::OK_STATUS)
{
::MessageBox(this->GetSafeHwnd(),_T("还没有正常连接短信猫!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
UpdateData(TRUE);
int iMsgPosition=m_ctlMsgList.GetCurSel();
if(iMsgPosition<0)
{
::MessageBox(this->GetSafeHwnd(),_T("请先取到总的数量!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
VARIANT_BOOL bDelFlag=VARIANT_FALSE;
g_spiModemService->DeleteSimMsg(iMsgPosition+1,&bDelFlag);
if(bDelFlag==VARIANT_FALSE)
{
CComVariant varErrDes;
XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
CString strErrInfo(_T(""));
if(varErrDes.vt==VT_BSTR && varErrDes.bstrVal!=NULL)
strErrInfo.Format(_T("删除失败!错误码为%d,错误信息为 %s。"),eErrType,(CString )varErrDes.bstrVal);
else
strErrInfo=_T("删除失败!");
::MessageBox(this->GetSafeHwnd(),strErrInfo,XTTSOFT_SMS_APPNAME,MB_OK);
}
else
::MessageBox(this->GetSafeHwnd(),_T("删除成功!"),XTTSOFT_SMS_APPNAME,MB_OK);
}
void CCallSmsComDlg::OnModemClear()
{
// TODO: Add your control notification handler code here
XTTSMSCOM::EMobileModemStatus eModemStatus=XTTSMSCOM::UNINIT_STATUS;
g_spiModemService->get_ModemStatus(&eModemStatus);
if(eModemStatus<XTTSMSCOM::OK_STATUS)
{
::MessageBox(this->GetSafeHwnd(),_T("还没有正常连接短信猫!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
UpdateData(TRUE);
int iMsgPosition=m_ctlMsgList.GetCurSel();
if(iMsgPosition<0)
{
::MessageBox(this->GetSafeHwnd(),_T("请先取到总的数量!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
VARIANT_BOOL bClearFlag=VARIANT_FALSE;
g_spiModemService->ClearSimMsg(&bClearFlag);
if(bClearFlag==VARIANT_FALSE)
{
CComVariant varErrDes;
XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
CString strErrInfo(_T(""));
if(varErrDes.vt==VT_BSTR && varErrDes.bstrVal!=NULL)
strErrInfo.Format(_T("清空失败!错误码为%d,错误信息为 %s。"),eErrType,(CString )varErrDes.bstrVal);
else
strErrInfo=_T("清空失败!");
::MessageBox(this->GetSafeHwnd(),strErrInfo,XTTSOFT_SMS_APPNAME,MB_OK);
}
else
::MessageBox(this->GetSafeHwnd(),_T("清空成功!"),XTTSOFT_SMS_APPNAME,MB_OK);
}
void CCallSmsComDlg::OnModemOtherdemo()
{
// TODO: Add your control notification handler code here
//演示其它功能
COtherDemoDlg DemoDlg;
DemoDlg.m_sSplitCount=m_sSplitCount;
DemoDlg.m_arrSendTo.Copy(m_arrSendTo);
DemoDlg.DoModal();
}
void CCallSmsComDlg::OnModemWritesmca()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_strSMCA.TrimLeft();
m_strSMCA.TrimRight();
if(g_spiModemService==NULL || m_strSMCA.IsEmpty()==TRUE)
return;
XTTSMSCOM::EMobileModemStatus eModemStatus=XTTSMSCOM::UNINIT_STATUS;
g_spiModemService->get_ModemStatus(&eModemStatus);
if(eModemStatus<XTTSMSCOM::OK_STATUS)
{
::MessageBox(this->GetSafeHwnd(),_T("还没有正常连接短信猫!"),XTTSOFT_SMS_APPNAME,MB_OK);
return;
}
//设置短信中心到SIM卡,如北京的是13800100500
g_spiModemService->SetSMCA(m_strSMCA.AllocSysString(),VARIANT_TRUE);//设置到SIM卡
CComVariant varErrDes;
XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
if(eErrType==XTTSMSCOM::OK_ERRTYPE)
::MessageBox(this->GetSafeHwnd(),_T("设置成功!"),XTTSOFT_SMS_APPNAME,MB_OK);
}
void CCallSmsComDlg::OnModemSpecsms()
{
// TODO: Add your control notification handler code here
CSpecSmsDlg SpecSmsDlg(this);
int iRet=SpecSmsDlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -