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

📄 serialporttestdlg.cpp

📁 串口调试软件(附带源码)
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			if(m_strEditReceiveMsg3=="OK")AfxMessageBox("打开激光成功");	
			
			m_strEditReceiveMsg3="0";			
			}
			if(m_strSComm=="Laser_Close")//关闭激光
			{
			m_strEditReceiveMsg3=strCommData;
			m_strEditReceiveMsg3=m_strEditReceiveMsg3.Left(8);//提取前8个字符
			m_strEditReceiveMsg3=m_strEditReceiveMsg3.Right(2);//提取后2个字符
			
			if(m_strEditReceiveMsg3=="OK")AfxMessageBox("关闭激光成功");	
			
			m_strEditReceiveMsg3="0";			
			}
			if(m_strSComm=="UP_DA")//读取仪器上限
			{
			
			m_strEditTop=strCommData;
			m_strEditTop=m_strEditTop.Left(10);//提取前10个字符
			m_strEditTop=m_strEditTop.Right(4);//提取后4个字符
			m_strEditTop=m_strEditTop.TrimLeft("0");//删除0
			if(m_strEditTop=="")m_strEditTop="0";			
			}
			if(m_strSComm=="DOWN_DA")//读取仪器上限
			{
			
			m_strEditBtom=strCommData;
			m_strEditBtom=m_strEditBtom.Left(10);//提取前10个字符
			m_strEditBtom=m_strEditBtom.Right(4);//提取后4个字符
			m_strEditBtom=m_strEditBtom.TrimLeft("0");//删除0
			if(m_strEditTop=="")m_strEditBtom="0";			
			}
			if(m_strSComm=="zero")//标定
			{
			m_strEditReceiveMsg3=strCommData;
			m_strEditReceiveMsg3=m_strEditReceiveMsg3.Left(8);//提取前8个字符
			m_strEditReceiveMsg3=m_strEditReceiveMsg3.Right(2);//提取后2个字符
			
			if(m_strEditReceiveMsg3=="OK")AfxMessageBox("标定成功");	
			
			m_strEditReceiveMsg3="0";			
			}
			strOpen=0;
			strCommData=_T("");
			m_strSComm=_T("");
		}
		else AfxMessageBox("收到数据校验和不正确");
		m_charLRC=0;
		strOpen=0;
		strCommData=_T("");

	}
	if(strOpen>0)
		{
			strCommData=strCommData+(wchar_t)ch;
			if(strOpen>2)m_charLRC=m_charLRC+(char)ch;
			strOpen--;
			if(strlen(strCommData)==6) 
			{
				str1=strCommData.Right(2);
				strOpen=atoi((LPCTSTR)str1)+2;				
			}			
			
		}	
	
	if(str=="3A ")strOpen=100;
	if(str=="0A "){m_charLRC=0;strOpen=0;}
	//if(strOpen=="22")m_strEditAdd=Comm_Add;
	//if((str=="22 ")||(strOpen=="22"))
	//{m_strEditReceiveMsg3=m_strEditReceiveMsg3+str;strOpen="22";}

	UpdateData(FALSE);  //将接收到的字符显示在接收编辑框中
	return 0;
}
/******************************************************************************/
/* 打开串口按纽:参数为波特率、端口校验位 */
/******************************************************************************/
void CSerialPortTestDlg::OnButtonOpen() 
{
	// TODO: Add your control notification handler code here
	
	int nPort=m_ctrlComboComPort.GetCurSel()+1; //得到串口号,想想为什么要加1

	UpdateData(TRUE); //读入编辑框中的数据
	int nBorte=m_ctrlComBorte.GetCurSel();//获取波特率
	if(nBorte==0)nBorte=19200;
	if(nBorte==1)nBorte=2400;
	if(nBorte==2)nBorte=4800;
	if(nBorte==3)nBorte=9600;

	int nParty=m_ctrlComboParty.GetCurSel();
	char cParty='N';
	if(nParty==0)cParty='E';
	 else if(nParty==1)cParty='M';
	  else if(nParty==3)cParty='O';
	   else if(nParty==4)cParty='S';
	
	if(m_SerialPort.InitPort(this, nPort, nBorte,cParty,8,1,EV_RXFLAG | EV_RXCHAR,512))
	{
		m_SerialPort.StartMonitoring();
		m_bSerialPortOpened=TRUE;
	}
	else
	{
		AfxMessageBox("没有发现此串口或被占用");
		m_bSerialPortOpened=FALSE;
	}
	GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
	GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);
}
/******************************************************************************/
/* 关闭串口按纽									*/
/******************************************************************************/
void CSerialPortTestDlg::OnButtonClose() 
{
	// TODO: Add your control notification handler code here
	m_SerialPort.ClosePort();//关闭串口
    m_bSerialPortOpened=FALSE;
	GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
	GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);	
}
/******************************************************************************/
/* 发送按纽									*/
/******************************************************************************/
void CSerialPortTestDlg::OnButtonSend() //发送按钮
{
	// TODO: Add your control notification handler code here
	if(!m_bSerialPortOpened) return; //检查串口是否打开
	UpdateData(TRUE); //读入编辑框中的数据

	m_SerialPort.WriteToPort((LPCTSTR)m_strEditSendMsg);//发送数据
}
/******************************************************************************/
/* 清除按纽:功能清楚两个接收框数据									*/
/******************************************************************************/
void CSerialPortTestDlg::OnBnClickedButton1()//清除按钮
{
	// TODO: 在此添加控件通知处理程序代码
	RXD_EDIT.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT.Clear();//清除全部
	RXD_EDIT2.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT2.Clear();//清除全部
	UpdateData(TRUE); //更新
}
/******************************************************************************/
/* 读取目标温度按纽								*/
/******************************************************************************/
void CSerialPortTestDlg::OnBnClickedButton12()//读取温度
{
	// TODO: 在此添加控件通知处理程序代码
	unsigned char buf_str;
	unsigned int buf_str1;
	if(!m_bSerialPortOpened) return; //检查串口是否打开	
	m_strSComm="obj";

	UpdateData(TRUE); //读入编辑框中的数据
	
	int nBorte=atoi((LPCTSTR)m_strEditAdd);//获取地址

	buf_str=(nBorte/10%10+0x30)+(nBorte%10+0x30)+0x32+0x32+0x30+0x30;
	buf_str1=ASCII_HEX(buf_str);

	char cSenddate[11]={0x3A,nBorte/10%10+0x30,nBorte%10+0x30,0x32,0x32,0x30,0x30,
		buf_str1/256,buf_str1%256,0x0D,0x0A};
	
	m_SerialPort.WriteToPort(cSenddate,11);//发送数据
	
	RXD_EDIT.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT.Clear();//清除全部
	RXD_EDIT2.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT2.Clear();//清除全部
	UpdateData(TRUE); //更新
}
/******************************************************************************/
/* 读取环境温度按纽								*/
/******************************************************************************/
void CSerialPortTestDlg::OnBnClickedButton13()//读取环境温度
{
	// TODO: 在此添加控件通知处理程序代码
	unsigned char buf_str;
	unsigned int buf_str1;
	if(!m_bSerialPortOpened) return; //检查串口是否打开	

	m_strSComm="amb";

	UpdateData(TRUE); //读入编辑框中的数据
	
	int nBorte=atoi((LPCTSTR)m_strEditAdd);//获取地址

	buf_str=(nBorte/10%10+0x30)+(nBorte%10+0x30)+0x32+0x33+0x30+0x30;
	buf_str1=ASCII_HEX(buf_str);

	char cSenddate[11]={0x3A,nBorte/10%10+0x30,nBorte%10+0x30,0x32,0x33,0x30,0x30,
		buf_str1/256,buf_str1%256,0x0D,0x0A};
	
	m_SerialPort.WriteToPort(cSenddate,11);//发送数据
	
	RXD_EDIT.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT.Clear();//清除全部
	RXD_EDIT2.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT2.Clear();//清除全部
	UpdateData(TRUE); //更新
}
/******************************************************************************/
/* 读取发射率按纽													*/
/******************************************************************************/
void CSerialPortTestDlg::OnBnClickedButtonduqufashe()//读取发射率
{
	// TODO: 在此添加控件通知处理程序代码
	unsigned char buf_str;
	unsigned int buf_str1;
	if(!m_bSerialPortOpened) return; //检查串口是否打开	

	m_strSComm="emm";

	UpdateData(TRUE); //读入编辑框中的数据
	
	int nBorte=atoi((LPCTSTR)m_strEditAdd);//获取地址

	buf_str=(nBorte/10%10+0x30)+(nBorte%10+0x30)+0x32+0x34+0x30+0x30;
	buf_str1=ASCII_HEX(buf_str);
	
	char cSenddate[11]={0x3A,nBorte/10%10+0x30,nBorte%10+0x30,0x32,0x34,0x30,0x30,
		buf_str1/256,buf_str1%256,0x0D,0x0A};

	
	m_SerialPort.WriteToPort(cSenddate,11);//发送数据
	
	RXD_EDIT.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT.Clear();//清除全部
	RXD_EDIT2.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT2.Clear();//清除全部
	UpdateData(TRUE); //更新
}
/******************************************************************************/
/* 设定发射率按纽													*/
/******************************************************************************/
void CSerialPortTestDlg::OnBnClickedButton7()//设置发射率
{
	// TODO: 在此添加控件通知处理程序代码
	unsigned char buf_str;
	unsigned int buf_str1;
	if(!m_bSerialPortOpened) return; //检查串口是否打开
	m_strSComm="emm_G";

	UpdateData(TRUE); //读入编辑框中的数据
	
	int nBorte=atoi((LPCTSTR)m_strEditAdd);//获取地址

	int nDAslope=(int)(atof((LPCTSTR)m_strEditDAslope)*100);//获取斜率
	

	buf_str=(nBorte/10%10+0x30)+(nBorte%10+0x30)+0x32+0x39+0x30+0x33
		+(nDAslope/100%10+0x30)+(nDAslope/10%10+0x30)+(nDAslope%10+0x30);
	buf_str1=ASCII_HEX(buf_str);
	
	char cSenddate[14]={0x3A,nBorte/10%10+0x30,nBorte%10+0x30,0x32,0x39,0x30,0x33,
		nDAslope/100%10+0x30,nDAslope/10%10+0x30,nDAslope%10+0x30,
		buf_str1/256,buf_str1%256,0x0D,0x0A};
	
	m_SerialPort.WriteToPort(cSenddate,14);//发送数据

	RXD_EDIT.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT.Clear();//清除全部
	RXD_EDIT2.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT2.Clear();//清除全部
	UpdateData(TRUE); //更新
}
/******************************************************************************/
/* 修改地址按纽													*/
/******************************************************************************/
void CSerialPortTestDlg::OnBnClickedButton11()//修改地址
{
	// TODO: 在此添加控件通知处理程序代码
	unsigned char buf_str;
	unsigned int buf_str1;
	if(!m_bSerialPortOpened) return; //检查串口是否打开		

	UpdateData(TRUE); //读入编辑框中的数据

	m_strSComm="Add";
	
	int nBorte=atoi((LPCTSTR)m_strEditAdd);//获取地址
	int nBorteG=atoi((LPCTSTR)m_strEditAddG);//获取地址

	buf_str=(nBorte/10%10+0x30)+(nBorte%10+0x30)+0x33+0x30+0x30+0x32
		+(nBorteG/10%10+0x30)+(nBorteG%10+0x30);
	buf_str1=ASCII_HEX(buf_str);

	char cSenddate[13]={0x3A,nBorte/10%10+0x30,nBorte%10+0x30,0x33,0x30,0x30,0x32,
		(nBorteG/10%10+0x30),(nBorteG%10+0x30),buf_str1/256,buf_str1%256,0x0D,0x0A};
	
	m_SerialPort.WriteToPort(cSenddate,13);//发送数据
	
	RXD_EDIT.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT.Clear();//清除全部
	RXD_EDIT2.SetSel(0,-1);//选择编辑框全部正文
	RXD_EDIT2.Clear();//清除全部
	UpdateData(TRUE); //更新
}
/******************************************************************************/
/* 打开激光按纽													*/
/******************************************************************************/
void CSerialPortTestDlg::OnBnClickedButton14()//打开激光
{
	unsigned char buf_str;
	unsigned int buf_str1;
	if(!m_bSerialPortOpened) return; //检查串口是否打开	

	UpdateData(TRUE); //读入编辑框中的数据
	m_strSComm="Laser_Open";

⌨️ 快捷键说明

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