⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smscomdlg.cpp

📁 sms sender 察到布局图全貌
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		fmt.LoadString(IDS_SNDSM_CODE);
		temp.LoadString(IDS_SNDSM_HEADER);
        MessageBox(fmt,temp,MB_ICONSTOP | MB_OK);
		((CEdit *)GetDlgItem(IDC_PHONE_CODE_EDIT))->SetFocus();
		return;
	}
	if(m_szInterAreaSMCCode.IsEmpty())
	{
		fmt.LoadString(IDS_WARNING_SMCIAC);
		temp.LoadString(IDS_HEADER_INITIAL);
        MessageBox(fmt,temp,MB_ICONSTOP | MB_OK);
		((CEdit *)GetDlgItem(IDC_INTER_AREA_SMCCODE_EDIT))->SetFocus();
		return;
	}
	if(m_szSMSCCode.IsEmpty())
	{
		fmt.LoadString(IDS_WARNING_SMCCODE);
		temp.LoadString(IDS_HEADER_INITIAL);
        MessageBox(fmt,temp,MB_ICONSTOP | MB_OK);
		((CEdit *)GetDlgItem(IDC_SMSC_CODE_EDIT))->SetFocus();
		return;
	}
	m_ctrlGsmSms.SetSMSCCode(m_szSMSCCode);
	m_ctrlGsmSms.SetSMCInterAreaCode(m_szInterAreaSMCCode);
	m_ctrlGsmSms.SetMTInterAreaCode(m_szInterAreaMTCode);

	szSMMsg=m_szPhoneCode;
	if( (nblank=20-m_szPhoneCode.GetLength())>0 )
	{
		for(int i=0;i<nblank;i++)
			szSMMsg=szSMMsg+_T(" ");
	}
	else
		szSMMsg=m_szPhoneCode.Left(20);
	szSMMsg=szSMMsg+m_szSMText;
	pmsg=new char[szSMMsg.GetLength()+1];
	lstrcpy(pmsg,szSMMsg);
#ifdef MY_DEBUG_MSG
//	MessageBox(szSMMsg);
#else
#ifdef _DEBUG
	TRACE(szSMMsg);
#endif
#endif
	PostMessage(MYMSG_GSMSMS_SENDMSG,SM_MSG_CLASS,(LPARAM)pmsg);
	//PostMessage(MYMSG_GSMSMS_SENDMSG,SM_MSG_CLASS,(LPARAM)(const char *)szSMMsg);

}

void CSmsComDlg::OnClickedOk() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_ctrlSMSCom.GetPortOpen())
		m_ctrlSMSCom.SetPortOpen(false);
	CString temp,fmt;
	if( m_ctrlCenterName.GetCount()>0 && m_szInterAreaSMCCode.IsEmpty() )
	{
		fmt.LoadString(IDS_WARNING_SMCIAC);
		temp.LoadString(IDS_HEADER_INITIAL);
        MessageBox(fmt,temp,MB_ICONSTOP | MB_OK);
		((CEdit *)GetDlgItem(IDC_INTER_AREA_SMCCODE_EDIT))->SetFocus();
		if(m_ctrlCenterName.GetCount()>0) 
			return;
	}
	if( m_ctrlCenterName.GetCount()>0 && m_szSMSCCode.IsEmpty() )
	{
		fmt.LoadString(IDS_WARNING_SMCCODE);
		temp.LoadString(IDS_HEADER_INITIAL);
        MessageBox(fmt,temp,MB_ICONSTOP | MB_OK);
		((CEdit *)GetDlgItem(IDC_SMSC_CODE_EDIT))->SetFocus();
		if(m_ctrlCenterName.GetCount()>0) 
			return;
	}
	if(m_ctrlCenterName.GetCount()>0)
	{
		CReadDB db;
		CString szMoniUnitName;
		m_ctrlCenterName.GetWindowText(szMoniUnitName);
		CString szMoniUnitID;
		if(db.GetMoniUnitIDByMoniUnitName(szMoniUnitName,szMoniUnitID)==TRUE)
		{
			if(db.SaveSmsSettingMsgToDB(szMoniUnitID,m_szInterAreaSMCCode,m_szSMSCCode,m_szInterAreaMTCode,m_szPhoneCode)==FALSE)
			{
			    CString idgetstr,szcap;
				idgetstr.LoadString(IDS_DBCONNECT_SAVE_ERROR);
				szcap.LoadString(IDS_SAVEDB_CAPTION);
				MessageBox(idgetstr,szcap,MB_OK | MB_ICONWARNING);
			}
			else
				AfxGetApp()->WriteProfileString(s_profileHeading,s_profileMoniUnitName,szMoniUnitName);
		}
	}
	if (CanExit())
		CDialog::OnOK();
}

