📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "SMT5K.h"
#include "MainFrm.h"
#include "SerialPort.h"
#include "SM5000.h"
#include "WriteReg.h"
#include "WriteParam.h"
#include "WriteDrvCmd.h"
#include "WriteIPLCmd.h"
#include "Monitor.h"
#include "ReadReg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern int CurrentAxis;
extern int TimerOn;
extern CSerialPort m_ComPort;
extern CString m_strRXDataCOM1; //COM1接收数据
extern CString m_strTXDataCOM1; //COM1发送数据
int g_SampleTime;
int gSendCmdTime;
extern int ChipSel ;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_CBN_CLOSEUP(IDC_COMBO_SEL_AXIS, OnCloseupComboSelAxis)
ON_CBN_CLOSEUP(IDC_COMBO_SAMPLE_MODE, OnCloseupComboSampleMode)
ON_BN_CLICKED(IDC_TIMER_EN, OnTimerEn)
ON_WM_TIMER()
ON_EN_KILLFOCUS(IDC_EDIT_TIMER, OnKillfocusEditTimer)
ON_UPDATE_COMMAND_UI(IDC_TIMER_EN, OnUpdateTimerEn)
ON_CBN_CLOSEUP(IDC_COMBO_RREG, OnCloseupComboRreg)
ON_MESSAGE(WM_SM5K_DATA_READ, OnSm5kDataRead)
ON_CBN_DROPDOWN(IDC_COMBO_SEL_AXIS, OnDropdownComboSelAxis)
ON_BN_CLICKED(IDC_TIMER_EN2, OnTimerEn2)
ON_BN_CLICKED(IDC_TIMER_EN3, OnTimerEn3)
ON_COMMAND(IDC_WriteRegister, OnWriteRegister)
ON_COMMAND(IDC_WriteParameter, OnWriteParameter)
ON_COMMAND(IDC_WriteDrvCmd, OnWriteDrvCmd)
ON_COMMAND(IDC_WriteIPLCmd, OnWriteIPLCmd)
ON_COMMAND(ID_MONITOR, OnMonitor)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_SM5K_TIMER_ON, OnTimerEn)
END_MESSAGE_MAP()
/*
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
*/
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
IDS_THISTIMER,
IDS_TIMER,
ID_INDICATOR_NUM,
IDS_COMPANYMANE,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
m_SampleTime = 200;
g_SampleTime = m_SampleTime;
m_CurrentRReg = -1;
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndDlgBar.Create(this, IDR_MAINFRAME,
CBRS_ALIGN_TOP, AFX_IDW_DIALOGBAR))
{
TRACE0("Failed to create dialogbar\n");
return -1; // fail to create
}
else
{
((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SEL_AXIS))->SetCurSel(0);
((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SAMPLE_MODE))->SetCurSel(0);
((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_RREG))->SetCurSel(0);
m_wndDlgBar.SetDlgItemInt(IDC_EDIT_TIMER,m_SampleTime,0);
}
if (!m_wndReBar.Create(this) ||
!m_wndReBar.AddBar(&m_wndToolBar) ||
!m_wndReBar.AddBar(&m_wndDlgBar))
{
TRACE0("Failed to create rebar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Remove this if you don't want tool tips
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY);
SetTimer(2,1000,NULL);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
int xSize = ::GetSystemMetrics(SM_CXSCREEN);
int ySize = ::GetSystemMetrics(SM_CYSCREEN);
cs.cx = xSize*5/6;
cs.cy = ySize*6/7;
cs.x = (xSize-cs.cx)/2+35;
cs.y = (ySize-cs.cy)/2;
// cs.style &= ~WS_MAXIMIZEBOX ;
cs.style &= ~WS_THICKFRAME ;
cs.style &= ~FWS_ADDTOTITLE;
cs.lpszName = "THUYK-1型 嵌入式运动控制器功能演示程序";
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnCloseupComboSelAxis()
{
// TODO: Add your control notification handler code here
CurrentAxis = ((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SEL_AXIS))->GetCurSel();
Invalidate();
UpdateWindow();
}
void CMainFrame::OnCloseupComboSampleMode()
{
m_SampleMode = ((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SAMPLE_MODE))->GetCurSel();
}
void CMainFrame::OnTimerEn()
{
// TODO: Add your control notification handler code here
TimerOn = ! TimerOn;
if(TimerOn)
{
m_SampleTime = m_wndDlgBar.GetDlgItemInt(IDC_EDIT_TIMER);
SetTimer(1,m_SampleTime,NULL);
m_wndDlgBar.SetDlgItemText(IDC_TIMER_EN,"停止");
}
else
{
KillTimer(1);
m_wndDlgBar.SetDlgItemText(IDC_TIMER_EN,"启动");
m_wndDlgBar.CheckDlgButton(IDC_TIMER_EN, BST_UNCHECKED);
}
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1:
m_strTXDataCOM1.Empty();
int RegNo;
if(m_SampleMode==1) // Single Axis
RegNo = CurrentAxis + 30;
else if(m_SampleMode==2) // IPL
RegNo = 34;
else // All
RegNo = 35;
ReadReg (RegNo);
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
gSendCmdTime = GetTickCount();
break;
case 2:
CTime CurTime = CTime::GetCurrentTime();
m_strTimer.Format("%d:%d:%d",CurTime.GetHour(),CurTime.GetMinute(),CurTime.GetSecond());
m_wndStatusBar.SetPaneText(2, m_strTimer,TRUE);
break;
}
CFrameWnd::OnTimer(nIDEvent);
}
void CMainFrame::OnKillfocusEditTimer()
{
// TODO: Add your control notification handler code here
m_SampleTime = m_wndDlgBar.GetDlgItemInt(IDC_EDIT_TIMER);
if(m_SampleTime<=20)
{
m_SampleTime = 20;
m_wndDlgBar.SetDlgItemInt(IDC_EDIT_TIMER,m_SampleTime,0);
}
else if(m_SampleTime>10000)
{
m_SampleTime = 10000;
m_wndDlgBar.SetDlgItemInt(IDC_EDIT_TIMER,m_SampleTime,0);
}
g_SampleTime = m_SampleTime;
}
void CMainFrame::OnUpdateTimerEn(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(TimerOn);
}
void CMainFrame::OnCloseupComboRreg() //
{
m_CurrentRReg = ((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_RREG))->GetCurSel();
/**/
m_strTXDataCOM1.Empty();
switch(m_CurrentRReg)
{
case 0:
ReadReg (0);
break;
case 1:
ReadReg (1, 1,0,0,0);
break;
case 2:
ReadReg (1, 0,1,0,0);
break;
case 3:
ReadReg (1, 0,0,1,0);
break;
case 4:
ReadReg (1, 0,0,0,1);
break;
case 5:
ReadReg (2, 1,0,0,0);
break;
case 6:
ReadReg (2, 0,1,0,0);
break;
case 7:
ReadReg (2, 0,0,1,0);
break;
case 8:
ReadReg (2, 0,0,0,1);
break;
case 9:
ReadReg (3, 1,0,0,0);
break;
case 10:
ReadReg (3, 0,1,0,0);
break;
case 11:
ReadReg (3, 0,0,1,0);
break;
case 12:
ReadReg (3, 0,0,0,1);
break;
case 13:
ReadReg (4);
break;
case 14:
ReadReg (5);
break;
case 15:
ReadReg (6);
break;
case 16:
ReadReg (7);
break;
case 17:
ReadReg (10);
break;
case 18:
ReadReg (11, 1,0,0,0);
break;
case 19:
ReadReg (11, 0,1,0,0);
break;
case 20:
ReadReg (11, 0,0,1,0);
break;
case 21:
ReadReg (11, 0,0,0,1);
break;
case 22:
ReadReg (12, 1,0,0,0);
break;
case 23:
ReadReg (12, 0,1,0,0);
break;
case 24:
ReadReg (12, 0,0,1,0);
break;
case 25:
ReadReg (12, 0,0,0,1);
break;
case 26:
ReadReg (13, 1,0,0,0);
break;
case 27:
ReadReg (13, 0,1,0,0);
break;
case 28:
ReadReg (13, 0,0,1,0);
break;
case 29:
ReadReg (13, 0,0,0,1);
break;
case 30:
ReadReg (14);
break;
case 31:
ReadReg (15);
break;
case 32:
ReadReg (16);
break;
case 33:
ReadReg (17);
break;
case 34:
ReadParam (0, 1,0,0,0);
break;
case 35:
ReadParam (0, 0,1,0,0);
break;
case 36:
ReadParam (0, 0,0,1,0);
break;
case 37:
ReadParam (0, 0,0,0,1);
break;
case 38:
ReadParam (1, 1,0,0,0);
break;
case 39:
ReadParam (1, 0,1,0,0);
break;
case 40:
ReadParam (1, 0,0,1,0);
break;
case 41:
ReadParam (1, 0,0,0,1);
break;
case 42:
ReadParam (2, 1,0,0,0);
break;
case 43:
ReadParam (2, 0,1,0,0);
break;
case 44:
ReadParam (2, 0,0,1,0);
break;
case 45:
ReadParam (2, 0,0,0,1);
break;
case 46:
ReadParam (3, 1,0,0,0);
break;
case 47:
ReadParam (3, 0,1,0,0);
break;
case 48:
ReadParam (3, 0,0,1,0);
break;
case 49:
ReadParam (3, 0,0,0,1);
break;
default:
break;
}
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
/**/
}
LONG CMainFrame::OnSm5kDataRead(WPARAM wData, LPARAM lData)
{
CString str;
if( (m_CurrentRReg== 0 && wData== 0 ) ||
(m_CurrentRReg== 1 && wData== 1 ) ||
(m_CurrentRReg== 2 && wData==101 ) ||
(m_CurrentRReg== 3 && wData==201 ) ||
(m_CurrentRReg== 4 && wData==301 ) ||
(m_CurrentRReg== 5 && wData== 2 ) ||
(m_CurrentRReg== 6 && wData==102 ) ||
(m_CurrentRReg== 7 && wData==202 ) ||
(m_CurrentRReg== 8 && wData==302 ) ||
(m_CurrentRReg== 9 && wData== 3 ) ||
(m_CurrentRReg==10 && wData==103 ) ||
(m_CurrentRReg==11 && wData==203 ) ||
(m_CurrentRReg==12 && wData==303 ) ||
(m_CurrentRReg==13 && wData== 4 ) ||
(m_CurrentRReg==14 && wData== 5 ) ||
(m_CurrentRReg==15 && wData== 6 ) ||
(m_CurrentRReg==16 && wData== 7 ) ||
(m_CurrentRReg==17 && wData== 10 ) ||
(m_CurrentRReg==18 && wData== 11 ) ||
(m_CurrentRReg==19 && wData==111 ) ||
(m_CurrentRReg==20 && wData==211 ) ||
(m_CurrentRReg==21 && wData==311 ) ||
(m_CurrentRReg==22 && wData== 12 ) ||
(m_CurrentRReg==23 && wData==112 ) ||
(m_CurrentRReg==24 && wData==212 ) ||
(m_CurrentRReg==25 && wData==312 ) ||
(m_CurrentRReg==26 && wData== 13 ) ||
(m_CurrentRReg==27 && wData==113 ) ||
(m_CurrentRReg==28 && wData==213 ) ||
(m_CurrentRReg==29 && wData==313 ) ||
(m_CurrentRReg==30 && wData== 14 ) ||
(m_CurrentRReg==31 && wData== 15 ) ||
(m_CurrentRReg==32 && wData== 16 ) ||
(m_CurrentRReg==33 && wData== 17 ) ||
(m_CurrentRReg==34 && wData== 20 ) ||
(m_CurrentRReg==35 && wData==120 ) ||
(m_CurrentRReg==36 && wData==220 ) ||
(m_CurrentRReg==37 && wData==320 ) ||
(m_CurrentRReg==38 && wData== 21 ) ||
(m_CurrentRReg==39 && wData==121 ) ||
(m_CurrentRReg==40 && wData==221 ) ||
(m_CurrentRReg==41 && wData==321 ) ||
(m_CurrentRReg==42 && wData== 22 ) ||
(m_CurrentRReg==43 && wData==122 ) ||
(m_CurrentRReg==44 && wData==222 ) ||
(m_CurrentRReg==45 && wData==322 ) ||
(m_CurrentRReg==46 && wData== 23 ) ||
(m_CurrentRReg==47 && wData==123 ) ||
(m_CurrentRReg==48 && wData==223 ) ||
(m_CurrentRReg==49 && wData==323 ) )
{
str.Format("%d",lData);
m_wndDlgBar.SetDlgItemText( IDC_REG_DATA_DISP, str );
}
return 0;
}
void CMainFrame::OnDropdownComboSelAxis()
{
// TODO: Add your control notification handler code here
((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SEL_AXIS))->ResetContent();
((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SEL_AXIS))->AddString(" X 轴");
((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SEL_AXIS))->AddString(" Y 轴");
if(ChipSel==4)
{
((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SEL_AXIS))->AddString(" Z 轴");
((CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO_SEL_AXIS))->AddString(" U 轴");
}
}
void CMainFrame::OnTimerEn2()
{
// TODO: Add your control notification handler code here
m_strTXDataCOM1.Empty();
m_strTXDataCOM1 = "@@@@@";
m_ComPort.WriteToPort((LPCTSTR)m_strTXDataCOM1);
}
void CMainFrame::OnTimerEn3()
{
CString m_str_quit = "q";
m_ComPort.WriteToPort(LPCTSTR(m_str_quit));
}
void CMainFrame::OnWriteRegister()
{
CWriteReg WriteRegisterDlg;
WriteRegisterDlg.DoModal();
}
void CMainFrame::OnWriteParameter()
{
CWriteParam WriteParameterDlg;
WriteParameterDlg.DoModal();
}
void CMainFrame::OnWriteDrvCmd()
{
CWriteDrvCmd WriteDrvCommandDlg;
WriteDrvCommandDlg.DoModal();
}
void CMainFrame::OnWriteIPLCmd()
{
CWriteIPLCmd WriteIPLCommandDlg;
WriteIPLCommandDlg.DoModal();
}
void CMainFrame::OnMonitor()
{
CMonitor MonitorSheet("查看运行状态");
CMonitorIPL PageIPL;
MonitorSheet.AddPage(&PageIPL);
MonitorSheet.SetActivePage(&PageIPL);
MonitorSheet.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -