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

📄 dlgconfig.cpp

📁 使用vc++技术实现光电机串口通信管理程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			CString Temp;
			m_CtrAim2.GetText(aryListBoxSel[i], Temp);//获得每项的文字保存在Temp
			
			
			if(Temp.Find("ATS")!=-1)
			{
				m_CtrSourceA.AddString(Temp);
			}
			else if(Temp.Find("BTS")!=-1)
			{
				m_CtrSourceB.AddString(Temp);
			}
			else if(Temp.Find("CTS")!=-1)
			{
				m_CtrSourceC.AddString(Temp);
			}
			else if(Temp.Find("DTS")!=-1)
			{
				m_CtrSourceD.AddString(Temp);
			}		
		}
		for(int j=0; j<nCount;j++)
		{
			int idSel;
			idSel=m_CtrAim2.GetCurSel();
			if(idSel>=0)
			{
				m_CtrAim2.DeleteString((UINT)idSel);
			}
		}
		
		
		UpdateData(false);
	}
}
void CDlgConfig::OnBtn3left() 
{
	// TODO: Add your control notification handler code here
	CStringArray straSels;
	int nCount = m_CtrAim3.GetSelCount();
	if(nCount>0)
	{
		CArray<int,int> aryListBoxSel;
		
		aryListBoxSel.SetSize(nCount);
		m_CtrAim3.GetSelItems(nCount,aryListBoxSel.GetData());
		for(int i=0; i<nCount;i++)
		{
			CString Temp;
			m_CtrAim3.GetText(aryListBoxSel[i], Temp);//获得每项的文字保存在Temp
			
			
			if(Temp.Find("ATS")!=-1)
			{
				m_CtrSourceA.AddString(Temp);
			}
			else if(Temp.Find("BTS")!=-1)
			{
				m_CtrSourceB.AddString(Temp);
			}
			else if(Temp.Find("CTS")!=-1)
			{
				m_CtrSourceC.AddString(Temp);
			}
			else if(Temp.Find("DTS")!=-1)
			{
				m_CtrSourceD.AddString(Temp);
			}		
		}
		for(int j=0; j<nCount;j++)
		{
			int idSel;
			idSel=m_CtrAim3.GetCurSel();
			if(idSel>=0)
			{
				m_CtrAim3.DeleteString((UINT)idSel);
			}
		}
		
		
		UpdateData(false);
	}
}
void CDlgConfig::OnBtn4left() 
{
	// TODO: Add your control notification handler code here
	CStringArray straSels;
	int nCount = m_CtrAim4.GetSelCount();
	if(nCount>0)
	{
		CArray<int,int> aryListBoxSel;
		
		aryListBoxSel.SetSize(nCount);
		m_CtrAim4.GetSelItems(nCount,aryListBoxSel.GetData());
		for(int i=0; i<nCount;i++)
		{
			CString Temp;
			m_CtrAim4.GetText(aryListBoxSel[i], Temp);//获得每项的文字保存在Temp
			
			
			if(Temp.Find("ATS")!=-1)
			{
				m_CtrSourceA.AddString(Temp);
			}
			else if(Temp.Find("BTS")!=-1)
			{
				m_CtrSourceB.AddString(Temp);
			}
			else if(Temp.Find("CTS")!=-1)
			{
				m_CtrSourceC.AddString(Temp);
			}
			else if(Temp.Find("DTS")!=-1)
			{
				m_CtrSourceD.AddString(Temp);
			}		
		}
		for(int j=0; j<nCount;j++)
		{
			int idSel;
			idSel=m_CtrAim4.GetCurSel();
			if(idSel>=0)
			{
				m_CtrAim4.DeleteString((UINT)idSel);
			}
		}
		
		
		UpdateData(false);
	}
}
int iPos;
void CDlgConfig::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	switch(nIDEvent) {
	case 1:
			KillTimer(1);
		//if(!CCheckState::strRecive.IsEmpty() &&CCheckState::iState==2 &&CCheckState::iTime==2)
			 iPos =m_strRXData.Find ("7E 7E");
				if(iPos!=-1)
				{
					CString strAnser;
					int istdLen=sizeof("7E 7E 81 01 01 02 00 80 ");
					int nLen=m_strRXData.GetLength()-iPos-istdLen;
					
					strAnser=m_strRXData.Right(nLen+1);
					strPage+=" ";
			/*		CStdioFile file;
					file.Open("1",CFile::modeCreate|CFile::modeWrite);
					file.WriteString(strAnser);
					file.WriteString(strPage);
					file.Close();
					*/
				//	AfxMessageBox(strAnser+"\n"+strPage);
					if(strAnser.Compare(strPage)==0)
					{
						AfxMessageBox("交叉连接设置成功");
					//	iState=1;
						m_Port.ClosePort();
					//	CDlgConfig::iState=0;
						return;
					}
					else
					{
					//	strSent.Format("7E 81 %s %s 00 00 00",strGetAim,strGetAim);;//再发一次十六进制查询数据
					//	iState=2;
					//	SetTimer(1,1000,NULL);
						//	UpdateData(false);//取界面的返回结果串;
						nLen=m_strRXData.GetLength()-istdLen;
						strAnser=m_strRXData.Right(nLen+1);
						if(strAnser.Compare(strPage)==0)
						{
							
							AfxMessageBox("交叉连接设置成功");
							//iState=1;
							m_Port.ClosePort();
						//	CDlgConfig::iState=0;
							return;
						}
						else
						{
							AfxMessageBox("交叉连接设置未成功");
							//iState=1;
							m_Port.ClosePort();
						//	CDlgConfig::iState=0;
							return;
						}					
						
					}
					
				}
				else
				{
					AfxMessageBox("返回的报文结构不正确,请核查");
				}
		break;
	case 2:
		
		if(!CCheckState::strRecive.IsEmpty()&&CCheckState::iState==2)
		{
			m_strRXData=CCheckState::strRecive;
			UpdateData(false);
			KillTimer(2);
			CDlgConfig::iState=1;
		}
		break;

	case 3:
		KillTimer(3);
		ReSetAim();
		break;		

	}
		CDialog::OnTimer(nIDEvent);
}
void CDlgConfig::ReSetAim()
{
	
	int iPos7e7e=m_strRXData.Find("7E 7E");
	if(iPos7e7e<0)
	{
		return;
	}
	CString strUporDown;
	CString StrRXRight;
	int nLRX=m_strRXData.GetLength();
	StrRXRight=m_strRXData.Right(nLRX-iPos7e7e-24);
	strUporDown=m_strRXData.Mid(nLRX-iPos7e7e-18,2);
	if(strUporDown=="00")
	{
		m_iCmd=0;
		UpdateData(false);
	}
	if(strUporDown=="01")
	{
		m_iCmd=1;
		UpdateData(false);
	}
//	AfxMessageBox(StrRXRight);
//////////////////////////////////////////////////////////////////////////
	int icnAim1=m_CtrSourceA.GetCount();
	if(icnAim1>0)
	{	
		
		for(int i=0;i<icnAim1;i++)
		{
			m_CtrSourceA.DeleteString(0);
		}
		
	}
	int icnAim2=m_CtrSourceB.GetCount();
	if(icnAim2>0)
	{
		for(int i=0;i<icnAim2;i++)
		{
			m_CtrSourceB.DeleteString(0);
		}
	}
	int icnAim3=m_CtrSourceC.GetCount();
	if(icnAim3>0)
	{
		for(int i=0;i<icnAim3;i++)
		{
			m_CtrSourceC.DeleteString(0);
		}
	}
	int icnAim4=m_CtrSourceD.GetCount();
	if(icnAim4>0)
	{
		for(int i=0;i<icnAim4;i++)
		{
			m_CtrSourceD.DeleteString(0);
		}
	}
	InitListBox();//删除目的,初始化源
//////////////////////////////向目的中添加数据////////////////////////////////////////////
	int iLenPlan =StrRXRight.GetLength();	
	iLenPlan=iLenPlan/3;
	int iIdx=0;
	while(iIdx<iLenPlan)
	{					
		CString strGetTs;
		strGetTs=StrRXRight.Mid(0,2);
		for(int its=0;its<128;its++)
		{
			CString strTemp;
			strTemp=staTsBin.GetAt(its);
			CString strTSTemp;
			strTSTemp=staTsStr.GetAt(its);
			if(strGetTs==strTemp)
			{
				its=128;
				if(iIdx<32)
				{								
					m_CtrAim1.InsertString(iIdx,strTSTemp,RED);
				}
				else if(iIdx>=32 &&iIdx<64)
				{
					m_CtrAim2.InsertString(iIdx-32,strTSTemp,RED);
				}
				else if(iIdx>=64 &&iIdx<96)
				{
					m_CtrAim3.InsertString(iIdx-64,strTSTemp,RED);
				}
				else if(iIdx>=96 &&iIdx<128)
				{
					m_CtrAim4.InsertString(iIdx-96,strTSTemp,RED);
				}
				strTemp+=" ";
				StrRXRight.Replace(strTemp,"");
				iIdx++;
				///////////////删除目的中的源的值///////////////////////////////////////////////////////////
				if(strTSTemp.Find("ATS")!=-1)
				{
					//	int iFindIdx;
					CString strGetText;
					for(int iDx=0;iDx<m_CtrSourceA.GetCount();iDx++)
					{
						m_CtrSourceA.GetText(iDx,strGetText);
						if(strGetText==strTSTemp)
						{
							m_CtrSourceA.DeleteString(iDx);
							iDx=m_CtrSourceA.GetCount();
						}
					}
				}
				else if(strTSTemp.Find("BTS")!=-1)
				{
					//	int iFindIdx;
					CString strGetText;
					for(int iDx=0;iDx<m_CtrSourceB.GetCount();iDx++)
					{
						m_CtrSourceB.GetText(iDx,strGetText);
						if(strGetText==strTSTemp)
						{
							m_CtrSourceB.DeleteString(iDx);
							iDx=m_CtrSourceB.GetCount();
						}
					}
				}
				else 	if(strTSTemp.Find("CTS")!=-1)
				{
					
					//	int iFindIdx;
					CString strGetText;
					for(int iDx=0;iDx<m_CtrSourceC.GetCount();iDx++)
					{
						m_CtrSourceC.GetText(iDx,strGetText);
						if(strGetText==strTSTemp)
						{
							m_CtrSourceC.DeleteString(iDx);
							iDx=m_CtrSourceC.GetCount();
							
						}
					}
				}
				else 	if(strTSTemp.Find("DTS")!=-1)
				{
					
					//	int iFindIdx;
					CString strGetText;
					for(int iDx=0;iDx<m_CtrSourceD.GetCount();iDx++)
					{
						m_CtrSourceD.GetText(iDx,strGetText);
						if(strGetText==strTSTemp)
						{
							m_CtrSourceD.DeleteString(iDx);
							iDx=m_CtrSourceD.GetCount();
							
						}
					}
				}
				
				
				strGetTs=StrRXRight.Mid(0,2);
			}
			
		}
	}
				
				
	UpdateData(false);
}
void CDlgConfig::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	//CDlgConfig::iState=0;
	if(m_Port.m_hComm!=NULL)
	{
		m_Port.ClosePort();
		CDlgConfig::iState=0;
	}
	CDlgConfig::iState=0;
	CDialog::OnClose();
}
int CDlgConfig::Str2Hex(CString str, char* data)
{
	int t,t1;
	int rlen=0,len=str.GetLength();
	//data.SetSize(len/2);
	for(int i=0;i<len;)
	{
		char l,h=str[i];
		if(h==' ')
		{
			i++;
			continue;
		}
		i++;
		if(i>=len)
			break;
		l=str[i];
		t=HexChar(h);
		t1=HexChar(l);
		if((t==16)||(t1==16))
			break;
		else 
			t=t*16+t1;
		i++;
		data[rlen]=(char)t;
		rlen++;
	}
	return rlen;

}
char CDlgConfig::HexChar(char c)
{
	if((c>='0')&&(c<='9'))
		return c-0x30;
	else if((c>='A')&&(c<='F'))
		return c-'A'+10;
	else if((c>='a')&&(c<='f'))
		return c-'a'+10;
	else 
		return 0x10;
}
LONG CDlgConfig::OnCommunication(WPARAM ch,LPARAM port)
{
	if (port <= 0 || port > 4)
		return -1;
	CString str;

	str.Format("%02X ",ch);
	m_strRXData+=str;
	UpdateData(false);
	return 0;


}
void CDlgConfig::OnButtonClearReciArea() 
{
	// TODO: Add your control notification handler code here
	m_strRXData.Empty();
	UpdateData(FALSE);
}
void CDlgConfig::OnButtonOpenport(UINT uiCom) 
{
	// TODO: Add your control notification handler code here
/*	////////////////////////读串口信息//////////////////////////////////////////////////
	CDlgAllStaSet dlgalstaset;
	CString strPath;
	char Get[255];
	dlgalstaset.GetModulePath(strPath,NULL);

	strPath+="config.ini";
	GetPrivateProfileString("General","COM","1",Get,255,strPath);
	UINT uiCom=(UINT)atoi(Get);
	//////////////////////////////////////////////////////////////////////////

		CString strStatus;	*/
		if (m_Port.InitPort(this, uiCom, 2400,'o',8,1,EV_RXFLAG | EV_RXCHAR,2048))
		{
			m_Port.StartMonitoring();		
		}
		else
		{
			AfxMessageBox("没有发现此串口或被占用");
		}
		

}
void CDlgConfig::GetLogPath()
{
	SYSTEMTIME   mySystemTime;
	GetLocalTime(&mySystemTime);
	CString   filetime;
	strCurTime.Format("%d:%d:%d",mySystemTime.wHour,mySystemTime.wMinute,mySystemTime.wSecond);
	//	filetime.Format ("%d-%d-%d     %s%d     %d:%d:%d",mySystemTime.wYear,mySystemTime.wMonth,mySystemTime.wDay,"星期",mySystemTime.wDayOfWeek,mySystemTime.wHour,mySystemTime.wMinute,mySystemTime.wSecond);
	filetime.Format("%d-%d-%d.ini",mySystemTime.wYear,mySystemTime.wMonth,mySystemTime.wDay);
	CDlgAllStaSet dlgalstaset;
	dlgalstaset.GetModulePath(strLogPath,NULL);
	strLogPath=strLogPath+"log\\"+filetime;
}



