www.pudn.com > DNC.rar > NCDlg.cpp


// NCDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "NC.h" 
#include "NCDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
#include "MySocket.h" 
 
#include "Com1Set.h" 
#include "Com2Set.h" 
#include "MachineAdd.h" 
#include "MachineEdit.h" 
#include  
#include  
///////////////////////////////////////////////////////////////////////////// 
// CAboutDlg dialog used for App About 
 
class CAboutDlg : public CDialog 
{ 
public: 
	CAboutDlg(); 
 
// Dialog Data 
	//{{AFX_DATA(CAboutDlg) 
	enum { IDD = IDD_ABOUTBOX }; 
	//}}AFX_DATA 
 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CAboutDlg) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
	//{{AFX_MSG(CAboutDlg) 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 
{ 
	//{{AFX_DATA_INIT(CAboutDlg) 
	//}}AFX_DATA_INIT 
} 
 
void CAboutDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CAboutDlg) 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) 
	//{{AFX_MSG_MAP(CAboutDlg) 
		// No message handlers 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CNCDlg dialog 
 
CNCDlg::CNCDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CNCDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CNCDlg) 
	m_strEdit1 = _T(""); 
	m_strEdit2 = _T(""); 
	m=1; 
	n=1; 
	m_name = _T(""); 
	m_com = _T(""); 
	m_description = _T(""); 
	//}}AFX_DATA_INIT 
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
} 
 
void CNCDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CNCDlg) 
	DDX_Control(pDX, IDC_PROGRESS2, m_progress2); 
	DDX_Control(pDX, IDC_PROGRESS1, m_progress1); 
	DDX_Control(pDX, IDC_TREE, m_tree); 
	DDX_Control(pDX, IDC_MSCOM1, m_ctrlComm1); 
	DDX_Control(pDX, IDC_MSCOM2, m_ctrlComm2); 
	DDX_Text(pDX, IDC_EDIT1, m_strEdit1); 
	DDX_Text(pDX, IDC_EDIT2, m_strEdit2); 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CNCDlg, CDialog) 
	//{{AFX_MSG_MAP(CNCDlg) 
	ON_WM_SYSCOMMAND() 
	ON_WM_PAINT() 
	ON_WM_QUERYDRAGICON() 
	ON_COMMAND(ID_NCEDIT, OnNcedit) 
	ON_COMMAND(ID_TOINTERNET, OnTointernet) 
	ON_COMMAND(IDD_ABOUTBOX, OnAboutbox) 
	ON_NOTIFY(NM_RCLICK, IDC_TREE, OnRclickTree) 
	ON_COMMAND(ID_MACHINE_ADD, OnMachineAdd) 
	ON_COMMAND(ID_MACHINE_DEL, OnMachineDel) 
	ON_COMMAND(ID_COM_RECEIVE, OnComReceive) 
	ON_COMMAND(ID_COM_SEND, OnComSend) 
	ON_COMMAND(ID_MACHINE_EDIT, OnMachineEdit) 
	ON_COMMAND(ID_NCSAVE1, OnNcsave1) 
	ON_COMMAND(ID_NCSAVE2, OnNcsave2) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CNCDlg message handlers 
 
BOOL CNCDlg::OnInitDialog() 
{ 
	CDialog::OnInitDialog(); 
 
	// Add "About..." menu item to system menu. 
 
	// IDM_ABOUTBOX must be in the system command range. 
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 
	ASSERT(IDM_ABOUTBOX < 0xF000); 
 
	CMenu* pSysMenu = GetSystemMenu(FALSE); 
	if (pSysMenu != NULL) 
	{ 
		CString strAboutMenu; 
		strAboutMenu.LoadString(IDS_ABOUTBOX); 
		if (!strAboutMenu.IsEmpty()) 
		{ 
			pSysMenu->AppendMenu(MF_SEPARATOR); 
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 
		} 
	} 
 
	// Set the icon for this dialog.  The framework does this automatically 
	//  when the application's main window is not a dialog 
	SetIcon(m_hIcon, TRUE);			// Set big icon 
	SetIcon(m_hIcon, FALSE);		// Set small icon 
	 
	// TODO: Add extra initialization here 
 
 
	/*HICON hIcon = NULL; 
	hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),  
		MAKEINTRESOURCE(IDI_KEBIAO), IMAGE_ICON, 24, 24, 0); 
	m_iImageList.Add(hIcon); 
	m_tree.SetImageList ( &m_iImageList,TVSIL_NORMAL );*/ 
	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();//AfxMessageBox((CString)j); 
/*	for(int i=0;iCreate(IDD_DIALOG1,NULL); 
    dlg->ShowWindow(SW_SHOW); 
	 
} 
 
void CNCDlg::OnAboutbox()  
{ 
	// TODO: Add your command handler code here 
	CAboutDlg dlg; 
	dlg.DoModal(); 
	 
} 
 
BEGIN_EVENTSINK_MAP(CNCDlg, CDialog) 
    //{{AFX_EVENTSINK_MAP(CNCDlg) 
	ON_EVENT(CNCDlg, IDC_MSCOM1, 1 /* OnComm */, OnAcceptCom1, VTS_NONE) 
	ON_EVENT(CNCDlg, IDC_MSCOM2, 1 /* OnComm */, OnAcceptCom2, VTS_NONE) 
	//}}AFX_EVENTSINK_MAP 
