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

📄 ncdlg.cpp

📁 自己编的把数控代码用RS232口由计算机传输到数控机床的程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	    m_set=dlg.m_bit+","+m_jiaoyancode+","+dlg.m_tingzhi+","+dlg.m_shuju;
        m_ctrlComm1.SetSettings(m_set); //波特率9600,无校验,8个数据位,1个停止位 
        if(dlg.m_handshake=="NONE")
		{
		    m_ctrlComm1.SetHandshaking(0);//无握手协议
		}
	    if(dlg.m_handshake=="XON/XOFF")
		{
		    m_ctrlComm1.SetHandshaking(1);//XON/XOFF握手协议
		}
	    if(dlg.m_handshake=="RTS/CTS")
		{
		    m_ctrlComm1.SetHandshaking(2);//RTS/CTS握手协议
		}
	    if(dlg.m_handshake=="BOTH")
		{
		    m_ctrlComm1.SetHandshaking(3);//BOTH握手协议
		}
	    m_ctrlComm1.SetInputMode(0); //1:表示以二进制方式检取数据
        m_ctrlComm1.SetRThreshold(1); 
        //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
        m_ctrlComm1.SetInputLen(0); //设置当前接收区数据长度为0
        m_ctrlComm1.GetInput();//先预读缓冲区以清除残留数据

		CFileDialog Filedlg(true);
		Filedlg.m_ofn.lpstrTitle="选择要传输的NC代码";
		if(Filedlg.DoModal()==IDOK)
		{
            m_fileName1=Filedlg.GetPathName();
//			GetDlgItem(IDC_COM1)->EnableWindow(false);
//			GetDlgItem(IDC_ACCEPT1)->EnableWindow(false);
			pThreadSendFile1=::AfxBeginThread(_SendFileThread1,this);
			
//			GetDlgItem(IDC_COM1)->EnableWindow(true);
//			GetDlgItem(IDC_ACCEPT1)->EnableWindow(true);

		}
	
	}
//    UpdateData(FALSE);//编辑框赋值

    
//		m_ctrlComm1.SetPortOpen(FALSE);
	
}
//com2发送
void CNCDlg::OnCom2Send() 
{
//	SetDlgItemText(IDC_EDIT2,"");
	if(m_ctrlComm2.GetPortOpen())
		m_ctrlComm2.SetPortOpen(FALSE);
    m_ctrlComm2.SetCommPort(2);
    if( !m_ctrlComm2.GetPortOpen())
    m_ctrlComm2.SetPortOpen(TRUE);//打开串口
    else
    AfxMessageBox("cannot open serial port");
	HTREEITEM  m_hTreeItem = m_tree.GetSelectedItem();
    CString s1 = m_tree.GetItemText(m_hTreeItem);


	SetDlgItemText(IDC_STATICCOM2,"COM2-"+s1); 
	SetDlgItemText(IDC_STATICCOM22,"COM2-"+s1);
	
	CString m_jiaoyancode;
	CString m_set;
    CCom2Set dlg;
	if(dlg.DoModal()==IDOK)
	{

	    if(dlg.m_jiaoyan=="缺省")
		    m_jiaoyancode="n";
	    if(dlg.m_jiaoyan=="偶")
		    m_jiaoyancode="e";
	    if(dlg.m_jiaoyan=="奇")
		    m_jiaoyancode="o";

	    m_set=dlg.m_bit+","+m_jiaoyancode+","+dlg.m_tingzhi+","+dlg.m_shuju;
        m_ctrlComm1.SetSettings(m_set); //波特率9600,无校验,8个数据位,1个停止位 
        if(dlg.m_handshake=="NONE")
		{
		    m_ctrlComm2.SetHandshaking(0);//无握手协议
		}
	    if(dlg.m_handshake=="XON/XOFF")
		{
		    m_ctrlComm2.SetHandshaking(1);//XON/XOFF握手协议
		}
	    if(dlg.m_handshake=="RTS/CTS")
		{
		    m_ctrlComm2.SetHandshaking(2);//RTS/CTS握手协议
		}
	    if(dlg.m_handshake=="BOTH")
		{
		    m_ctrlComm2.SetHandshaking(3);//BOTH握手协议
		}
	    m_ctrlComm2.SetInputMode(0); //1:表示以二进制方式检取数据
        m_ctrlComm2.SetRThreshold(1); 
        //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
        m_ctrlComm2.SetInputLen(0); //设置当前接收区数据长度为0
        m_ctrlComm2.GetInput();//先预读缓冲区以清除残留数据

		CFileDialog Filedlg(true);
		Filedlg.m_ofn.lpstrTitle="选择要传输的NC代码";
		if(Filedlg.DoModal()==IDOK)
		{
            m_fileName2=Filedlg.GetPathName();
			pThreadSendFile2=::AfxBeginThread(_SendFileThread2,this);


		}
		
	}
//	UpdateData(FALSE);//编辑框赋值
    	
}



