📄 debugdlg.cpp
字号:
// DebugDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SlsPrj.h"
#include "DebugDlg.h"
#include <conio.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDebugDlg dialog
CDebugDlg::CDebugDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDebugDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDebugDlg)
m_step = 50;
//}}AFX_DATA_INIT
m_curPosX = 0;
m_curPosY = 0;
}
void CDebugDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDebugDlg)
DDX_Text(pDX, IDC_STEP, m_step);
DDV_MinMaxUInt(pDX, m_step, 0, 500);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDebugDlg, CDialog)
//{{AFX_MSG_MAP(CDebugDlg)
ON_BN_CLICKED(IDC_COVER_DOWN, OnCoverDown)
ON_BN_CLICKED(IDC_COVER_UP, OnCoverUp)
ON_BN_CLICKED(IDC_PAVE, OnPave)
ON_BN_CLICKED(IDC_PLATFORM_DOWN, OnPlatformDown)
ON_BN_CLICKED(IDC_PLATFORM_UP, OnPlatformUp)
ON_BN_CLICKED(IDC_SEND_DOWN, OnSendDown)
ON_BN_CLICKED(IDC_SEND_UP, OnSendUp)
ON_BN_CLICKED(IDC_STOP, OnStop)
ON_BN_CLICKED(IDC_ZERO, OnZero)
ON_BN_CLICKED(IDC_LASER_OFF, OnLaserOff)
ON_BN_CLICKED(IDC_LASER_ON, OnLaserOn)
ON_BN_CLICKED(IDC_X_NEG_DIR, OnXNegDir)
ON_BN_CLICKED(IDC_X_POS_DIR, OnXPosDir)
ON_BN_CLICKED(IDC_Y_NEG_DIR, OnYNegDir)
ON_BN_CLICKED(IDC_Y_POS_DIR, OnYPosDir)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDebugDlg message handlers
void CDebugDlg::OnCoverDown()
{
_asm
{
mov dx, 0x8320
mov eax, 0x57 //H轴下降
out dx, eax
}
}
void CDebugDlg::OnCoverUp()
{
_asm
{
mov dx, 0x8320
mov eax, 0x56 //H轴上升
out dx, eax
}
}
void CDebugDlg::OnPave()
{
_asm
{
mov dx, 0x8300
mov al, 8
out dx, al
mov al, 0x55
inc dx
out dx, al
}
}
void CDebugDlg::OnPlatformDown()
{
_asm
{
mov dx, 0x8320
mov eax, 0x1080000
out dx, eax
mov dx, 0x8324
in eax, dx
}
}
void CDebugDlg::OnPlatformUp()
{
_asm
{
mov dx, 0x8320
mov eax, 0x1880000
out dx, eax
mov dx, 0x8324
in eax, dx
}
}
void CDebugDlg::OnSendDown()
{
_asm
{
mov dx, 0x8320
mov eax, 0x2080000
out dx, eax
mov dx, 0x8325
in eax, dx
}
}
void CDebugDlg::OnSendUp()
{
_asm
{
mov dx, 0x8320
mov eax, 0x2880000
out dx, eax
mov dx, 0x8325
in eax, dx
}
}
void CDebugDlg::OnStop()
{
_asm
{
mov dx, 0x8321 //清指令
mov al, 0x3
out dx, al
}
}
void CDebugDlg::OnZero()
{
CSlsApp* pSlsApp = ( CSlsApp* )AfxGetApp();
pSlsApp->OnZero();
}
void CDebugDlg::OnOK()
{
CDialog::OnOK();
}
void CDebugDlg::OnLaserOff()
{
_asm
{
mov dx, 0x8320
mov eax, 0x59
out dx, eax
}
}
void CDebugDlg::OnLaserOn()
{
_asm
{
mov dx, 0x8320
mov eax, 0x58
out dx, eax
}
}
void CDebugDlg::OnXNegDir()
{
BOOL ret;
ret = UpdateData();
if(!ret)
{
AfxMessageBox("请正确设置步长!");
return;
}
else
{
DWORD valX, valY;
if(m_curPosX <= m_step)
{
AfxMessageBox("请缩短步距,以免压X轴负极限!");
return;
}
else
{
m_curPosX -= m_step;
valX = DWORD(m_curPosX * 500);
valY = DWORD(m_curPosY * 500);
//步进速度: 5m/min
_outpd(0x8320,7);
_outpd(0x8320,2500000);
//步进
_outpd(0x8320,3);
_outpd(0x8320,valX);
_outpd(0x8320,valY);
}
}
}
void CDebugDlg::OnXPosDir()
{
BOOL ret;
ret = UpdateData();
if(!ret)
{
AfxMessageBox("请正确设置步长!");
return;
}
else
{
DWORD valX, valY;
m_curPosX += m_step;
if(m_curPosX >= 400)
{
AfxMessageBox("请缩短步距,以免压X轴正极限!");
return;
}
else
{
valX = DWORD(m_curPosX * 500);
valY = DWORD(m_curPosY * 500);
//步进速度: 5m/min
_outpd(0x8320,7);
_outpd(0x8320,2500000);
//步进
_outpd(0x8320,3);
_outpd(0x8320,valX);
_outpd(0x8320,valY);
}
}
}
void CDebugDlg::OnYNegDir()
{
BOOL ret;
ret = UpdateData();
if(!ret)
{
AfxMessageBox("请正确设置步长!");
return;
}
else
{
DWORD valX, valY;
if(m_curPosY <= m_step)
{
AfxMessageBox("请缩短步距,以免压Y轴负极限!");
return;
}
else
{
m_curPosY -= m_step;
valX = DWORD(m_curPosX * 500);
valY = DWORD(m_curPosY * 500);
//步进速度: 5m/min
_outpd(0x8320,7);
_outpd(0x8320,2500000);
//步进
_outpd(0x8320,3);
_outpd(0x8320,valX);
_outpd(0x8320,valY);
}
}
}
void CDebugDlg::OnYPosDir()
{
BOOL ret;
ret = UpdateData();
if(!ret)
{
AfxMessageBox("请正确设置步长!");
return;
}
else
{
DWORD valX, valY;
m_curPosY += m_step;
if(m_curPosY >= 250)
{
AfxMessageBox("请缩短步距,以免压Y轴正极限!");
return;
}
else
{
valX = DWORD(m_curPosX * 500);
valY = DWORD(m_curPosY * 500);
//步进速度: 5m/min
_outpd(0x8320,7);
_outpd(0x8320,2500000);
//步进
_outpd(0x8320,3);
_outpd(0x8320,valX);
_outpd(0x8320,valY);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -