Files
EF3-Interface/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/MachineInterfaceDll/MachineInterfaceDll.cpp
T
2014-04-15 22:36:11 +08:00

246 lines
7.6 KiB
C++

// MachineInterfaceDll.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include <BaseTsd.h>
#include <WinBase.h>
#include <WinDef.h>
#include <atltypes.h>
#include <tchar.h>
#include <atlstr.h>
#include "..\..\..\SevenOcean\DLL.h"
#include "..\..\..\SevenOcean\EF8000_Interface.h"
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "MachineInterfaceDll.h"
CEF8000_Interface* m_pEF8000_Interface=NULL;
CSO7_Proto* m_pSO7_Proto=NULL;
bool g_bOfflineOnly(false);
//==================================================================
SSI_STATUS_MOTION LoadMotionParameter()
{
BOOL rStatus(FALSE);
if (!m_pEF8000_Interface)
{
m_pEF8000_Interface=new CEF8000_Interface();
}
rStatus=m_pEF8000_Interface->OpenMotorDat();
if (rStatus)
{
for(int j=0;j<5;j++)
{
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_base[j]=m_pEF8000_Interface->Set_Speed[j][0];
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_max[j]=m_pEF8000_Interface->Set_Speed[j][1];
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_start[j]=m_pEF8000_Interface->Set_Speed[j][2];
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_fresh[j]=m_pEF8000_Interface->Set_Speed[j][3];
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_slow_dis[j]=m_pEF8000_Interface->slow_dis[j];
}
for(int j=0;j<5;j++)
{
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_base[j]=m_pEF8000_Interface->Set_Speed[j+5][0];
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_max[j]=m_pEF8000_Interface->Set_Speed[j+5][1];
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_start[j]=m_pEF8000_Interface->Set_Speed[j+5][2];
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_fresh[j]=m_pEF8000_Interface->Set_Speed[j+5][3];
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_slow_dis[j]=m_pEF8000_Interface->slow_dis[j+5];
}
for(int j=0;j<5;j++)
{
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_base[j]=m_pEF8000_Interface->Set_Speed[j+10][0];
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_max[j]=m_pEF8000_Interface->Set_Speed[j+10][1];
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_start[j]=m_pEF8000_Interface->Set_Speed[j+10][2];
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_fresh[j]=m_pEF8000_Interface->Set_Speed[j+10][3];
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_slow_dis[j]=m_pEF8000_Interface->slow_dis[j+10];
}
m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_precision=m_pEF8000_Interface->g_precision[0];
m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_precision=m_pEF8000_Interface->g_precision[1];
m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_precision= m_pEF8000_Interface->g_precision[2];
m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_wheelbase=m_pEF8000_Interface->Image_Info.m_Motor_Dx;
m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_wheelbase=m_pEF8000_Interface->Image_Info.m_Motor_Dy;
m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_wheelbase=m_pEF8000_Interface->Image_Info.m_Motor_Dz;
m_pSO7_Proto->g_machine._motor_pulse_num= m_pEF8000_Interface->Image_Info.m_Motor_Plus_Num;
}
if (rStatus)
{
return SSI_STATUS_MOTION_NORMAL;
}
else
{
return SSI_STATUS_MOTOR_DAT_FILE_NOT_FOUND;
}
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Startup(bool bOfflineOnly,bool bDCCHome)
{
SSI_STATUS_MOTION rStatus=SSI_STATUS_MOTION_NORMAL;
g_bOfflineOnly=bOfflineOnly;
if (!g_bOfflineOnly)
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto=new CSO7_Proto();
}
rStatus=m_pSO7_Proto->Init_SO7Usb();
if (rStatus==SSI_STATUS_MOTION_NORMAL)
{
m_pSO7_Proto->_start_machine();
rStatus=m_pSO7_Proto->Load_So7_Config();
if (rStatus==SSI_STATUS_MOTION_NORMAL)
{
rStatus=LoadMotionParameter();
if (rStatus==SSI_STATUS_MOTION_NORMAL)
{
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_RESET_FLAG();
if(m_pSO7_Proto->g_machine.IsSupportReadInterrputMsg)
{
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_FIRMWARE_VERSION_INFO();
}
if (bDCCHome)
{
m_pSO7_Proto->so7_motion_Dcc_Home_R();
}
}
}
}
}
return rStatus;
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Machine_Sutdown()
{
if (m_pEF8000_Interface)
{
delete m_pEF8000_Interface;
m_pEF8000_Interface=nullptr;
}
if (m_pSO7_Proto)
{
if(m_pSO7_Proto->g_machine.IsSupportReadInterrputMsg)
{
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(E_GET_INTERRUPT_MSG_INTERRUPT);
}
m_pSO7_Proto->_shutdown_machine();
m_pSO7_Proto->Exit_SO7Usb();
delete m_pSO7_Proto;
m_pSO7_Proto=nullptr;
}
return SSI_STATUS_MOTION_NORMAL;
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_GetPositionR(double& dPos)
{
if (!g_bOfflineOnly)
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto=new CSO7_Proto();
}
return m_pSO7_Proto->so7_motion_get_position_R(dPos);
}
else
{
return SSI_STATUS_MOTION_NORMAL;
}
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_SetPositionR(double dAbsolutePos,bool bWait)
{
if (!g_bOfflineOnly)
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto=new CSO7_Proto();
}
return m_pSO7_Proto->so7_motion_set_position_R(dAbsolutePos,bWait);
}
else
{
return SSI_STATUS_MOTION_NORMAL;
}
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_DCCHome()
{
if (!g_bOfflineOnly)
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto=new CSO7_Proto();
}
return m_pSO7_Proto->so7_motion_Dcc_Home_R();
}
else
{
return SSI_STATUS_MOTION_NORMAL;
}
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsHomed(bool &bHomed)
{
if (!g_bOfflineOnly)
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto=new CSO7_Proto();
}
return m_pSO7_Proto->so7_Motion_R_IsHomed(bHomed);
}
else
{
return SSI_STATUS_MOTION_NORMAL;
}
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_IsFinished(bool &bFinished)
{
if (!g_bOfflineOnly)
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto=new CSO7_Proto();
}
return m_pSO7_Proto->so7_Motion_R_IsMotionFInished(bFinished);
}
else
{
return SSI_STATUS_MOTION_NORMAL;
}
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_JogR(char cSpeedGear)
{
if (!g_bOfflineOnly)
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto=new CSO7_Proto();
}
return m_pSO7_Proto->so7_motion_move_R(cSpeedGear);
}
else
{
return SSI_STATUS_MOTION_NORMAL;
}
}
//==================================================================
extern "C" EXP_IMP SSI_STATUS_MOTION WINAPI Motion_StopR()
{
if (!g_bOfflineOnly)
{
if (!m_pSO7_Proto)
{
m_pSO7_Proto=new CSO7_Proto();
}
return m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ();
}
else
{
return SSI_STATUS_MOTION_NORMAL;
}
}