void CSmsComDlg::OnChangeSmTextEdit() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	CString szPreSMText=m_szSMText;
	char  szmsg[256];
	int nCurCnt;
	BOOL bFlag=FALSE;//缺省为英文
	m_nCodingType=0;

	CEdit* pctrlEdt=((CEdit *)GetDlgItem(IDC_SM_TEXT_EDIT));
	UpdateData(TRUE);
	nCurCnt=m_szSMText.GetLength();
	memset(szmsg,0,256);
	lstrcpy(szmsg,m_szSMText);
	for(int i=0;i<nCurCnt;i++)
	{
		if(szmsg[i]<0)
		{
			bFlag=TRUE;
			break;
		}
	}
	if(bFlag==TRUE)//中文
	{
		BSTR bstrTmp=m_szSMText.AllocSysString();
		int nSMLen=::SysStringLen(bstrTmp);
		if(bstrTmp!=NULL)
			::SysFreeString(bstrTmp);   // Free previous string, if any.
		if(nSMLen>0 && nSMLen<=70)
		{
			m_nSMTextCounter=nSMLen;
     		m_nCodingType=1;//中文
		}
		else
		{
			m_szSMText=szPreSMText;
			memset(szmsg,0,256);
			lstrcpy(szmsg,m_szSMText);
			for(int i=0;i<nCurCnt;i++)
			{
				if(szmsg[i]<0)
				{
					m_nCodingType=1;//中文
					break;
				}
			}
		}
   	}
	else
	{
		m_nSMTextCounter=m_szSMText.GetLength();
	}
	UpdateData(FALSE);	
	if(bFlag==TRUE && m_nSMTextCounter>=70)//中文
	{
		int nLen=pctrlEdt->GetWindowTextLength();
      	pctrlEdt->SetFocus();
       	pctrlEdt->SetSel(nLen,nLen);
 		pctrlEdt->Invalidate();
	}
}

void CSmsComDlg::OnSelchangeComlistCombo() 
{
	// TODO: Add your control notification handler code here
	int ncomboCurItem;
    
	ncomboCurItem=m_ctrlComSel.GetCurSel();
	m_nCurComSel=ncomboCurItem+1;
}

void CSmsComDlg::OnSelchangeBaudlistCombo() 
{
	// TODO: Add your control notification handler code here
	int ncomboCurItem;
    
	ncomboCurItem=m_ctrlBaudSel.GetCurSel();
	m_nCurBaud=m_nBaudList[ncomboCurItem];
}