END_EVENTSINK_MAP() 
 
//添加pop菜单 
 
void CNCDlg::OnRclickTree(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
 
	CMenu* menu; 
    CMenu* pPopup; 
    menu = new CMenu(); 
     
    menu->LoadMenu(IDR_MENU1); 
     
    pPopup=menu->GetSubMenu(0); 
    CPoint Point; 
    GetCursorPos(&Point); 
    pPopup->TrackPopupMenu(TPM_LEFTALIGN,Point.x,Point.y, 
    AfxGetMainWnd(),NULL); 
  
    delete menu; 
	*pResult = 0; 
} 
//线程 
CWinThread	*pThreadSendFile1;	//发送文件线程-->_SendFileThread 
CWinThread	*pThreadSendFile2;	//发送文件线程-->_SendFileThread 
 
UINT _SendFileThread1(LPVOID lparam) 
{ 
    CNCDlg *pDlg=(CNCDlg *)lparam; 
     
	    CFile myFile; 
		myFile.Open(pDlg->m_fileName1, CFile::modeRead ); 
		 
        int lent=myFile.GetLength(); 
        char *pBuft = new char[lent+1]; 
        memset(pBuft,'\0',lent+1); 
		memset(pBuft,0,lent); 
        myFile.Read(pBuft,lent);  
        myFile.Close(); 
		CString strt1 = pBuft; 
		pDlg->SetDlgItemText(IDC_EDIT1,strt1); 
//		pDlg->m_strEdit1=strt1; 
 
        CByteArray array; 
		int n,m; 
   
          n=lent/256; 
		  m=lent%256; 
 
		  if(n!=0) 
		  { 
			  for(int j=0;jm_progress1.SetPos((j*256+i)*100/lent); 
				} 
			    pDlg->m_ctrlComm1.SetOutput(COleVariant(array));//发送数据 
			  } 
	          array.RemoveAll(); 
		      array.SetSize(m); 
		      for(int k=0;km_progress1.SetPos((n*256+k)*100/lent); 
 
			  } 
			     pDlg->m_ctrlComm1.SetOutput(COleVariant(array));//发送数据 
		  } 
		  else 
		  { 
			  array.RemoveAll(); 
		      array.SetSize(lent); 
			  for(int l=0;lm_progress1.SetPos(l*100/lent); 
				} 
			    pDlg->m_ctrlComm1.SetOutput(COleVariant(array));//发送数据 
 
		  }  
        delete pBuft; 
        return 0; 
 
} 
UINT _SendFileThread2(LPVOID lparam) 
{ 
    CNCDlg *pDlg=(CNCDlg *)lparam; 
     
	    CFile myFile; 
		myFile.Open(pDlg->m_fileName2, CFile::modeRead ); 
		 
        int lent=myFile.GetLength(); 
        char *pBuft = new char[lent+1]; 
        memset(pBuft,'\0',lent+1); 
		memset(pBuft,0,lent); 
        myFile.Read(pBuft,lent);  
        myFile.Close(); 
        CString strt2 = pBuft; 
//		pDlg->SetDlgItemText(IDC_EDIT2,""); 
		pDlg->SetDlgItemText(IDC_EDIT2,strt2); 
//		pDlg->m_strEdit2=strt2; 
		CByteArray array; 
		int n,m; 
   
          n=lent/256; 
		  m=lent%256; 
 
		  if(n!=0) 
		  { 
			  for(int j=0;jm_progress2.SetPos((j*256+i)*100/lent); 
				} 
			    pDlg->m_ctrlComm2.SetOutput(COleVariant(array));//发送数据 
			  } 
	          array.RemoveAll(); 
		      array.SetSize(256); 
		      for(int k=0;km_progress2.SetPos((n*256+k)*100/lent); 
 
			  } 
			     pDlg->m_ctrlComm2.SetOutput(COleVariant(array));//发送数据 
		  } 
		  else 
		  { 
			  array.RemoveAll(); 
		      array.SetSize(lent); 
			  for(int l=0;lm_progress2.SetPos(l*100/lent); 
				} 
			    pDlg->m_ctrlComm2.SetOutput(COleVariant(array));//发送数据 
 
		  }  
        delete pBuft; 
        return 0; 
 
} 
//com1发送 
void CNCDlg::OnCom1Send()  
{ 
//	SetDlgItemText(IDC_EDIT1,""); 
	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,"COM1-"+s1);  
	SetDlgItemText(IDC_STATICCOM11,"COM1-"+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();//先预读缓冲区以清除残留数据 
 
		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