From f5ce9cc08708932386463323a706c3717e464101 Mon Sep 17 00:00:00 2001 From: TAO Cheng Date: Wed, 27 Nov 2013 16:52:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EIO=E5=8F=A3=E8=AF=BB=E5=86=99?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tools/UsbUtility/Debug/UtilityDebug.Log | 23 ++++++++++ .../Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc | 41 ++++++++++-------- .../Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp | 38 +++++++++++++++- .../Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h | 3 ++ .../Hsi/Tools/UsbUtility/UsbUtil/resource.h | 7 ++- .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo | Bin 2355712 -> 2355712 bytes 6 files changed, 89 insertions(+), 23 deletions(-) diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log index 107e62a..7221f39 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -2366,3 +2366,26 @@ Init:Open device succeed . _start_machine Exit: Exit_SO7Usb Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc index 6564df8..574b7f6 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc @@ -41,10 +41,10 @@ BEGIN PUSHBUTTON "Start_Machine",IDC_BUTTON_START_SO7MACHINE,23,40,63,18 PUSHBUTTON "Stop_Machine",IDC_BUTTON_STOP_SO7MACHINE,23,75,63,18 PUSHBUTTON "Read XYZ Axis",IDC_BUTTON_SO7_READ_AXIS_XYZ,132,28,62,13 - PUSHBUTTON "Read Probe Axis",IDC_BUTTON_READ_PROBE,132,47,62,13 - PUSHBUTTON "Read V Axis",IDC_BUTTON_SO7_READ_AXIS_V,132,66,62,13 - PUSHBUTTON "Get Fixture Value",IDC_BUTTON_GET_FIXTURE_FLAG,132,85,62,13 - PUSHBUTTON "Get Reset Flag",IDC_BUTTON_SO7_GET_RESET_FLAG,132,104,62,13 + PUSHBUTTON "Read Probe Axis",IDC_BUTTON_READ_PROBE,132,42,62,13 + PUSHBUTTON "Read V Axis",IDC_BUTTON_SO7_READ_AXIS_V,130,57,62,13 + PUSHBUTTON "Get Fixture Value",IDC_BUTTON_GET_FIXTURE_FLAG,131,73,62,13 + PUSHBUTTON "Get Reset Flag",IDC_BUTTON_SO7_GET_RESET_FLAG,132,89,62,13 EDITTEXT IDC_EDIT_AXIAL_LIGHT,261,27,41,12,ES_AUTOHSCROLL | NOT WS_TABSTOP EDITTEXT IDC_EDIT_BOTTOM_LIGHT,261,41,41,12,ES_AUTOHSCROLL | NOT WS_TABSTOP EDITTEXT IDC_EDIT_RING_LIGHT,261,55,41,12,ES_AUTOHSCROLL @@ -67,9 +67,9 @@ BEGIN PUSHBUTTON "Home Worktable Right",IDC_BUTTON_RESET_WORKTABLE_RIGHT,277,173,76,14 PUSHBUTTON "Move\n To",IDC_BUTTON_MOVE_TO,359,142,32,27,BS_MULTILINE PUSHBUTTON "Auto Zoom",IDC_BUTTON_AUTO_ZOOM,359,177,32,27,BS_MULTILINE - PUSHBUTTON "Set Reset Flag",IDC_BUTTON_SET_RESET_FLAG,27,235,61,14 - PUSHBUTTON "To Get Laser",IDC_BUTTON_GET_LASER,98,235,61,14 - PUSHBUTTON "Home V",IDC_BUTTON_RESET_V,240,235,61,14 + PUSHBUTTON "Set Reset Flag",IDC_BUTTON_SET_RESET_FLAG,133,102,61,14 + PUSHBUTTON "Set outport",IDC_BUTTON_GET_LASER,181,240,61,14 + PUSHBUTTON "Home V",IDC_BUTTON_RESET_V,100,240,61,14 EDITTEXT IDC_EDIT_X_SCALE_COEFFICIENT,46,284,54,12,ES_CENTER | ES_AUTOHSCROLL EDITTEXT IDC_EDIT_Y_SCALE_COEFFICIENT,109,284,54,12,ES_CENTER | ES_AUTOHSCROLL EDITTEXT IDC_EDIT_Z_SCALE_COEFFICIENT,172,284,54,12,ES_CENTER | ES_AUTOHSCROLL @@ -77,17 +77,17 @@ BEGIN GROUPBOX "USB Control",IDC_STATIC,15,12,89,115 GROUPBOX "Config",IDC_STATIC,13,129,55,83 GROUPBOX "Get_Data",IDC_STATIC,114,13,98,115 - PUSHBUTTON "当前探头:激光",IDC_BUTTON_PROBE_ONOFF,7,459,48,20,BS_MULTILINE | NOT WS_VISIBLE - PUSHBUTTON "当前状态:夹具开",IDC_BUTTON_FIXTURE_ONOFF,7,459,48,20,BS_MULTILINE | NOT WS_VISIBLE - PUSHBUTTON "当前状态:夹具上",IDC_BUTTON_FIXTURE_UPDOWN,7,459,48,20,BS_MULTILINE | NOT WS_VISIBLE + PUSHBUTTON "当前探头:激光",IDC_BUTTON_PROBE_ONOFF,30,459,48,20,BS_MULTILINE | NOT WS_VISIBLE + PUSHBUTTON "当前状态:夹具开",IDC_BUTTON_FIXTURE_ONOFF,40,459,48,20,BS_MULTILINE | NOT WS_VISIBLE + PUSHBUTTON "当前状态:夹具上",IDC_BUTTON_FIXTURE_UPDOWN,47,459,48,20,BS_MULTILINE | NOT WS_VISIBLE GROUPBOX "Ver NO.",IDC_STATIC,252,303,145,29 LTEXT "Set Ver NO.",IDC_STATIC,272,316,39,8 GROUPBOX "R/W Data",IDC_STATIC,253,334,144,65 CONTROL "X",IDC_RADIO_SELECT_X,"Button",BS_AUTORADIOBUTTON,261,348,20,10 CONTROL "Y",IDC_RADIO_SELECT_Y,"Button",BS_AUTORADIOBUTTON,261,364,20,10 CONTROL "Z",IDC_RADIO_SELECT_Z,"Button",BS_AUTORADIOBUTTON,261,380,20,10 - PUSHBUTTON "Set Section",IDC_BUTTON_SET_SECTION,7,458,46,21,BS_MULTILINE | NOT WS_VISIBLE - PUSHBUTTON "Correction Scale",IDC_BUTTON_CORRECTION_SCALE,7,458,46,21,BS_MULTILINE | NOT WS_VISIBLE + PUSHBUTTON "Set Section",IDC_BUTTON_SET_SECTION,44,458,46,21,BS_MULTILINE | NOT WS_VISIBLE + PUSHBUTTON "Correction Scale",IDC_BUTTON_CORRECTION_SCALE,20,458,46,21,BS_MULTILINE | NOT WS_VISIBLE GROUPBOX "Light Control",IDC_STATIC,226,14,85,113 LTEXT "Top",IDC_STATIC,236,28,18,11 LTEXT "Bottom",IDC_STATIC,234,43,22,11 @@ -95,7 +95,7 @@ BEGIN LTEXT "Coaxial",IDC_STATIC,231,99,24,8 LTEXT "SegI",IDC_STATIC,236,72,16,8 LTEXT "SegII",IDC_STATIC,236,86,18,8 - GROUPBOX "Input Port Status",IDC_STATIC,321,14,72,111 + GROUPBOX "I/O Port Status",IDC_STATIC,321,14,72,111 PUSHBUTTON "Exit",IDCANCEL,366,465,39,14 LTEXT "x",IDC_STATIC,23,324,8,11 LTEXT "y",IDC_STATIC,23,338,8,11 @@ -135,8 +135,8 @@ BEGIN LTEXT "4",IDC_STATIC,337,75,8,8 LTEXT "5",IDC_STATIC,337,91,8,8 LTEXT "6",IDC_STATIC,337,107,8,8 - PUSHBUTTON "Read IO Status",IDC_BUTTON_SO7_READ_IN_PORT_STATUS,311,235,61,14 - CONTROL "Continuous",IDC_CHECK_CONTINUOUS_READ_IO_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,320,223,47,10 + PUSHBUTTON "Read IO Status",IDC_BUTTON_SO7_READ_IN_PORT_STATUS,276,240,61,14 + CONTROL "Continuous",IDC_CHECK_CONTINUOUS_READ_IO_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,279,225,47,10 CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT1,"MfcButton",WS_TABSTOP,353,24,21,14 CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT2,"MfcButton",WS_TABSTOP,353,40,21,14 CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT3,"MfcButton",WS_TABSTOP,353,56,21,14 @@ -144,11 +144,11 @@ BEGIN CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT5,"MfcButton",WS_TABSTOP,353,88,21,14 CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT6,"MfcButton",WS_TABSTOP,353,104,21,14 EDITTEXT IDC_EDIT_SO7_READ_IO_STATUS_ADDRESS,79,465,40,14,ES_AUTOHSCROLL | NOT WS_VISIBLE - LTEXT "Addr",IDC_STATIC,63,463,16,8,NOT WS_VISIBLE - PUSHBUTTON "Test Z Signal",IDC_BUTTON_SO7_TEST_Z_SIGNAL,169,235,61,14 - PUSHBUTTON "CNC Program",IDC_BUTTON_SO7_CNC_PROGRAM,281,274,52,19 + LTEXT "Addr",IDC_STATIC,120,459,16,8,NOT WS_VISIBLE + PUSHBUTTON "Test Z Signal",IDC_BUTTON_SO7_TEST_Z_SIGNAL,26,240,61,14 + PUSHBUTTON "CNC Program",IDC_BUTTON_SO7_CNC_PROGRAM,297,273,52,19 GROUPBOX "CNC",IDC_STATIC,252,265,143,34 - CONTROL "Laser ON",IDC_CHECK_SO7_TURN_ON_FFF_LASER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,112,223,47,10 + CONTROL "ON",IDC_CHECK_SO7_TURN_ON_FFF_LASER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,220,225,26,10 EDITTEXT IDC_EDIT_RWDATA_DATA,307,371,44,13,ES_AUTOHSCROLL PUSHBUTTON "Write",IDC_BUTTON_SO7_SENDDATATOFPGA,360,344,34,19 PUSHBUTTON "Read",IDC_BUTTON_SO7_READDATAFROMFPGA,360,369,34,19 @@ -160,6 +160,9 @@ BEGIN PUSHBUTTON "◢",IDC_BUTTON_SO7_MOVE_XR_YB,179,182,25,12 PUSHBUTTON "◤",IDC_BUTTON_SO7_MOVE_XL_YF,128,156,25,12 PUSHBUTTON "◣",IDC_BUTTON_SO7_MOVE_XL_YB,128,182,25,12 + COMBOBOX IDC_COMBO_OUTPORT_NUMBER,182,223,29,34,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + CONTROL "Inport",IDC_RADIO_READ_INPUT_PORT,"Button",BS_AUTORADIOBUTTON | WS_GROUP,344,227,36,10 + CONTROL "Outport",IDC_RADIO_READ_OUTPUT_PORT,"Button",BS_AUTORADIOBUTTON,344,243,41,10 END IDD_S07_UTIL_SEND_PARAMETER DIALOGEX 0, 0, 753, 481 diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp index 4a1786d..283e321 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp @@ -40,6 +40,7 @@ IMPLEMENT_DYNAMIC(CSO7_UtilDlg, CDialog) m_TestZSignalNow=FALSE; m_BeginReadIO=FALSE; m_ReadIOStatusAddr=4; + m_SetIOStatusAddr=0; m_ZsignalPosX=0; m_ZsignalPosY=0; m_ZsignalPosZ=0; @@ -140,6 +141,8 @@ BEGIN_MESSAGE_MAP(CSO7_UtilDlg, CDialog) ON_BN_CLICKED(IDC_CHECK_SO7_TURN_ON_FFF_LASER, &CSO7_UtilDlg::OnBnClickedCheckSo7TurnOnFffLaser) ON_BN_CLICKED(IDC_BUTTON_SO7_SENDDATATOFPGA, &CSO7_UtilDlg::OnBnClickedButtonSo7Senddatatofpga) ON_BN_CLICKED(IDC_BUTTON_SO7_READDATAFROMFPGA, &CSO7_UtilDlg::OnBnClickedButtonSo7Readdatafromfpga) + ON_BN_CLICKED(IDC_RADIO_READ_INPUT_PORT, &CSO7_UtilDlg::OnBnClickedRadioReadInputPort) + ON_BN_CLICKED(IDC_RADIO_READ_OUTPUT_PORT, &CSO7_UtilDlg::OnBnClickedRadioReadOutputPort) END_MESSAGE_MAP() @@ -237,7 +240,18 @@ BOOL CSO7_UtilDlg::OnInitDialog() ((CButton *)GetDlgItem(IDC_RADIO_SELECT_Y))->SetCheck(false); ((CButton *)GetDlgItem(IDC_RADIO_SELECT_Z))->SetCheck(false); + ((CButton *)GetDlgItem(IDC_RADIO_READ_INPUT_PORT))->SetCheck(true); + ((CButton *)GetDlgItem(IDC_RADIO_READ_OUTPUT_PORT))->SetCheck(false); + CString csTmp=_T(""); + ((CComboBox *)GetDlgItem(IDC_COMBO_OUTPORT_NUMBER))->ResetContent(); + for(int i=0;i<3;i++) + { + csTmp.Format(_T("O-%d"),i+1); + ((CComboBox *)GetDlgItem(IDC_COMBO_OUTPORT_NUMBER))->InsertString(i,csTmp); + } + ((CComboBox *)GetDlgItem(IDC_COMBO_OUTPORT_NUMBER))->SetCurSel(0); + ((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->ResetContent(); for(int i=0;i<16;i++) { @@ -975,8 +989,17 @@ void CSO7_UtilDlg::OnBnClickedButtonFixtureUpdown() void CSO7_UtilDlg::OnBnClickedButtonGetLaser() { - - m_pSO7_Proto->so7_motion_stop_motor_to_get_laser_data(); + m_SetIOStatusAddr=static_cast(((CComboBox *)GetDlgItem(IDC_COMBO_OUTPORT_NUMBER))->GetCurSel()); + char cSetValue(0); + if (((CButton *)GetDlgItem(IDC_CHECK_SO7_TURN_ON_FFF_LASER))->GetCheck()) + { + cSetValue=1; + } + else + { + cSetValue=0; + } + m_pSO7_Proto->_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,m_SetIOStatusAddr,cSetValue); } @@ -1247,6 +1270,17 @@ void CSO7_UtilDlg::OnEnKillfocusEditSo7ReadIoStatusAddress() m_ReadIOStatusAddr= static_cast(atoi(cTempValue)); } +//================================================================================================ +void CSO7_UtilDlg::OnBnClickedRadioReadInputPort() +{ + m_ReadIOStatusAddr=4; +} +//================================================================================================ +void CSO7_UtilDlg::OnBnClickedRadioReadOutputPort() +{ + m_ReadIOStatusAddr=6; +} + //================================================================================================ void CSO7_UtilDlg::OnBnClickedButtonSo7ReadInPortStatus() { diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h index 79d20ef..81f14e3 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h @@ -56,6 +56,7 @@ public: CProcessButton m_Button_MoveXRYB; CProcessButton m_Button_MoveXLYB; char m_ReadIOStatusAddr; + char m_SetIOStatusAddr; BOOL m_BeginReadIO; BOOL m_TestZSignalNow; long m_ZsignalPosX; @@ -120,4 +121,6 @@ public: afx_msg void OnBnClickedCheckSo7TurnOnFffLaser(); afx_msg void OnBnClickedButtonSo7Senddatatofpga(); afx_msg void OnBnClickedButtonSo7Readdatafromfpga(); + afx_msg void OnBnClickedRadioReadInputPort(); + afx_msg void OnBnClickedRadioReadOutputPort(); }; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h index af39552..0b6104c 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -151,7 +151,6 @@ #define IDC_RADIO_FAST 1093 #define IDC_RADIO_SPEED_FAST 1094 #define IDC_EDIT_DECEL_X 1095 -#define IDC_RADIO_SPEED_FAST2 1095 #define IDC_RADIO_SPEED_SYSTEM 1095 #define IDC_EDIT_DECEL_Y 1096 #define IDC_EDIT_DECEL_Z 1097 @@ -847,6 +846,7 @@ #define IDC_BUTTON_SO7_SENDDATATOFPGA 1794 #define IDC_COMBO_RWDATA_ADDR 1795 #define IDC_EDIT_MOTION_SPEEDY 1796 +#define IDC_COMBO_OUTPORT_NUMBER 1796 #define IDC_EDIT4 1797 #define IDC_EDIT_MOTION_SPEEDZ 1797 #define IDC_EDIT_MOTION_SPEEDX 1798 @@ -856,6 +856,9 @@ #define IDC_COMBO1 1802 #define IDC_COMBO_SO7_HOMEMODE 1802 #define IDC_EDIT_ZOOM_TIME 1803 +#define IDC_RADIO_READ_INPUT_PORT 1804 +#define IDC_RADIO2 1805 +#define IDC_RADIO_READ_OUTPUT_PORT 1805 // Next default values for new objects // @@ -863,7 +866,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 188 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1804 +#define _APS_NEXT_CONTROL_VALUE 1806 #define _APS_NEXT_SYMED_VALUE 104 #endif #endif diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo index 41c84269393057e0057b6832876fd421e531a7b1..70da50f6314df1ed39dacb8614453699917ebaa7 100644 GIT binary patch delta 2423 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 Y!x#rMoEgDnGFi+>CR-&wJ?fI@Ki?mT?EnA(