void CNCDlg::OnComSend() 
{
	// TODO: Add your command handler code here
	HTREEITEM  m_hTreeItem = m_tree.GetSelectedItem();
    CString str = m_tree.GetItemText(m_hTreeItem);
	CString com;

	if(m_pSet.IsOpen())
	m_pSet.Close();
	m_pSet.Open();
    m_pSet.m_strFilter="name='"+str+"'";

	m_pSet.Requery();

	com=m_pSet.m_com;


	if(com=="COM1")
	{
		CNCDlg::OnCom1Send();
	}
	else if(com=="COM2")
	{
		CNCDlg::OnCom2Send();

	}
	
}

//com1接受函数
void CNCDlg::OnAcceptCom1() 
{
	    VARIANT m_input;
        if(m_ctrlComm1.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
		{
		   m_input=m_ctrlComm1.GetInput();
		   m_strEdit1+=(char*)(_bstr_t)m_input; 
		}

        UpdateData(FALSE); //更新编辑框内容

}
//com2接受函数
void CNCDlg::OnAcceptCom2() 
{
	    VARIANT m_input;
        if(m_ctrlComm2.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
		{

		   m_input=m_ctrlComm2.GetInput();
		   m_strEdit2+=(char*)(_bstr_t)m_input; 
		}

        UpdateData(FALSE); //更新编辑框内容
}
void CNCDlg::OnComReceive() 
{
	// TODO: Add your command handler code here
	HTREEITEM  m_hTreeItem = m_tree.GetSelectedItem();
    CString str = m_tree.GetItemText(m_hTreeItem);
	CString com;

	if(m_pSet.IsOpen())
	m_pSet.Close();
	m_pSet.Open();
    m_pSet.m_strFilter="name='"+str+"'";

	m_pSet.Requery();

	com=m_pSet.m_com;

	if(com=="COM1")
	{
	  m=0;
      if(m_ctrlComm1.GetPortOpen())
	    m_ctrlComm1.SetPortOpen(false);

      m_ctrlComm1.SetCommPort(1);
      if( !m_ctrlComm1.GetPortOpen())
        m_ctrlComm1.SetPortOpen(TRUE);//打开串口
      else
      AfxMessageBox("不能打开!");
	  HTREEITEM  m_hTreeItem = m_tree.GetSelectedItem();
      CString s1 = m_tree.GetItemText(m_hTreeItem);
	  SetDlgItemText(IDC_STATICCOM1,s1); 
	  SetDlgItemText(IDC_STATICCOM11,s1);

	
	  CString m_jiaoyancode;
	  CString m_set;
      CCom1Set dlg;
	  if(dlg.DoModal()==IDOK)
	  {

	    if(dlg.m_jiaoyan=="缺省")
		    m_jiaoyancode="n";
	    if(dlg.m_jiaoyan=="偶")
		    m_jiaoyancode="e";
	    if(dlg.m_jiaoyan=="奇")
		    m_jiaoyancode="o";

	    m_set=dlg.m_bit+","+m_jiaoyancode+","+dlg.m_tingzhi+","+dlg.m_shuju;
        m_ctrlComm1.SetSettings(m_set); //波特率9600,无校验,8个数据位,1个停止位 
        if(dlg.m_handshake=="NONE")
		{
		    m_ctrlComm1.SetHandshaking(0);//无握手协议
		}
	    if(dlg.m_handshake=="XON/XOFF")
		{
		    m_ctrlComm1.SetHandshaking(1);//XON/XOFF握手协议
		}
	    if(dlg.m_handshake=="RTS/CTS")
		{
		    m_ctrlComm1.SetHandshaking(2);//RTS/CTS握手协议
		}
	    if(dlg.m_handshake=="BOTH")
		{
		    m_ctrlComm1.SetHandshaking(3);//BOTH握手协议
		}
	    m_ctrlComm1.SetInputMode(0); //1:表示以二进制方式检取数据
        m_ctrlComm1.SetRThreshold(1); 
        //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
        m_ctrlComm1.SetInputLen(0); //设置当前接收区数据长度为0
        m_ctrlComm1.GetInput();//先预读缓冲区以清除残留数据

	    CNCDlg::OnAcceptCom1();
//        m_ctrlComm1.SetPortOpen(false);

	  }
	}
	else if(com=="COM2")
	{
	  n=0;
	  if(m_ctrlComm2.GetPortOpen())
		m_ctrlComm2.SetPortOpen(FALSE);
      m_ctrlComm2.SetCommPort(2);
      if( !m_ctrlComm2.GetPortOpen())
      m_ctrlComm2.SetPortOpen(TRUE);//打开串口
      else
      AfxMessageBox("cannot open serial port");
	  HTREEITEM  m_hTreeItem = m_tree.GetSelectedItem();
      CString s1 = m_tree.GetItemText(m_hTreeItem);
	  SetDlgItemText(IDC_STATICCOM2,s1); 
	  SetDlgItemText(IDC_STATICCOM22,s1);
	 
	  CString m_jiaoyancode;
      CString m_set;
      CCom2Set dlg;
	  if(dlg.DoModal()==IDOK)
	  {

	    if(dlg.m_jiaoyan=="缺省")
		    m_jiaoyancode="n";
	    if(dlg.m_jiaoyan=="偶")
		    m_jiaoyancode="e";
	    if(dlg.m_jiaoyan=="奇")
		    m_jiaoyancode="o";

	    m_set=dlg.m_bit+","+m_jiaoyancode+","+dlg.m_tingzhi+","+dlg.m_shuju;
        m_ctrlComm1.SetSettings(m_set); //波特率9600,无校验,8个数据位,1个停止位 
        if(dlg.m_handshake=="NONE")
		{
		    m_ctrlComm2.SetHandshaking(0);//无握手协议
		}
	    if(dlg.m_handshake=="XON/XOFF")
		{
		    m_ctrlComm2.SetHandshaking(1);//XON/XOFF握手协议
		}
	    if(dlg.m_handshake=="RTS/CTS")
		{
		    m_ctrlComm2.SetHandshaking(2);//RTS/CTS握手协议
		}
	    if(dlg.m_handshake=="BOTH")
		{
		    m_ctrlComm2.SetHandshaking(3);//BOTH握手协议
		}
	    m_ctrlComm2.SetInputMode(0); //1:表示以二进制方式检取数据
        m_ctrlComm2.SetRThreshold(1); 
        //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
        m_ctrlComm2.SetInputLen(0); //设置当前接收区数据长度为0
        m_ctrlComm2.GetInput();//先预读缓冲区以清除残留数据


	    CNCDlg::OnAcceptCom2();
//        m_ctrlComm2.SetPortOpen(false);
	  }
      
	}
}
void CNCDlg::OnMachineAdd() 
{
	// TODO: Add your command handler code here
	CMachineAdd dlg;
	if(dlg.DoModal()==IDOK)
	{
		if(m_pSet.IsOpen())
		m_pSet.Close();
	    m_pSet.Open();
	    m_pSet.AddNew();
		m_pSet.m_name=dlg.m_name;
        m_pSet.m_com=dlg.m_com;
		m_pSet.m_description=dlg.m_description;
		m_pSet.Update();
	}

	m_tree.DeleteAllItems();
	DWORD dwStyle = GetWindowLong(m_tree.m_hWnd,GWL_STYLE);
	dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
	SetWindowLong(m_tree.m_hWnd,GWL_STYLE,dwStyle);
    m_hRoot=m_tree.InsertItem( "数控机床管理器");
	if(m_pSet.IsOpen())
		m_pSet.Close();
	m_pSet.Open();
	m_pSet.MoveFirst();
	int j=m_pSet.GetRecordCount();
/*	for(int i=0;i<j;i++)
	{
		CString mach;
	    mach=m_pSet.m_name;
	    m_tree.InsertItem(mach, 0, 0, m_hRoot);
        m_pSet.MoveNext();
	}*/
	CString mach;

	while(!m_pSet.IsEOF())
		{
		    mach=m_pSet.m_name;
			m_tree.InsertItem(mach, 0, 0, m_hRoot);
			m_pSet.MoveNext();
		}
	m_tree.Expand(m_hRoot,TVE_EXPAND);
	
}
void CNCDlg::OnMachineDel() 
{
	// TODO: Add your command handler code here
		HTREEITEM hItem =m_tree.GetSelectedItem();
		CString name=m_tree.GetItemText(hItem);
		if(m_pSet.IsOpen())
		m_pSet.Close();
	    m_pSet.Open();
		m_pSet.MoveFirst();
	
		while(!m_pSet.IsEOF())
		{
			if(m_pSet.m_name==name)
		    m_pSet.Delete();
			m_pSet.MoveNext();
		}
		m_tree.DeleteAllItems();
	DWORD dwStyle = GetWindowLong(m_tree.m_hWnd,GWL_STYLE);
	dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
	SetWindowLong(m_tree.m_hWnd,GWL_STYLE,dwStyle);
    m_hRoot=m_tree.InsertItem( "数控机床管理器");
	if(m_pSet.IsOpen())
		m_pSet.Close();
	m_pSet.Open();
	m_pSet.MoveFirst();
	int j=m_pSet.GetRecordCount();
	CString mach;

	while(!m_pSet.IsEOF())
		{
		    mach=m_pSet.m_name;
			m_tree.InsertItem(mach, 0, 0, m_hRoot);
			m_pSet.MoveNext();
		}
	m_tree.Expand(m_hRoot,TVE_EXPAND);


	
}
void CNCDlg::OnMachineEdit() 
{
	// TODO: Add your command handler code here
	HTREEITEM hItem =m_tree.GetSelectedItem();
	CString str=m_tree.GetItemText(hItem);
	if(m_pSet.IsOpen())
		m_pSet.Close();
	    m_pSet.Open();
		m_pSet.MoveFirst();
	
    m_pSet.m_strFilter="name='"+str+"'";

	m_pSet.Requery();
	m_name =m_pSet.m_name;
	m_com =m_pSet.m_com;
	m_description = m_pSet.m_description;
	m_pSet.Close();
//	AfxMessageBox(m_name+m_com+m_description);
	CMachineEdit dlg;
	if(dlg.DoModal()==IDOK)
	{
		if(m_pSet.IsOpen())
		m_pSet.Close();
	    m_pSet.Open();
	    m_pSet.Edit();
//		m_pSet.m_name=dlg.m_name;
        m_pSet.m_com=dlg.m_com;
		m_pSet.m_description=dlg.m_description;
		m_pSet.Update();
	}


}

void CNCDlg::OnNcsave1() 
{
	// TODO: Add your command handler code here
	UpdateData(true); //更新编辑框内容
	CStdioFile sf;
    sf.Open( "nc1.txt",CFile::modeWrite | CFile::modeCreate );
//    sf.SeekToBegin();
//    int i = 0;
//    CString str("xxx");
    sf.WriteString(m_strEdit1);  
    sf.Close();

}

void CNCDlg::OnNcsave2() 
{
	// TODO: Add your command handler code here
		UpdateData(true); //更新编辑框内容
	CStdioFile sf;
    sf.Open( "nc2.txt",CFile::modeWrite | CFile::modeCreate );
//    sf.SeekToBegin();
//    int i = 0;
//    CString str("xxx");
    sf.WriteString(m_strEdit1);  
    sf.Close();
	
}

⌨️ 快捷键说明

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