void CSmsComDlg::OnSettingButton() 
{
	// TODO: Add your control notification handler code here
	int nCnt=0,nCom;
	CString temp,szSetting,fmt;
	CString szMoniUnitName=_T("");
	CString szMoniUnitID=_T("");
	CReadDB db;

	UpdateData(TRUE);
	if(m_ctrlCenterName.GetCount()<=0)
	{
		CString idgetstr,szcap;
		idgetstr.LoadString(IDS_WARNING_SRVCENTER);
		szcap.LoadString(IDS_SETTING_CAPTION);
		MessageBox(idgetstr,szcap,MB_OK | MB_ICONWARNING);
        m_ctrlCenterName.SetFocus();
		return;
	}

	if(m_szInterAreaSMCCode.IsEmpty())
	{
		fmt.LoadString(IDS_WARNING_SMCIAC);
		temp.LoadString(IDS_SETTING_CAPTION);
        MessageBox(fmt,temp,MB_ICONSTOP | MB_OK);
		((CEdit *)GetDlgItem(IDC_INTER_AREA_SMCCODE_EDIT))->SetFocus();
		return;
	}
	if(m_szSMSCCode.IsEmpty())
	{
		fmt.LoadString(IDS_WARNING_SMCCODE);
		temp.LoadString(IDS_SETTING_CAPTION);
        MessageBox(fmt,temp,MB_ICONSTOP | MB_OK);
		((CEdit *)GetDlgItem(IDC_SMSC_CODE_EDIT))->SetFocus();
		return;
	}

    m_ctrlGsmSms.SetSMSCCode(m_szSMSCCode);
	m_ctrlGsmSms.SetCalledPhoneCode(m_szPhoneCode);
	m_ctrlGsmSms.SetSMCInterAreaCode(m_szInterAreaSMCCode);
	m_ctrlGsmSms.SetMTInterAreaCode(m_szInterAreaMTCode);

	int ncomboCurItem;
    ncomboCurItem=m_ctrlComSel.GetCurSel();
	m_nCurComSel=ncomboCurItem+1;
	ncomboCurItem=m_ctrlBaudSel.GetCurSel();
	m_nCurBaud=m_nBaudList[ncomboCurItem];

	szSetting.Empty();

	if(m_ctrlSMSCom.GetPortOpen())
	{
		nCom=m_ctrlSMSCom.GetCommPort();
		fmt.LoadString(IDS_PROMT_QUESTION);
		szSetting.Format(fmt,nCom,m_nCurComSel);
		//szSetting.Format("关闭已打开的串口%d,重新选择初始化串口%d吗?",nCom,m_nCurComSel);		
		if(AfxMessageBox(szSetting,MB_YESNO|MB_ICONQUESTION)==IDYES)
			m_ctrlSMSCom.SetPortOpen(false);
		else
		{
			szSetting.Empty();
			temp.Empty();
			nCom=m_ctrlSMSCom.GetCommPort();
		    szSetting=m_ctrlSMSCom.GetSettings();
			fmt.LoadString(IDS_PROMT_COMOPEN_OK);
    		temp.Format(fmt,nCom);
    	    //temp.Format("成功打开了串口%d!其设置为:\n",nCom);
		    temp+=szSetting;
			DispMsg(temp);
		
			m_ctrlCenterName.GetWindowText(szMoniUnitName);
			if(db.GetMoniUnitIDByMoniUnitName(szMoniUnitName,szMoniUnitID)==TRUE)
			{
				if(!szMoniUnitID.IsEmpty())
				{
					m_ctrlGsmSms.AddToMTCodeList(szSetting,1);//清空
					if(m_ctrlGsmSms.ReadMTCodeFromDBSet(szMoniUnitID,nCnt)==FALSE)
					{
						CString idgetstr,szcap;
						idgetstr.LoadString(IDS_READDB_ERROR);
						szcap.LoadString(IDS_READDB_CAPTION_SMMTLIST);
						MessageBox(idgetstr,szcap,MB_OK | MB_ICONWARNING);
					}
				}
			}
			
		    AfxGetApp()->WriteProfileString(s_profileHeading,s_profileMoniUnitName,szMoniUnitName);
	        
			fmt.LoadString(IDS_PROMT_MTLIST_CNT);
	        szSetting.Format(fmt,nCnt);
            //szSetting.Format("; MT个数%d",nCnt);
			temp+=_T(";  ");
	        temp+=szSetting;

	        fmt.LoadString(IDS_PROMT_IAC);
	        temp+=fmt;
			temp+=_T("SMC:");
	        temp+=m_szInterAreaSMCCode;
			temp+=_T(";MT:");
	        temp+=m_szInterAreaMTCode;
			temp+=_T("  SMSCA:");
	        temp+=m_szSMSCCode;
	        m_szCurSettingPrompt=temp;
			UpdateData(FALSE);
			return;
		}
		szSetting.Empty();
		temp.Empty();
	}

    m_ctrlSMSCom.SetCommPort(m_nCurComSel);
	temp.Format("%d,n,8,1",m_nCurBaud);
	m_ctrlSMSCom.SetSettings((LPCTSTR)temp);
	m_ctrlSMSCom.SetInputLen(0);
	m_ctrlSMSCom.SetRThreshold(1);
	m_ctrlSMSCom.SetInputMode(1);   //0-Text,1-Binary
    m_ctrlSMSCom.SetOutBufferSize(1024);
    m_ctrlSMSCom.SetInBufferSize(1024);

	temp.Empty();
	if(m_ctrlSMSCom.GetPortOpen()==false)
		m_ctrlSMSCom.SetPortOpen(true);
	if(m_ctrlSMSCom.GetPortOpen())
	{
		nCom=m_ctrlSMSCom.GetCommPort();
		szSetting=m_ctrlSMSCom.GetSettings();
		fmt.LoadString(IDS_PROMT_COMOPEN_OK);
    	temp.Format(fmt,nCom);
    	//temp.Format("成功打开了串口%d!其设置为:\n",nCom);
		temp+=szSetting;
		DispMsg(temp);
        //m_szCurSettingPrompt=temp;
	    //MessageBox(temp,"串口初始化",MB_OK | MB_ICONINFORMATION );
	}
	else
	{
		nCom=m_ctrlSMSCom.GetCommPort();
		szSetting=m_ctrlSMSCom.GetSettings();
		fmt.LoadString(IDS_PROMT_COMOPEN_FAIL);
		temp.Format(fmt,nCom);
    	//temp.Format("串口%d初始化失败!其设置为:\n",nCom);
		temp+=szSetting;
		DispMsg(temp);
		//m_szCurSettingPrompt=temp;
	    //MessageBox(temp,"串口初始化",MB_OK | MB_ICONQUESTION );
	}

    m_ctrlCenterName.GetWindowText(szMoniUnitName);
	if(db.GetMoniUnitIDByMoniUnitName(szMoniUnitName,szMoniUnitID)==TRUE)
	{
		if(!szMoniUnitID.IsEmpty())
		{
			m_ctrlGsmSms.AddToMTCodeList(szSetting,1);//清空
			if(m_ctrlGsmSms.ReadMTCodeFromDBSet(szMoniUnitID,nCnt)==FALSE)
			{
			    CString idgetstr,szcap;
				idgetstr.LoadString(IDS_READDB_ERROR);
				szcap.LoadString(IDS_READDB_CAPTION_SMMTLIST);
				MessageBox(idgetstr,szcap,MB_OK | MB_ICONWARNING);
			}
		}
	}
	
	AfxGetApp()->WriteProfileString(s_profileHeading,s_profileMoniUnitName,szMoniUnitName);

	fmt.LoadString(IDS_PROMT_MTLIST_CNT);
	szSetting.Format(fmt,nCnt);
    //szSetting.Format("; MT个数%d",nCnt);
	temp+=_T(";  ");
	temp+=szSetting;

	fmt.LoadString(IDS_PROMT_IAC);
	temp+=fmt;
	temp+=_T("SMC:");
	temp+=m_szInterAreaSMCCode;
	temp+=_T(";MT:");
	temp+=m_szInterAreaMTCode;
	temp+=_T("  SMSCA:");
	temp+=m_szSMSCCode;
	m_szCurSettingPrompt=temp;
    UpdateData(FALSE);
}

