📄 gsm_ctrl_prjdlg.cpp
字号:
{
//if(m_pCurDlg == &m_sendMsgDlg){
m_sendMsgDlg.SendMessage(MSG_SENMSG_NEXTSTEP,0L,0L);
//}
}
return;
case AT_SEND_MSG_STEP1:
if (tempStr.Find("\r\n>")>=0)
{
//if(m_pCurDlg == &m_sendMsgDlg){
m_sendMsgDlg.SendMessage(MSG_SENMSG_NEXTSTEP,0L,0L);
//}
}
return;
/*case AT_SEND_MSG_STEP2:
break;
*/
case AT_FREE:
if(tempStr.Find("ERROR") == 0){
//如果测试失败,则作何处理?
}
if (tempStr.Find("OK")>=0)
{
m_ATCmdStatus = AT_SET_PDU;
CATCmd::AT_Set_PDU();
}
return;
case AT_SET_PDU:
if(tempStr.Find("ERROR") == 0){
//如果初始化配置失败,则作何处理?
}
if (tempStr.Find("OK")>=0)
{
m_ATCmdStatus = AT_SET_SNFS;
CATCmd::AT_Set_Snfs();
}
return;
case AT_SET_SNFS:
if(tempStr.Find("ERROR") == 0){
//如果初始化配置失败,则作何处理?
}
if (tempStr.Find("OK")>=0)
{
m_ATCmdStatus = AT_SET_SAIC;
CATCmd::AT_Set_Saic();
}
return;
case AT_SET_SAIC:
if(tempStr.Find("ERROR") == 0){
//如果初始化配置失败,则作何处理?
}
if (tempStr.Find("OK")>=0)
{
m_ATCmdStatus = AT_SET_SHOWTELCLUE;
CATCmd::AT_Set_ShowTelClue();
}
return;
case AT_SET_SHOWTELCLUE:
if(tempStr.Find("ERROR") == 0){
//如果初始化配置失败,则作何处理?
}
if (tempStr.Find("OK")>=0)
{
m_ATCmdStatus = AT_SET_SHOWMSGCLUE;
CATCmd::AT_Set_ShowMsgClue();
}
return;
case AT_SET_SHOWMSGCLUE:
if(tempStr.Find("ERROR") == 0){
//如果初始化配置失败,则作何处理?
}
if (tempStr.Find("OK")>=0)
{
//初始化成功完毕
m_ATCmdStatus = AT_INIT_COMPLETE;
}
return;
// case AT_CALLIN:
// if(tempStr.Find("CLIP") >= 0) return;
// break;
}
//收到短消息
}
LRESULT CGSM_Ctrl_PrjDlg::OnCallIn(WPARAM wParam, LPARAM lParam){
switch(wParam) {
case CALL_ACCEPT:
CATCmd::AT_Accept();
//m_ATCallStatus = AT_FREE;
break;
case CALL_HUNGUP:
CATCmd::AT_Hangup();
//m_ATCallStatus = AT_FREE;
break;
default:
break;
}
return 0L;
}
LRESULT CGSM_Ctrl_PrjDlg::OnDlgSwitch(WPARAM wParam, LPARAM lParam){
switch(wParam){
case DLG_CALL_PHONE:
OnCall();
break;
case DLG_RECMSG_MBOX:
OnRecmbox();
break;
case DLG_SENDMSG_MBOX:
OnSendmbox();
break;
}
return 0L;
}
void CGSM_Ctrl_PrjDlg::Init(){
DCB configSerial_;
CString commName;
//初始化子窗口
m_sendMsgDlg.Create(CSendMsgDlg::IDD,this);
m_sendMsgDlg.ShowWindow(SW_HIDE);
m_telBookDlg.Create(CTelBookDlg::IDD,this);
m_telBookDlg.ShowWindow(SW_HIDE);
m_receiveMsgMBoxDlg.Create(CReceiveMsgMBoxDlg::IDD,this);;
m_receiveMsgMBoxDlg.ShowWindow(SW_HIDE);
m_recentCallInDlg.Create(CRecentCallInDlg::IDD,this);;
m_recentCallInDlg.ShowWindow(SW_HIDE);
m_recentCallOutDlg.Create(CRecentCallOutDlg::IDD,this);;
m_recentCallOutDlg.ShowWindow(SW_HIDE);
m_callDlg.Create(CCallDlg::IDD,this);;
m_callDlg.ShowWindow(SW_HIDE);
m_pCurDlg = &m_sendMsgDlg;
OnSendmbox();
//启动串口线程服务
m_commStatus = FALSE;
g_pSerialProcess = (SerialThread*)AfxBeginThread(RUNTIME_CLASS(SerialThread),
THREAD_PRIORITY_ABOVE_NORMAL, 0, CREATE_SUSPENDED);
configSerial_.ByteSize = 8;
configSerial_.StopBits = ONESTOPBIT;
configSerial_.Parity = NOPARITY;
configSerial_.BaudRate = CBR_4800;
commName = "COM1";
g_pSerialProcess->InitCommConf(configSerial_,commName);//初始化串口配置
g_pSerialProcess->SetCommStatus(COMM_STATUS_OPEN); //要求串口线程打开串口
g_pSerialProcess->ResumeThread();
//初始化来电、来短信息处理线程
g_pTMComProcess = (CSTMComShowThread*)AfxBeginThread(RUNTIME_CLASS(CSTMComShowThread),
THREAD_PRIORITY_ABOVE_NORMAL, 0, CREATE_SUSPENDED);
g_pTMComProcess->ResumeThread();
g_pMsgComProcess = (CMsgThread*)AfxBeginThread(RUNTIME_CLASS(CMsgThread),
THREAD_PRIORITY_ABOVE_NORMAL, 0, CREATE_SUSPENDED);
g_pMsgComProcess->ResumeThread();
//创建串口消息回应显示区域
RECT rect;
rect.left=5,rect.top=160,rect.right=475,rect.bottom=340;
m_richEdit.Create( WS_VISIBLE | WS_CHILD | ES_MULTILINE |
ES_WANTRETURN | WS_HSCROLL | WS_VSCROLL |
ES_AUTOHSCROLL | ES_AUTOVSCROLL | WS_BORDER,
rect, this, IDC_RICHEDIT_CTRL );
m_richEdit.SetReadOnly(true);
}
void CGSM_Ctrl_PrjDlg::WriteScommArrDat(CString cs){
long len = m_richEdit.GetTextLength();
m_richEdit.SetSel(len,len);
m_richEdit.ReplaceSel(cs);
m_richEdit.UpdateWindow();
}
void CGSM_Ctrl_PrjDlg::OnScomm()
{
// TODO: Add your command handler code here
CSCommDlg m_commDlg;
DCB configSerial_;
CString commName;
if(m_commDlg.DoModal()==IDOK){
configSerial_.ByteSize = 8;
configSerial_.StopBits = ONESTOPBIT;
configSerial_.Parity = NOPARITY;
configSerial_.BaudRate = m_commDlg.m_baud;
g_pSerialProcess->ResumeThread();
g_pSerialProcess->SetCommStatus(COMM_STATUS_CLOSE);//要求串口线程关闭串口
while (g_pSerialProcess->GetCommStatus())//等待直到关闭成功
{
Sleep(1000) ;
}
g_pSerialProcess->InitCommConf(configSerial_,m_commDlg.m_commName);//更新串口配置
g_pSerialProcess->SetCommStatus(COMM_STATUS_OPEN); //再次要求串口线程打开串口
m_ATCmdStatus = AT_FREE;
m_ATCallStatus = AT_FREE;
}
}
void CGSM_Ctrl_PrjDlg::OnTelbook()
{
// TODO: Add your command handler code here
CRect childRect; //父子窗体坐标
ASSERT(m_pCurDlg);
m_pCurDlg->ShowWindow(SW_HIDE);
m_pCurDlg = &m_telBookDlg;
m_telBookDlg.GetWindowRect(&childRect);
ScreenToClient(&childRect);
childRect.TopLeft().x=childRect.Width()*(-1);
childRect.BottomRight().x=0;
m_telBookDlg.MoveWindow(&childRect,true);//将当前子窗体移到左边
m_telBookDlg.ShowWindow(SW_SHOW);
SetTimer(1,WND_MOVE_SPEED,NULL);//开始运动
}
void CGSM_Ctrl_PrjDlg::OnRecmbox()
{
// TODO: Add your command handler code here
CRect childRect; //父子窗体坐标
ASSERT(m_pCurDlg);
m_pCurDlg->ShowWindow(SW_HIDE);
m_pCurDlg = &m_receiveMsgMBoxDlg;
m_receiveMsgMBoxDlg.GetWindowRect(&childRect);
ScreenToClient(&childRect);
childRect.TopLeft().x=childRect.Width()*(-1);
childRect.BottomRight().x=0;
m_receiveMsgMBoxDlg.MoveWindow(&childRect,true);//将当前子窗体移到左边
m_receiveMsgMBoxDlg.ShowWindow(SW_SHOW);
SetTimer(1,WND_MOVE_SPEED,NULL);//开始运动
}
void CGSM_Ctrl_PrjDlg::OnSendmbox()
{
// TODO: Add your command handler code here
CRect childRect; //父子窗体坐标
ASSERT(m_pCurDlg);
m_pCurDlg->ShowWindow(SW_HIDE);
m_pCurDlg = &m_sendMsgDlg;
m_sendMsgDlg.GetWindowRect(&childRect);
ScreenToClient(&childRect);
childRect.TopLeft().x=childRect.Width()*(-1);
childRect.BottomRight().x=0;
m_sendMsgDlg.MoveWindow(&childRect,true);//将当前子窗体移到左边
m_sendMsgDlg.ShowWindow(SW_SHOW);
m_pCurDlg = (CDialog*)&m_sendMsgDlg;
SetTimer(1,WND_MOVE_SPEED,NULL);//开始运动
}
//void CGSM_Ctrl_PrjDlg::OnInputtel()
//{
// // TODO: Add your command handler code here
// CString tempStr = "+CMTI:\"SM\",3\r\n";
// Analyse((UCHAR*)tempStr.GetBuffer(tempStr.GetLength()),14);
// CRect childRect; //父子窗体坐标
// ASSERT(m_pCurDlg);
// m_pCurDlg->ShowWindow(SW_HIDE);
// m_pCurDlg = &m_recentCallInDlg;
// m_recentCallInDlg.GetWindowRect(&childRect);
// ScreenToClient(&childRect);
//
// childRect.TopLeft().x=childRect.Width()*(-1);
// childRect.BottomRight().x=0;
//
// m_recentCallInDlg.MoveWindow(&childRect,true);//将当前子窗体移到左边
// m_recentCallInDlg.ShowWindow(SW_SHOW);
//
// SetTimer(1,WND_MOVE_SPEED,NULL);//开始运动
// }
//void CGSM_Ctrl_PrjDlg::OnOutputtel()
//{
// // TODO: Add your command handler code here
// CRect childRect; //父子窗体坐标
// ASSERT(m_pCurDlg);
// m_pCurDlg->ShowWindow(SW_HIDE);
// m_pCurDlg = &m_recentCallOutDlg;
// m_recentCallOutDlg.GetWindowRect(&childRect);
// ScreenToClient(&childRect);
//
// childRect.TopLeft().x=childRect.Width()*(-1);
// childRect.BottomRight().x=0;
//
// m_recentCallOutDlg.MoveWindow(&childRect,true);//将当前子窗体移到左边
// m_recentCallOutDlg.ShowWindow(SW_SHOW);
//
// SetTimer(1,WND_MOVE_SPEED,NULL);//开始运动
//}
void CGSM_Ctrl_PrjDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
switch(nIDEvent){
case 1:
m_pCurDlg->GetWindowRect(&rect);//获取子窗口屏幕坐标
ScreenToClient(&rect);//注意,转换为父窗口客户区域坐标,因为MoveWindow函数的参数是父窗口客户区域坐标值
if(rect.left<(DLG_BORDER_WIDTH - DLG_MOVE_SPEED))
{
rect.TopLeft().x+=DLG_MOVE_SPEED;
rect.BottomRight().x+=DLG_MOVE_SPEED;
m_pCurDlg->MoveWindow(&rect,true);
}
else
{
int oldx;
oldx = DLG_BORDER_WIDTH - rect.TopLeft().x;
rect.TopLeft().x = DLG_BORDER_WIDTH;
rect.BottomRight().x += oldx;
m_pCurDlg->MoveWindow(&rect,true);//移到初始位置
KillTimer(1);
}
break;
case 2:
m_CallInCnt--;
if (m_CallInCnt == -1)
{
KillTimer(2);
m_ATCallStatus = AT_FREE;
g_pTMComProcess->SetShowMsg("对方已挂机");
// clueDlg.SetShowStr("对方已挂机");
}
break;
}
CDialog::OnTimer(nIDEvent);
}
void CGSM_Ctrl_PrjDlg::OnCall()
{
// TODO: Add your command handler code here
CRect childRect; //父子窗体坐标
ASSERT(m_pCurDlg);
m_pCurDlg->ShowWindow(SW_HIDE);
m_pCurDlg = &m_callDlg;
m_callDlg.GetWindowRect(&childRect);
ScreenToClient(&childRect);
childRect.TopLeft().x=childRect.Width()*(-1);
childRect.BottomRight().x=0;
m_callDlg.MoveWindow(&childRect,true);//将当前子窗体移到左边
m_callDlg.ShowWindow(SW_SHOW);
SetTimer(1,WND_MOVE_SPEED,NULL);//开始运动
}
void CGSM_Ctrl_PrjDlg::OnDestroy()
{
m_sendMsgDlg.DestroyWindow();
m_telBookDlg.DestroyWindow();
m_receiveMsgMBoxDlg.DestroyWindow();
m_recentCallInDlg.DestroyWindow();
m_recentCallOutDlg.DestroyWindow();
m_callDlg.DestroyWindow();
CDialog::OnDestroy();
// TODO: Add your message handler code here
}
void CGSM_Ctrl_PrjDlg::OnAppabout()
{
// TODO: Add your command handler code here
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -