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