/***
void CSmsComDlg::OnDialHangupButton() 
{
	// TODO: Add your control notification handler code here
	PostMessage(MYMSG_GSMSMS_SENDMSG,HANGUP_MSG_CLASS,(LPARAM)NULL);

}
****/

LONG CSmsComDlg::OnSndtoPhoneMsgProcess(UINT wParam, LONG lParam)
{
	CString szSndMsg,szSetting;
	CString szPhoneCode;
	CString szSMText;
	CString szDialedPhoneCode;
	CString szRcvMsg,szErr;
	CStringList szErrList;
	CString szStationID=_T("");
	int nCnt=0;
	char *p;

	switch(wParam)
	{
	    case GLCURVSM_MSG_CLASS://接收处理来自光缆检测系统的测试曲线告警信息
		{
			lParam=(LPARAM)NULL;
			CReadDB db;
			m_ctrlGsmSms.SetSMCodingType(1);//短信息编码类型,0-英文,1-中文
			if(db.GetWarnString(szStationID,szSMText,m_ctrlGsmSms.GetSMCodingType())==FALSE) 
			{
				DispMsg(_T("收到曲线告警=>组织告警信息时在资料库中未找到告警内容!"));
				break;
			}
			if(InitByStationID(szStationID)==FALSE)
			{
				DispMsg(_T("发送曲线告警失败!"));
				break;
			}
			m_ctrlGsmSms.SetShortMessageContext(szSMText);
			m_ctrlGsmSms.BCSendShortMessage(m_ctrlSMSCom, szErrList);
			int nErrCnt=szErrList.GetCount();
			if(nErrCnt>0)
			{
				POSITION pos;
				pos=szErrList.GetHeadPosition();
		    	for(int i=0;i<nErrCnt;i++)
				{
				 	DispMsg(szErrList.GetAt(pos));
			    	szErrList.GetNext(pos);
				}
			}
			break;
		}
		case GLOPMUSM_MSG_CLASS://接收处理来自光缆检测系统的光功率告警信息
		{
			CReadDB db;
			m_ctrlGsmSms.SetSMCodingType(1);//短信息编码类型,0-英文,1-中文
			if(db.GetOpmuWarn(szStationID,szSMText,lParam,m_ctrlGsmSms.GetSMCodingType())==FALSE)
			{
				CString szTmp;
				szTmp.Format("[t=%ld]",lParam);
				DispMsg(_T("收到光功率告警=>组织告警信息时在资料库中未找到告警内容!")+szTmp);
				lParam=(LPARAM)NULL;
				break;
			}
			if(InitByStationID(szStationID)==FALSE)
			{
				DispMsg(_T("发送光功率告警失败!"));
				lParam=(LPARAM)NULL;
				break;
			}
			m_ctrlGsmSms.SetShortMessageContext(szSMText);
			m_ctrlGsmSms.BCSendShortMessage(m_ctrlSMSCom, szErrList);
			int nErrCnt=szErrList.GetCount();
			if(nErrCnt>0)
			{
				POSITION pos;
				pos=szErrList.GetHeadPosition();
		    	for(int i=0;i<nErrCnt;i++)
				{
				 	DispMsg(szErrList.GetAt(pos));
			    	szErrList.GetNext(pos);
				}
			}
			lParam=(LPARAM)NULL;
			break;
		}
	    case SM_MSG_CLASS://发送短消息
		{
			szSndMsg=(LPCTSTR)lParam;
//			szSndMsg=(char const *)lParam;
//	        MessageBox(szSndMsg);
			szPhoneCode=szSndMsg.Left(20);
			szSMText=szSndMsg.Mid(20);
			m_ctrlGsmSms.SetSMCodingType(m_nCodingType);//短信息编码类型,0-英文,1-中文
			m_ctrlGsmSms.SetCalledPhoneCode(szPhoneCode);
	        m_ctrlGsmSms.SetShortMessageContext(szSMText);
           	if(m_ctrlGsmSms.SendShortMessage(m_ctrlSMSCom,szErr)==FALSE)
			{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -