📄 smscomdlg.cpp
字号:
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 + -