新增离线模式。

This commit is contained in:
TAO Cheng
2013-08-27 15:09:24 +08:00
parent a7ccbac4d6
commit cb4f3e8ecc
8 changed files with 107 additions and 111 deletions
@@ -442,6 +442,7 @@ CSO7_Proto::CSO7_Proto()
ep_buff[i]._hProtoPending = false;
ep_buff[i]._event = NULL;
};
g_machine.IsOffline=TRUE;
g_machine.x._Move_Speed_Gear =2;
g_machine.y._Move_Speed_Gear =2;
g_machine.z._Move_Speed_Gear =2;
@@ -2319,8 +2320,9 @@ SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb()
g_machine.s_status._machine_running = false;
SSI_STATUS_MOTION Status=SSI_STATUS_MOTION_NORMAL;
UNREFERENCED_PARAMETER(Status);
SSI_STATUS_MOTION rStatus=SSI_STATUS_MOTION_NORMAL;
g_machine.IsOffline=FALSE;
int usb_status = NULL;
usb_init(); // initialize the library
@@ -2329,22 +2331,23 @@ SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb()
g_dev = _open_usb_dev();
if (!g_dev)
{
MessageBox(NULL, _T("Unable to open device"), _T("Message"), MB_OK);
MessageBox(NULL, _T("Unable to open device"), _T("Message"), MB_OK|MB_ICONERROR);
g_pLogger->SendAndFlushPerMode(_T("Unable to open device %s \r\n"), usb_strerror());
return SSI_STATUS_MOTION_DATALINK_ERROR;
g_machine.IsOffline=TRUE;
rStatus= SSI_STATUS_MOTION_DATALINK_ERROR;
}
if (usb_set_configuration(g_dev, MY_CONFIG) < 0)
else if (usb_set_configuration(g_dev, MY_CONFIG) < 0)
{
MessageBox(NULL, _T("Unable to SET CONFIGURATION"), _T("Message"), MB_OK);
return SSI_STATUS_MOTION_DATALINK_ERROR;
MessageBox(NULL, _T("Unable to SET CONFIGURATION"), _T("Message"), MB_OK|MB_ICONERROR);
g_machine.IsOffline=TRUE;
rStatus=SSI_STATUS_MOTION_DATALINK_ERROR;
}
if (usb_claim_interface(g_dev, 0) < 0)
else if (usb_claim_interface(g_dev, 0) < 0)
{
usb_close(g_dev);
MessageBox(NULL, _T("Unable to CLAIM DEVICE"), _T("Message"), MB_OK);
return SSI_STATUS_MOTION_DATALINK_ERROR;
MessageBox(NULL, _T("Unable to CLAIM DEVICE"), _T("Message"), MB_OK|MB_ICONERROR);
g_machine.IsOffline=TRUE;
rStatus=SSI_STATUS_MOTION_DATALINK_ERROR;
}
g_pLogger->SendAndFlushPerMode(_T("Init:Open device succeed .\r\n"));
@@ -2392,7 +2395,7 @@ SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb()
NULL); // unamed object
return SSI_STATUS_MOTION_NORMAL;
return rStatus;
}
//******************************************************************************
@@ -2499,6 +2502,13 @@ SSI_STATUS_MOTION CSO7_Proto::_shutdown_machine()
//===============================================================================
SSI_STATUS_MOTION CSO7_Proto::_read_data_8x(int iEP_Base)
{
if (g_machine.IsOffline)
{
ep_buff[EP_82_DATA_IDX]._hProtoPending = false;
ep_buff[EP_01_CMD_IDX]._hProtoPending = false;
ep_buff[EP_81_DATA_IDX]._hProtoPending = false;
return SSI_STATUS_MOTION_NORMAL;
}
if (iEP_Base == EP_82_DATA_IDX)
{
TRACE2("_read_data_81() iEP : %X - ep_buff[iEP]._size : %X \r\n", iEP_Base, ep_buff[iEP_Base]._size);
@@ -2543,6 +2553,12 @@ SSI_STATUS_MOTION CSO7_Proto::_read_data_8x(int iEP_Base)
//===============================================================================
SSI_STATUS_MOTION CSO7_Proto::_send_usb_cmd(int iEP_Base)
{
if (g_machine.IsOffline)
{
SetEvent(ep_buff[iEP_Base+1]._event);
ep_buff[iEP_Base]._hProtoPending = false;
return SSI_STATUS_MOTION_NORMAL;
}
int _ret;
ep_buff[iEP_Base]._save_send_cmd = ep_buff[iEP_Base]._buffer[0];
ep_buff[iEP_Base]._save_send_cmd0 = ep_buff[iEP_Base]._buffer[1];
@@ -2569,6 +2585,12 @@ SSI_STATUS_MOTION CSO7_Proto::_send_usb_cmd(int iEP_Base)
//===============================================================================
SSI_STATUS_MOTION CSO7_Proto::_write_usb_data_only(int iEP_Base)
{
if (g_machine.IsOffline)
{
ep_buff[iEP_Base]._hProtoPending = false;
ep_buff[iEP_Base+1]._hProtoPending = false;
return SSI_STATUS_MOTION_NORMAL;
}
int _ret;
ep_buff[iEP_Base]._save_send_cmd = ep_buff[iEP_Base]._buffer[0];
ep_buff[iEP_Base]._save_send_cmd0 = ep_buff[iEP_Base]._buffer[1];
@@ -2666,6 +2688,11 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_laser_on_off(bool _bOnOff)
//==================================================================
bool CSO7_Proto::so7_motion_is_homed()
{
if (g_machine.IsOffline)
{
g_machine.Sys_Reset_Flag =1;
SetEvent(g_hHomedEvent);
}
_send_cmd_SO7_CMD_GET_RESET_FLAG();
if (g_machine.Sys_Reset_Flag == 1)
{
@@ -2681,6 +2708,11 @@ bool CSO7_Proto::so7_motion_is_homed()
//========================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home()
{
if (g_machine.IsOffline)
{
SetEvent(g_hHomedEvent);
return SSI_STATUS_MOTION_NORMAL;
}
//查询是否复位
_send_cmd_SO7_CMD_GET_RESET_FLAG();
g_machine.cVerNumber=3;
@@ -2770,6 +2802,12 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_position_xyz(double & dX, double &
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY, double dZ, bool bWait)
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
if (g_machine.IsOffline)
{
SetEvent(g_hHomedEvent);
return SSI_STATUS_MOTION_NORMAL;
}
// get the current position
double dXStart, dYStart, dZStart;
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
@@ -4347,4 +4385,4 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_ZSIGNAL_POS_Z()
g_machine.z._ZSignal_pos._long_=g_machine.z._ZSignal_pos._long_-16777216;
return SSI_STATUS_MOTION_NORMAL;
}
}