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