void CDlgConfig::OnDblclkListAim1() 
{
	// TODO: Add your control notification handler code here

		m_CtrAim1.SetSel(-1,false);
		nSel1=-1;
		


}

void CDlgConfig::OnSelchangeListAim1() 
{
	// TODO: Add your control notification handler code here
	CDlgConfig::nSel1=0;
}

void CDlgConfig::OnSelchangeListAim2() 
{
	// TODO: Add your control notification handler code here
	CDlgConfig::nSel2=0;
}

void CDlgConfig::OnSelchangeListAim3() 
{
	// TODO: Add your control notification handler code here
	CDlgConfig::nSel3=0;
}

void CDlgConfig::OnSelchangeListAim4() 
{
	// TODO: Add your control notification handler code here
	CDlgConfig::nSel4=0;
}

void CDlgConfig::OnDblclkListAim2() 
{
	// TODO: Add your control notification handler code here
		m_CtrAim2.SetSel(-1,false);
		CDlgConfig::nSel2=-1;
}

void CDlgConfig::OnDblclkListAim3() 
{
	// TODO: Add your control notification handler code here
		m_CtrAim3.SetSel(-1,false);
		CDlgConfig::nSel3=-1;
}

void CDlgConfig::OnDblclkListAim4() 
{
	// TODO: Add your control notification handler code here
		m_CtrAim4.SetSel(-1,false);
		CDlgConfig::nSel4=-1;
}

⌨️ 快捷键说明

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