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

📄 gsm_ctrl_prjdlg.cpp

📁 tc35i(GSM模块)的控制程序VC源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		{
			//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 + -