可以正常运行CNC,显示运行时间,以及无限循环运行。

This commit is contained in:
TAO Cheng
2013-07-12 16:40:04 +08:00
parent 2e237bf90f
commit 94f85752ce
7 changed files with 224 additions and 34 deletions
@@ -1929,3 +1929,69 @@ Init:Open device succeed .
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
@@ -773,16 +773,20 @@ BEGIN
PUSHBUTTON "X",IDC_BUTTON_PROGRAM_SET_ZERO_X,427,41,27,21
PUSHBUTTON "Y",IDC_BUTTON_PROGRAM_SET_ZERO_Y,427,64,27,21
PUSHBUTTON "Z",IDC_BUTTON_PROGRAM_SET_ZERO_Z,427,87,27,21
GROUPBOX "CNC Program",IDC_STATIC,15,14,140,130
PUSHBUTTON "Add CNC Point",IDC_BUTTON_SO7_PROGRAM_ADD_CNC_PROGRAM,90,29,54,28
PUSHBUTTON "Run",IDC_BUTTON_SO7_PROGRAM_RUN_CNC,87,65,60,32
GROUPBOX "CNC Program",IDC_STATIC,15,11,140,130
PUSHBUTTON "Add CNC Point",IDC_BUTTON_SO7_PROGRAM_ADD_CNC_PROGRAM,22,107,53,21
PUSHBUTTON "Run",IDC_BUTTON_SO7_PROGRAM_RUN_CNC,88,89,60,32
EDITTEXT IDC_EDIT_SO7_PROGRAM_MSG_OUTPUT,17,276,554,77,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
EDITTEXT IDC_EDIT_READOUT_X,459,42,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
EDITTEXT IDC_EDIT_READOUT_Z,459,85,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
EDITTEXT IDC_EDIT_READOUT_Y,459,63,113,22,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER
PUSHBUTTON "New",IDC_BUTTON_SO7_PROGRAM_NEW_CNC,25,29,54,28
PUSHBUTTON "Save as...",IDC_BUTTON_SO7_PROGRAM_SAVE_CNC_FILE,25,105,54,28
PUSHBUTTON "Open",IDC_BUTTON_SO7_PROGRAM_OPEN_CNC,25,67,54,28
PUSHBUTTON "New",IDC_BUTTON_SO7_PROGRAM_NEW_CNC,22,29,53,21
PUSHBUTTON "Save as...",IDC_BUTTON_SO7_PROGRAM_SAVE_CNC_FILE,22,81,53,21
PUSHBUTTON "Open",IDC_BUTTON_SO7_PROGRAM_OPEN_CNC,22,55,53,21
EDITTEXT IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES,97,59,40,14,ES_AUTOHSCROLL
CONTROL "Infinite",IDC_CHECK_SO7_RUNING_PROGRAM_RUNING_INFINITE,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,42,39,10
GROUPBOX "Times",IDC_STATIC,91,25,54,56
END
@@ -21,10 +21,11 @@ COLORREF CMyListCtrl::OnGetCellBkColor(int nRow, int nColum)
if (m_bMarkSortedColumn && nColum == m_iSortedColumn)
{
return(nRow % 2) == 0 ? RGB(233, 221, 229) : RGB(176, 218, 234);
return(nRow % 2) == 0 ? RGB(170, 230, 255) : RGB(215, 243, 255) ;
//return(nRow % 2) == 0 ? RGB(233, 221, 229) : RGB(176, 218, 234);
}
return(nRow % 2) == 0 ? RGB(255, 255, 255) : RGB(211, 223, 238) ;
return(nRow % 2) == 0 ? RGB(170, 230, 255) : RGB(215, 243, 255) ;
}
//=======================================================
HFONT CMyListCtrl::OnGetCellFont(int nRow, int nColum, DWORD /*dwData* = 0*/)
@@ -36,7 +37,8 @@ HFONT CMyListCtrl::OnGetCellFont(int nRow, int nColum, DWORD /*dwData* = 0*/)
if (nColum == 2 &&(nRow >= 4 && nRow <= 8))
{
return afxGlobalData.fontDefaultGUIBold;
return NULL;
//return afxGlobalData.fontDefaultGUIBold;
}
return NULL;
@@ -31,8 +31,17 @@ IMPLEMENT_DYNAMIC(CSo7_Util_Program, CDialog)
CSo7_Util_Program::CSo7_Util_Program(CWnd* pParent /*=NULL*/)
: CDialog(CSo7_Util_Program::IDD, pParent)
{
{
m_RptCol=1;
m_RptRow=0;
m_bSetZeroX=FALSE;
m_bSetZeroY=FALSE;
m_bSetZeroZ=FALSE;
m_IsRuningCNC=FALSE;
m_StartTime=0;
m_FinishTime=0;
m_duration=0.0;
m_RuningCNCTimes=1;
}
CSo7_Util_Program::~CSo7_Util_Program()
@@ -80,6 +89,8 @@ BEGIN_MESSAGE_MAP(CSo7_Util_Program, CDialog)
ON_EN_KILLFOCUS(IDC_EDIT_SO7_PROGRAM_Y_MOVETO, &CSo7_Util_Program::OnEnKillfocusEditSo7ProgramYMoveto)
ON_BN_CLICKED(IDC_RADIO_SO7_PROGRAM_MOVE, &CSo7_Util_Program::OnBnClickedRadioSo7ProgramMove)
ON_BN_CLICKED(IIDC_RADIO_SO7_PROGRAM_MOVE_TO, &CSo7_Util_Program::OnBnClickedRadioSo7ProgramMoveTo)
ON_EN_KILLFOCUS(IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES, &CSo7_Util_Program::OnEnKillfocusEditSo7ProgeamCncRuingTimes)
ON_BN_CLICKED(IDC_CHECK_SO7_RUNING_PROGRAM_RUNING_INFINITE, &CSo7_Util_Program::OnBnClickedCheckSo7RuningProgramRuningInfinite)
END_MESSAGE_MAP()
@@ -89,11 +100,6 @@ BOOL CSo7_Util_Program::OnInitDialog()
{
CDialog::OnInitDialog();
m_bSetZeroX=FALSE;
m_bSetZeroY=FALSE;
m_bSetZeroZ=FALSE;
m_IsRuningCNC=FALSE;
if (!m_pSO7_Proto->so7_motion_is_homed())
{
AfxMessageBox(_T("Homing now!"));
@@ -116,6 +122,7 @@ BOOL CSo7_Util_Program::OnInitDialog()
m_pSO7_Proto->g_machine.y._Move_Speed_Gear=3;
m_pSO7_Proto->g_machine.z._Move_Speed_Gear=3;
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES))->SetWindowTextW(_T("1"));
((CButton *)GetDlgItem(IDC_RADIO_SO7_PROGRAM_MOVE))->SetCheck(1);
((CButton *)GetDlgItem(IIDC_RADIO_SO7_PROGRAM_MOVE_TO))->SetCheck(0);
(GetDlgItem(IDC_EDIT_SO7_PROGRAM_X_MOVETO))->SetWindowTextW(_T("10"));
@@ -130,14 +137,23 @@ BOOL CSo7_Util_Program::OnInitDialog()
m_BTNFont.CreatePointFont(300,_T("Arial")) ;
((CMFCButton*)(GetDlgItem(IDC_MFCBUTTON_SPEEDGEAR)))->SetFont(&m_BTNFont);
((CMFCButton*)(GetDlgItem(IDC_MFCBUTTON_SPEEDGEAR)))->SetTextColor(RGB(128,255,255));
((CMFCButton*)(GetDlgItem(IDC_MFCBUTTON_SPEEDGEAR)))->SetTextColor(RGB(0,170,200));//RGB(0,128,64)
{
m_RptListCtrl.InsertColumn(0, _T("NO."), LVCFMT_LEFT, 60);
m_RptListCtrl.InsertColumn(1, _T("Time"), LVCFMT_LEFT, 60+120);
m_RptListCtrl.InsertColumn(2, _T("PosX"), LVCFMT_LEFT, 60+120*2);
m_RptListCtrl.InsertColumn(3, _T("PosY"), LVCFMT_LEFT, 60+120*3);
m_RptListCtrl.InsertColumn(4, _T("PosZ"), LVCFMT_LEFT, 60+120*4);
int ColWidth(30);
m_RptListCtrl.InsertColumn(0, _T("NO."), LVCFMT_LEFT, ColWidth);
ColWidth+=40;
m_RptListCtrl.InsertColumn(1, _T("Start Time"), LVCFMT_LEFT, ColWidth);
ColWidth+=30;
m_RptListCtrl.InsertColumn(2, _T("End Time"), LVCFMT_LEFT, ColWidth);
ColWidth+=50;
m_RptListCtrl.InsertColumn(3, _T("Elapsed Time(s)"), LVCFMT_LEFT,ColWidth);
ColWidth+=30;
m_RptListCtrl.InsertColumn(4, _T(" "), LVCFMT_LEFT,ColWidth);
ColWidth+=30;
m_RptListCtrl.InsertColumn(5, _T(" "), LVCFMT_LEFT,ColWidth);
ColWidth+=145;
m_RptListCtrl.InsertColumn(6, _T(" "), LVCFMT_LEFT,ColWidth);
for (int i = 1; i < 1000; i++)
{
@@ -168,6 +184,7 @@ BOOL CSo7_Util_Program::OnInitDialog()
void CSo7_Util_Program::OnBnClickedCancel()
{
KillTimer(1);
m_IsRuningCNC=FALSE;
m_Thread_State = THREAD_EXIT;
SetEvent(m_hTriggerEvent);
@@ -192,6 +209,7 @@ void CSo7_Util_Program::OnBnClickedCancel()
delete m_pSo7_CNC_Program;
m_pSo7_CNC_Program=nullptr;
}
CDialog::OnCancel();
}
//===================================================
@@ -347,14 +365,46 @@ void CSo7_Util_Program::OnBnClickedButtonSo7ProgramAddCncProgram()
//===================================================
void CSo7_Util_Program::OnBnClickedButtonSo7ProgramNewCnc()
{
m_pSo7_CNC_Program->RemoveAll();
}
//===================================================
void CSo7_Util_Program::OnBnClickedButtonSo7ProgramOpenCnc()
{
AfxMessageBox(_T("Not supported!"));
}
//===================================================
void CSo7_Util_Program::OnBnClickedButtonSo7ProgramSaveCncFile()
{
AfxMessageBox(_T("Not supported!"));
}
//===================================================
void CSo7_Util_Program::OnEnKillfocusEditSo7ProgeamCncRuingTimes()
{
UpdateData(TRUE);
USES_CONVERSION;
CString csTmp;
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES))->GetWindowText(csTmp);
const char* cTmp=T2A(csTmp);
m_RuningCNCTimes =static_cast<unsigned int>( atoi(cTmp));
}
//===================================================
void CSo7_Util_Program::OnBnClickedCheckSo7RuningProgramRuningInfinite()
{
if (((CButton*)(GetDlgItem(IDC_CHECK_SO7_RUNING_PROGRAM_RUNING_INFINITE)))->GetCheck())
{
m_RuningCNCTimes=MAXDWORD;
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES))->EnableWindow(FALSE);
}
else
{
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES))->EnableWindow(TRUE);
UpdateData(TRUE);
USES_CONVERSION;
CString csTmp;
(GetDlgItem(IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES))->GetWindowText(csTmp);
const char* cTmp=T2A(csTmp);
m_RuningCNCTimes =static_cast<unsigned int>( atoi(cTmp));
}
}
//===================================================
void CSo7_Util_Program::OnBnClickedButtonSo7ProgramRunCnc()
@@ -362,33 +412,88 @@ void CSo7_Util_Program::OnBnClickedButtonSo7ProgramRunCnc()
if (m_IsRuningCNC)
{
m_IsRuningCNC=FALSE;
((CButton*)(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_RUN_CNC)))->SetWindowTextW(_T("Run"));
UpdateCNCCtrl(m_IsRuningCNC);
}
else
{
Sleep(50);
m_IsRuningCNC=TRUE;
((CButton*)(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_RUN_CNC)))->SetWindowTextW(_T("Stop"));
UpdateCNCCtrl(m_IsRuningCNC);
m_RuningCNCIndex=0;
m_Thread_State=THREAD_RUNNING_STATE;
SetEvent(m_hTriggerEvent);
}
}
//===================================================
void CSo7_Util_Program::UpdateCNCCtrl(BOOL _IsRuningCNC)
{
if (_IsRuningCNC)
{
((CButton*)(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_RUN_CNC)))->SetWindowTextW(_T("Stop"));
}
else
{
((CButton*)(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_RUN_CNC)))->SetWindowTextW(_T("Run"));
}
(GetDlgItem(IDCANCEL))->EnableWindow(!_IsRuningCNC);
(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_NEW_CNC))->EnableWindow(!_IsRuningCNC);
(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_OPEN_CNC))->EnableWindow(!_IsRuningCNC);
(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_SAVE_CNC_FILE))->EnableWindow(!_IsRuningCNC);
(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_ADD_CNC_PROGRAM))->EnableWindow(!_IsRuningCNC);
}
//===================================================
BOOL CSo7_Util_Program::RunCNC()
{
WaitForSingleObject(m_Thread_Mutex, INFINITE);
while (m_IsRuningCNC &&(m_RuningCNCIndex<m_pSo7_CNC_Program->m_Program_Number))
SYSTEMTIME st;
CString csTime;
unsigned int iRuningCNC(0);
while(m_IsRuningCNC &&(iRuningCNC<m_RuningCNCTimes))
{
CPoint3 m_pnt;
m_pSo7_CNC_Program->m_CNC_element.at(m_RuningCNCIndex)->GetPoint(0,0,0,NULL,m_pnt);
m_pSO7_Proto->so7_motion_set_position_xyz(m_pnt.x,m_pnt.y,m_pnt.z,true);
m_RuningCNCIndex++;
}
m_RuningCNCIndex=0;
GetLocalTime(&st);
csTime.Format(_T("%02d:%02d:%02d"),st.wHour,st.wMinute,st.wSecond);
m_RptListCtrl.SetItemText(m_RptRow,1,csTime);
m_StartTime=clock();
while (m_IsRuningCNC &&(m_RuningCNCIndex<m_pSo7_CNC_Program->m_Program_Number))
{
m_OutMessage.Format(_T("[Runing]%d/%d"),m_RuningCNCIndex+1,m_pSo7_CNC_Program->m_Program_Number);
OutputWithScroll(m_OutMessage,m_edMSG);
CPoint3 m_pnt;
m_pSo7_CNC_Program->m_CNC_element.at(m_RuningCNCIndex)->GetPoint(0,0,0,NULL,m_pnt);
m_pSO7_Proto->so7_motion_set_position_xyz(m_pnt.x,m_pnt.y,m_pnt.z,true);
m_RuningCNCIndex++;
}
if (m_IsRuningCNC)
{
m_FinishTime=clock();
m_duration=static_cast<double>(m_FinishTime-m_StartTime);
csTime.Format(_T("%3.4f"),(m_duration/1000.0));
m_RptListCtrl.SetItemText(m_RptRow,3,csTime);
GetLocalTime(&st);
csTime.Format(_T("%02d:%02d:%02d"),st.wHour,st.wMinute,st.wSecond);
m_RptListCtrl.SetItemText(m_RptRow,2,csTime);
m_OutMessage=_T("--Run CNC Finished--");
OutputWithScroll(m_OutMessage,m_edMSG);
m_RptRow++;
m_RptListCtrl.SetFocus();
m_RptListCtrl.EnsureVisible(m_RptRow,FALSE);
iRuningCNC++;
}
else
{
m_RptRow++;
m_OutMessage=_T("--Run CNC Stoped--");
OutputWithScroll(m_OutMessage,m_edMSG);
}
};
m_IsRuningCNC=FALSE;
((CButton*)(GetDlgItem(IDC_BUTTON_SO7_PROGRAM_RUN_CNC)))->SetWindowTextW(_T("Run"));
SetTimer(1,150,NULL);
UpdateCNCCtrl(m_IsRuningCNC);
ReleaseMutex(m_Thread_Mutex);
return TRUE;
@@ -513,3 +618,6 @@ void CSo7_Util_Program::OutputWithScroll(const CString &strNewText,CEdit &edtOut
}
@@ -45,8 +45,14 @@ protected:
BOOL m_bSetZeroX;
BOOL m_bSetZeroY;
BOOL m_bSetZeroZ;
clock_t m_StartTime, m_FinishTime;
double m_duration;
unsigned int m_RuningCNCTimes;
BOOL m_IsRuningCNC;
int m_RuningCNCIndex;
int m_RptCol;
int m_RptRow;
void UpdateCNCCtrl(BOOL _IsRuningCNC);
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
BOOL RunCNC(void);
protected:
@@ -73,4 +79,6 @@ public:
afx_msg void OnEnKillfocusEditSo7ProgramYMoveto();
afx_msg void OnBnClickedRadioSo7ProgramMove();
afx_msg void OnBnClickedRadioSo7ProgramMoveTo();
afx_msg void OnEnKillfocusEditSo7ProgeamCncRuingTimes();
afx_msg void OnBnClickedCheckSo7RuningProgramRuningInfinite();
};
@@ -267,6 +267,7 @@
#define IDC_CHECK_CONTINUE_READ_LASER_VALUE 1204
#define IDC_CHECK_SO7_MANUAL_MACHINE_READ_POS_CONTINUE 1204
#define IDC_CHECK_CONTINUOUS_READ_IO_STATUS 1204
#define IDC_CHECK_SO7_RUNING_PROGRAM_RUNING_INFINITE 1204
#define IDC_RADIO_MACHINE_SevenOcean 1205
#define IDC_CHECK_CONTINUE_READ_LASER_LK_H_VALUE 1205
#define IDC_BUTTON_INIT_SO7USB 1206
@@ -813,6 +814,7 @@
#define IDC_BUTTON_SO7_PROGRAM_NEW_CNC 1710
#define IDC_BUTTON_SO7_PROGRAM_SAVE_CNC_FILE 1711
#define IDC_BUTTON_SO7_PROGRAM_OPEN_CNC 1712
#define IDC_EDIT_SO7_PROGEAM_CNC_RUING_TIMES 1713
// Next default values for new objects
//
@@ -820,7 +822,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 188
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1713
#define _APS_NEXT_CONTROL_VALUE 1714
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif