新增离线模式。

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
+1
View File
@@ -32,3 +32,4 @@ PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/ReleaseSO7/
PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/ReleaseSO7/
PcDmis/Base/Interfac/Msi/Hsi/KeyenceTM065/LKIF_Multi_USÓ¢ÕZ°æ
PcDmis/Base/Interfac/Msi/Hsi/KeyenceTM065/LK-GͨÐÅÓÃDLL-20090427
*.ipch
@@ -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;
}
}
@@ -203,7 +203,7 @@ struct struct_so7_machine
char InterruptFlag[2];
char InPortStatus;
int _motor_pulse_num;
BOOL IsOffline;
struct s_so7_axis x;
struct s_so7_axis y;
struct s_so7_axis z;
@@ -2098,3 +2098,42 @@ Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Unable to open device Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Unable to open device Init:Open device succeed .
_start_machine
Destruct Cso7_Proto.
Construct Cso7_Proto.
Unable to open device Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Unable to open device Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Unable to open device Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Unable to open device Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Unable to open device Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Unable to open device Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
@@ -1954,70 +1954,6 @@ BEGIN
CONTROL "Dump PRS",IDC_RADIO_DUMP_PRS,"Button",BS_AUTORADIOBUTTON,27,85,60,10
END
IDD_SO7_UTIL_MOVE_LOCATION DIALOGEX 0, 0, 283, 436
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Move To Location(SO7)"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
EDITTEXT IDC_EDIT_MOVE_TO_X,41,78,53,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_MOVE_TO_Y,41,94,53,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_MOVE_TO_Z,41,110,53,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_MOVE_TO_ZM,41,126,53,12,ES_AUTOHSCROLL
CONTROL "Reverse",IDC_CHECK_REVERSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,79,43,10
PUSHBUTTON "Move To XYZ",ID_OK_START,102,101,71,13,BS_MULTILINE
PUSHBUTTON "Move To Zoom",IDC_BUTTON_MOVE_TO_ZOOM,102,124,71,13
PUSHBUTTON "Move To XYZ(JM)",IDC_BUTTON_MOVE_TO_XYZ_JM,180,78,71,13
PUSHBUTTON "Move To XYZ(Laser)",IDC_BUTTON_MOVE_TO_XYZ_LASER,180,101,71,13
PUSHBUTTON "Move To XYZV",IDC_BUTTON_MOVE_TO_XYZV,180,124,71,13
EDITTEXT IDC_EDIT_REPETEST_DIS,124,224,57,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_REPETEST_TIMES,124,248,57,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_REPETEST_INTERVAL,124,272,45,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_REPETEST_ERRORRANGE,124,296,45,12,ES_RIGHT | ES_AUTOHSCROLL
PUSHBUTTON "Begin",IDC_BUTTON_BEGIN_REPE_TEST,194,234,56,13
PUSHBUTTON "Save...",IDC_BUTTON_SAVE_REPETEST,194,269,56,13
GROUPBOX "System",IDC_STATIC,19,9,64,46
CONTROL "inch",IDC_RADIO_INCH,"Button",BS_AUTORADIOBUTTON | WS_GROUP,33,20,29,10
CONTROL "mm",IDC_RADIO_MM,"Button",BS_AUTORADIOBUTTON,33,30,27,10
CONTROL "pulse",IDC_RADIO_SCALE,"Button",BS_AUTORADIOBUTTON,33,40,33,10
GROUPBOX "Move Type",IDC_STATIC,102,10,68,45
CONTROL "Relative",IDC_RADIO_MOVE_RELATIVE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,116,22,42,10
CONTROL "Absolute",IDC_RADIO_MOVE_ABSOLUTE,"Button",BS_AUTORADIOBUTTON,116,38,44,10
GROUPBOX "Move Speed",IDC_STATIC,185,9,69,46
CONTROL "Fast",IDC_RADIO_SPEED_FAST,"Button",BS_AUTORADIOBUTTON | WS_GROUP,195,20,30,10
CONTROL "Slow",IDC_RADIO_SPEED_SLOW,"Button",BS_AUTORADIOBUTTON,195,30,31,10
CONTROL "User Defined",IDC_RADIO_SPEED_USER_DEFINED,"Button",BS_AUTORADIOBUTTON,195,40,54,10
PUSHBUTTON "EXIT",IDCANCEL,226,415,50,14
LTEXT "x",IDC_STATIC,29,78,8,8
LTEXT "y",IDC_STATIC,29,94,8,8
LTEXT "z",IDC_STATIC,29,111,8,8
LTEXT "zm",IDC_STATIC,25,127,8,8
LTEXT "x",IDC_STATIC,29,172,8,11
LTEXT "y",IDC_STATIC,29,190,8,11
LTEXT "z",IDC_STATIC,109,172,8,11
LTEXT "zm",IDC_STATIC,107,193,11,11
EDITTEXT IDC_EDIT_X_AXIS,40,171,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Y_AXIS,40,190,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Z_AXIS,121,171,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_ZM_AXIS,121,190,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
GROUPBOX "Move To Position",IDC_STATIC,20,63,236,90
GROUPBOX "Position",IDC_STATIC,18,157,238,50
PUSHBUTTON "Zero Set",IDC_BUTTON_ZERO_SET,191,179,56,13
GROUPBOX "Repeatability Test",IDC_STATIC,19,209,238,106
LTEXT "To",IDC_STATIC,102,225,8,8
LTEXT "Times",IDC_STATIC,97,251,19,8
EDITTEXT IDC_EDIT_REPRETEST,22,322,236,67,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
CONTROL "x",IDC_CHECK_REPETESTX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,225,20,10
CONTROL "y",IDC_CHECK_REPETESTY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,239,20,10
CONTROL "z",IDC_CHECK_REPETESTZ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,253,20,10
LTEXT "Pause",IDC_STATIC,95,274,20,8
LTEXT "ms",IDC_STATIC,172,274,10,8
CONTROL "Absolute",IDC_CHECK_REPETEST_ABSOLUTE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,297,44,10
LTEXT "Deadband",IDC_STATIC,86,298,34,8
LTEXT "um",IDC_STATIC_DEADBAND_UNITS,172,298,19,8
CONTROL "VolComp",IDC_CHECK_REPETEST_VOLCOMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,283,43,10
CONTROL "V",IDC_CHECK_REPETESTV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,267,20,10
END
IDD_DIALOG_TEST_KEYENCE DIALOGEX 0, 0, 741, 349
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Keyence Utility"
@@ -2201,14 +2137,6 @@ BEGIN
BOTTOMMARGIN, 154
END
IDD_SO7_UTIL_MOVE_LOCATION, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 276
TOPMARGIN, 7
BOTTOMMARGIN, 429
END
IDD_DIALOG_TEST_KEYENCE, DIALOG
BEGIN
LEFTMARGIN, 7
@@ -163,8 +163,8 @@ BOOL CSO7_UtilDlg::OnInitDialog()
}
}
m_OutMessage = _T("System Ready.\r\nPress 'Init_SO7USB' to start.");
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
m_OutMessage = _T("System Ready.\r\nPress 'Start_Machine' to start.");
OutputWithScroll(m_OutMessage,m_edMSG);
GetDlgItem(IDC_BUTTON_START_SO7MACHINE)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_STOP_SO7MACHINE)->EnableWindow(false);
@@ -262,7 +262,6 @@ BOOL CSO7_UtilDlg::OnInitDialog()
//=====================================================================
void CSO7_UtilDlg::OnBnClickedButtonInitSo7usb()
{
if (0)
{
SO7AXISMOVE X;
@@ -281,30 +280,27 @@ void CSO7_UtilDlg::OnBnClickedButtonInitSo7usb()
{
if (m_pSO7_Proto->Init_SO7Usb())
{
((CButton *)GetDlgItem(IDC_RADIO_FORMAT_SNOOPY))->SetCheck(1);
m_OutMessage = _T("Usb Port Error");
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
return;
};
g_pLoggerDebug->SendAndFlushPerMode(_T("Usb Port Initialized.\r\n"));
SetWindowText(_T("SevenOcean Utility(Offline)"));
m_OutMessage = _T("Usb Port Error!\r\nMachine Started with offline mode.");
OutputWithScroll(m_OutMessage,m_edMSG);
}
else
{
g_pLoggerDebug->SendAndFlushPerMode(_T("Usb Port Initialized.\r\n"));
m_OutMessage = _T("Usb Port Initialized.\r\nMachine Started.");
OutputWithScroll(m_OutMessage,m_edMSG);
}
};
m_OutMessage = _T("Usb Port Initialized.\r\n");
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
GetDlgItem(IDCANCEL)->EnableWindow(false);
}
//=====================================================================
void CSO7_UtilDlg::OnBnClickedButtonTermSo7usb()
{
m_pSO7_Proto->Exit_SO7Usb();
m_OutMessage = _T("Ready - Usb Port Released");
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
OutputWithScroll(m_OutMessage,m_edMSG);
GetDlgItem(IDCANCEL)->EnableWindow(true);
}
@@ -312,15 +308,10 @@ void CSO7_UtilDlg::OnBnClickedButtonTermSo7usb()
//=====================================================================
void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine()
{
OnBnClickedButtonInitSo7usb();
//m_pSO7_Proto->so7_motion_startup(0.5, 0.5, 0.5);
m_pSO7_Proto->_start_machine();
m_OutMessage = _T("Machine Started.\r\n");
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
((CButton*)GetDlgItem(IDC_BUTTON_PROBE_ONOFF))->SetWindowTextW(_T("当前探头:激光"));
((CButton*)GetDlgItem(IDC_BUTTON_FIXTURE_ONOFF))->SetWindowTextW(_T("当前状态:夹具开"));
((CButton*)GetDlgItem(IDC_BUTTON_FIXTURE_UPDOWN))->SetWindowTextW(_T("当前状态:夹具上"));
@@ -393,8 +384,7 @@ void CSO7_UtilDlg::OnBnClickedButtonStopSo7machine()
m_pSO7_Proto->Save_SevenOcean_Inifile(csPath+_T("\\Utility_Config.ini"));
m_OutMessage = _T("Machine Stoped.");
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
OutputWithScroll(m_OutMessage,m_edMSG);
GetDlgItem(IDC_BUTTON_START_SO7MACHINE)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_STOP_SO7MACHINE)->EnableWindow(false);