新增可读写不同档位限定的位移值。

This commit is contained in:
TAO Cheng
2014-07-25 16:47:36 +08:00
parent ae262c9015
commit 4bb02c6002
17 changed files with 431 additions and 56 deletions
@@ -126,7 +126,8 @@ enum MOTOR_CMD
CT_SET_MOTION_FINISHED_CNTS,
CT_GET_MOTION_FINISHED_CNTS,
CT_SET_MOTION_SEGMENT_DIS,
CT_GET_MOTION_SEGMENT_DIS,
CT_END
};
@@ -207,7 +207,12 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP)
break;
case CT_GET_MOTION_FINISHED_CNTS:
_process_SO7_CMD_GET_MOTION_CNTS();
break;
case CT_GET_MOTION_SEGMENT_DIS:
_process_SO7_CMD_GET_MOTION_SEGMENT_DIS(ep_buff[EP_02_CMD_IDX]._save_send_cmd1+1,ep_buff[EP_02_CMD_IDX]._save_send_cmd2);
break;
default:
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_02_CMD_IDX]._save_send_cmd : %X \r\n", ep_buff[EP_02_CMD_IDX]._save_send_cmd);
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_81_DATA_IDX]._buffer[0] : %X \r\n", ep_buff[EP_81_DATA_IDX]._buffer[0]);
@@ -551,6 +556,16 @@ CSO7_Proto::CSO7_Proto()
g_machine.s_machine_config.zm_axis._SpeedFast=2000;
g_machine.s_machine_config.zm_axis._SpeedSlow=800;
g_machine.s_machine_config.zm_axis._speed._short_=0;
g_machine.s_machine_config.x_axis._MotionSegmentDis[0]=100;
g_machine.s_machine_config.x_axis._MotionSegmentDis[1]=1000;
g_machine.s_machine_config.x_axis._MotionSegmentDis[2]=5000;
g_machine.s_machine_config.y_axis._MotionSegmentDis[0]=100;
g_machine.s_machine_config.y_axis._MotionSegmentDis[1]=1000;
g_machine.s_machine_config.y_axis._MotionSegmentDis[2]=5000;
g_machine.s_machine_config.z_axis._MotionSegmentDis[0]=100;
g_machine.s_machine_config.z_axis._MotionSegmentDis[1]=1000;
g_machine.s_machine_config.z_axis._MotionSegmentDis[2]=5000;
g_machine.MotionType=-1;
g_machine.s_status._bIsZMMotionFinished=0;
@@ -3298,6 +3313,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_usb_cmd(int iEP_Base)
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];
ep_buff[iEP_Base]._save_send_cmd1 = ep_buff[iEP_Base]._buffer[2];
ep_buff[iEP_Base]._save_send_cmd2= ep_buff[iEP_Base]._buffer[3];
//TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]);
@@ -3330,6 +3346,7 @@ SSI_STATUS_MOTION CSO7_Proto::_write_usb_data_only(int iEP_Base)
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];
ep_buff[iEP_Base]._save_send_cmd1 = ep_buff[iEP_Base]._buffer[2];
ep_buff[iEP_Base]._save_send_cmd2 = ep_buff[iEP_Base]._buffer[3];
//TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]);
@@ -6415,6 +6432,62 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_CONTROL_MODE(char axis_type)
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex,long _lDis)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
char cBuff(0);
int index(0);
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_MOTOR;
index++;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_SET_MOTION_SEGMENT_DIS;
index++;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = axis_type-1;
index++;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = _SegmentIndex;
index++;
cBuff = (_lDis>>16) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
cBuff = (_lDis>>8) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
cBuff = _lDis & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
ep_buff[EP_02_CMD_IDX]._size = index;
ep_buff[EP_81_DATA_IDX]._size = 0x00;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_GET_MOTION_SEGMENT_DIS;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = axis_type-1;
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = _SegmentIndex;
ep_buff[EP_02_CMD_IDX]._size = 0x04;
ep_buff[EP_82_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_X()
{
@@ -6752,7 +6825,18 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_FIRMWARE_VERSION_INFO()
}
else if (g_machine.FirmwareInfo[3]=='7')
{
g_machine.FirmwareVer=FirmwareVer_7_X;
if (g_machine.FirmwareInfo[5]=='1')
{
g_machine.FirmwareVer=FirmwareVer_7_A;
}
else if (g_machine.FirmwareInfo[5]=='0' && g_machine.FirmwareInfo[6]=='9' )
{
g_machine.FirmwareVer=FirmwareVer_7_9;
}
else
{
g_machine.FirmwareVer=FirmwareVer_7_X;
}
}
else
{
@@ -6836,4 +6920,26 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_CONTROL_MODE()
{
g_machine.FPGAData = *(ep_buff[EP_82_DATA_IDX]._buffer);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_MOTION_SEGMENT_DIS(BYTE axis_type,BYTE _SegmentIndex)
{
BYTE rBuffer[3] = {0};
rBuffer[0]=*(ep_buff[EP_82_DATA_IDX]._buffer);
rBuffer[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
rBuffer[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
if (axis_type==E_ACTIVE_AXIS_X)
{
g_machine.s_machine_config.x_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
}
else if (axis_type==E_ACTIVE_AXIS_Y)
{
g_machine.s_machine_config.y_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
}
else
{
g_machine.s_machine_config.z_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
}
return SSI_STATUS_MOTION_NORMAL;
}
@@ -80,6 +80,8 @@ enum EFirmwareVer
FirmwareVer_3_X=0,
FirmwareVer_6_X,
FirmwareVer_7_X,
FirmwareVer_7_9,//add control mode
FirmwareVer_7_A,//add segment dis
FirmwareVer_Total
};
enum ESO7_AXIS_TYPE
@@ -164,6 +166,7 @@ struct s_so7_axis_config // axis configuration
double _MoveToSpeed[2];
double _MotionSpeedScale;
long _MotionSegmentDis[3];
long _scale_range;
double _neg_working_limit;
double _pos_working_limit;
@@ -382,7 +385,8 @@ struct struct_so7_ep_buff
int _ep;
BYTE _save_send_cmd;
BYTE _save_send_cmd0;
BYTE _save_send_cmd1;
BYTE _save_send_cmd1;
BYTE _save_send_cmd2;
char *_buffer; // MAX_BUFF_SIZE
int _size;
void *_async_context;
@@ -576,6 +580,8 @@ public:
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_MOTION_CNTS(char _Speedgear=0);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_CONTROL_MODE(char axis_type,char ControlMode);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_CONTROL_MODE(char axis_type);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex,long _lDis);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex);
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_X();
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_Y();
@@ -618,6 +624,8 @@ public:
static SSI_STATUS_MOTION _process_SO7_CMD_WRITE_TRIG_PULSE_PARA();
static SSI_STATUS_MOTION _process_SO7_CMD_GET_MOTION_CNTS();
static SSI_STATUS_MOTION _process_SO7_CMD_GET_CONTROL_MODE();
static SSI_STATUS_MOTION _process_SO7_CMD_GET_MOTION_SEGMENT_DIS(BYTE axis_type,BYTE _SegmentIndex);
};
#endif
@@ -4755,3 +4755,11 @@ Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
@@ -25,21 +25,21 @@ SPEED_SLOW_X2=2.000
;
SPEED_BASE_X3=2
SPEED_MAX_X3=0
SPEED_START_X3=0
SPEED_FRESH_X3=100
SPEED_SLOW_X3=0.001
SPEED_START_X3=8
SPEED_FRESH_X3=10
SPEED_SLOW_X3=0.050
;
SPEED_BASE_X4=2
SPEED_MAX_X4=0
SPEED_START_X4=5
SPEED_FRESH_X4=100
SPEED_SLOW_X4=0.001
SPEED_FRESH_X4=10
SPEED_SLOW_X4=0.009
;
SPEED_BASE_X5=2
SPEED_MAX_X5=0
SPEED_START_X5=50
SPEED_FRESH_X5=100
SPEED_SLOW_X5=0.000
SPEED_FRESH_X5=10
SPEED_SLOW_X5=0.100
;
SPEED_BASE_Y1=20
SPEED_MAX_Y1=10
@@ -55,21 +55,21 @@ SPEED_SLOW_Y2=1.000
;
SPEED_BASE_Y3=2
SPEED_MAX_Y3=0
SPEED_START_Y3=0
SPEED_FRESH_Y3=100
SPEED_SLOW_Y3=0.001
SPEED_START_Y3=8
SPEED_FRESH_Y3=10
SPEED_SLOW_Y3=0.050
;
SPEED_BASE_Y4=2
SPEED_BASE_Y4=0
SPEED_MAX_Y4=0
SPEED_START_Y4=10
SPEED_FRESH_Y4=100
SPEED_SLOW_Y4=0.001
SPEED_FRESH_Y4=10
SPEED_SLOW_Y4=0.009
;
SPEED_BASE_Y5=2
SPEED_BASE_Y5=1
SPEED_MAX_Y5=0
SPEED_START_Y5=50
SPEED_FRESH_Y5=100
SPEED_SLOW_Y5=0.000
SPEED_FRESH_Y5=10
SPEED_SLOW_Y5=0.100
;
SPEED_BASE_Z1=20
SPEED_MAX_Z1=100
@@ -86,28 +86,28 @@ SPEED_SLOW_Z2=1.500
SPEED_BASE_Z3=3
SPEED_MAX_Z3=5
SPEED_START_Z3=5
SPEED_FRESH_Z3=100
SPEED_SLOW_Z3=0.001
SPEED_FRESH_Z3=10
SPEED_SLOW_Z3=0.100
;
SPEED_BASE_Z4=2
SPEED_BASE_Z4=0
SPEED_MAX_Z4=0
SPEED_START_Z4=18
SPEED_FRESH_Z4=100
SPEED_SLOW_Z4=0.001
SPEED_FRESH_Z4=10
SPEED_SLOW_Z4=0.009
;
SPEED_BASE_Z5=2
SPEED_BASE_Z5=5
SPEED_MAX_Z5=6
SPEED_START_Z5=133
SPEED_FRESH_Z5=100
SPEED_SLOW_Z5=0.000
SPEED_FRESH_Z5=10
SPEED_SLOW_Z5=0.100
;
X_MOTOR_PRECISION=0.008
Y_MOTOR_PRECISION=0.009
X_MOTOR_PRECISION=0.004
Y_MOTOR_PRECISION=0.008
Z_MOTOR_PRECISION=0.004
;
X_MOTOR_WHEELBASE=1.875
Y_MOTOR_WHEELBASE=1.875
Z_MOTOR_WHEELBASE=1.000
X_MOTOR_WHEELBASE=1.500
Y_MOTOR_WHEELBASE=1.500
Z_MOTOR_WHEELBASE=1.500
;
MOTOR_PULSE_NUM=10000
;
@@ -275,9 +275,9 @@ BEGIN
EDITTEXT IDC_EDIT_POS_WORKLIMIT_X,118,386,40,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_POS_WORKLIMIT_Y,180,386,40,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_POS_WORKLIMIT_Z,243,386,40,12,ES_AUTOHSCROLL
PUSHBUTTON "发送到\r控制器",IDC_BUTTON_SAVE_PARAMETER,46,413,50,24,BS_MULTILINE
PUSHBUTTON "读取控制器\r参数",IDC_BUTTON_READ_PARAMETER_FROM_CONTROLLER,120,413,50,24,BS_MULTILINE
PUSHBUTTON "另存为...",IDC_BUTTON_SAVE,194,413,50,24
PUSHBUTTON "发送到\r控制器",IDC_BUTTON_SAVE_PARAMETER,96,420,50,24,BS_MULTILINE
PUSHBUTTON "读取控制器\r参数",IDC_BUTTON_READ_PARAMETER_FROM_CONTROLLER,164,420,50,24,BS_MULTILINE
PUSHBUTTON "另存为...",IDC_BUTTON_SAVE,232,420,50,24
PUSHBUTTON "Exit",IDCANCEL,699,449,50,14,NOT WS_VISIBLE
LTEXT "Z=",IDC_STATIC,229,387,10,8
LTEXT "Y=",IDC_STATIC,90,302,10,8
@@ -333,6 +333,10 @@ BEGIN
LTEXT "s",IDC_STATIC,506,408,8,8
CONTROL "럽蕨",IDC_CHECK_SO7_MOTION_PARA_MOVETO_REVERSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,602,408,32,10
GROUPBOX "Static",IDC_STATIC,303,387,435,76
CONTROL "X闭环",IDC_CHECK_SO7_CONTROL_MODE_X,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,416,36,10
CONTROL "Y闭环",IDC_CHECK_SO7_CONTROL_MODE_Y,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,429,36,10
CONTROL "Z闭环",IDC_CHECK_SO7_CONTROL_MODE_Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,442,36,10
GROUPBOX "控制模式",IDC_STATIC,16,404,55,51
END
IDD_SO7_UTIL_AUTO_ZOOM DIALOGEX 0, 0, 426, 460
@@ -555,9 +559,9 @@ BEGIN
EDITTEXT IDC_EDIT_Z_AXIS,233,243,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_ZM_AXIS,324,243,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
GROUPBOX "Move To Position",IDC_STATIC,18,119,236,105
GROUPBOX "Position",IDC_STATIC,18,227,480,36
GROUPBOX "Position",IDC_STATIC,18,227,483,36
PUSHBUTTON "헌쥐",IDC_BUTTON_ZERO_SET,396,241,56,13
GROUPBOX "往返性能测试",IDC_STATIC,260,119,238,106
GROUPBOX "往返性能测试",IDC_STATIC,260,119,240,106
LTEXT "꿎桿약잼",IDC_STATIC,324,135,33,8
LTEXT "꿎桿늴鑒",IDC_STATIC,327,161,33,8
EDITTEXT IDC_EDIT_REPRETEST,21,280,429,166,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
@@ -585,17 +589,21 @@ BEGIN
CONTROL "ErrPos",IDC_CHECK_SO7_MOVETO_FPGADATA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,458,243,34,10
CONTROL "菱땡헌쥐",IDC_CHECK_SO7_MOTION_AUTO_SET_ZERO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,104,131,63,10
GROUPBOX "도貫",IDC_STATIC,27,68,149,41
GROUPBOX "定位速度",IDC_STATIC,18,59,479,60
GROUPBOX "定位速度",IDC_STATIC,18,59,482,60
GROUPBOX "Log",IDC_STATIC,16,268,487,183
EDITTEXT IDC_EDIT_SO7_MOTION_START_CNTS,370,21,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_SO7_MOTION_STOP_CNTS,370,40,40,14,ES_AUTOHSCROLL
PUSHBUTTON "Set",IDC_BUTTON_SO7_MOTION_SET_CNTS,420,20,50,14
PUSHBUTTON "Get",IDC_BUTTON_SO7_MOTION_GET_CNTS,420,40,50,14
GROUPBOX "Motion Cnts",IDC_STATIC,324,10,174,48
GROUPBOX "Motion Cnts",IDC_STATIC,324,10,176,48
GROUPBOX "頓땡잚謹",IDC_STATIC,188,10,129,48
GROUPBOX "데貫",IDC_STATIC,18,10,160,48
LTEXT "Start",IDC_STATIC,343,24,17,8
LTEXT "Stop",IDC_STATIC,343,41,16,8
GROUPBOX "档位区段距离",IDC_STATIC,505,10,230,109
CONTROL "",IDC_LIST_SO7_MOTION_SEGMENT_DIS,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,514,24,214,68
PUSHBUTTON "设置参数",IDC_BUTTON_SO7_MOTION_SET_SEGMENT_DIS,609,98,50,14
PUSHBUTTON "读取参数",IDC_BUTTON_SO7_MOTION_GET_SEGMENT_DIS,673,98,50,14
END
IDD_SO7_UTIL_IMAGE_DLL DIALOGEX 0, 0, 377, 184
@@ -2531,8 +2539,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 8,0,0,0
PRODUCTVERSION 8,0,0,0
FILEVERSION 7,0,1,0
PRODUCTVERSION 7,0,1,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -2549,12 +2557,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Hexagon Metrology"
VALUE "FileDescription", "Utility for Hexagon Metrology"
VALUE "FileVersion", "8.0.0.0"
VALUE "FileVersion", "7.0.1.0"
VALUE "InternalName", "Usb_Util.exe"
VALUE "LegalCopyright", "Copyright 2014 Hexagon Metrology."
VALUE "OriginalFilename", "Usb_Util.exe"
VALUE "ProductName", "Utility"
VALUE "ProductVersion", "8.0.0.0"
VALUE "ProductVersion", "7.0.1.0"
END
END
BLOCK "VarFileInfo"
@@ -4,6 +4,7 @@
#include "stdafx.h"
#include "afxdialogex.h"
#include "resource.h"
#include "EditableListCtrl.h"
#include "ProcessButton.h"
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "..\..\..\SevenOcean\CMMIO_SERIAL.H"
@@ -5,11 +5,20 @@
#include "resource.h"
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "..\..\..\SevenOcean\CMMIO_SERIAL.H"
#include "EditableListCtrl.h"
#include "ProcessButton.h"
#include "SO7_UtilDlg.h"
#include "SO7_VolComp.h"
#include "SO7_Move_Location.h"
enum E_UPDATE_LIST_CONTROL_TYPE
{
E_LISTCTRL_TITLE,
E_LISTCTRL_NO,
E_LISTCTRL_UPDATEDATA,
E_LISTCTRL_SAVEDATA,
E_LISTCTRL_TOTAL
};
#define RETRYNUM 3
// CSO7_Move_Location ¶Ô»°¿ò
extern CSO7_Proto* m_pSO7_Proto;
@@ -48,6 +57,7 @@ void CSO7_Move_Location::DoDataExchange(CDataExchange* pDX)
DDX_Text(pDX, IDC_EDIT_REPETEST_ERRORRANGE, m_RepeTest_ErrRange);
DDX_Control(pDX, IDC_EDIT_REPRETEST, m_edit_RepeTest);
DDX_Control(pDX, IDC_LIST_SO7_MOTION_SEGMENT_DIS, m_ParaList);
}
@@ -86,6 +96,8 @@ BEGIN_MESSAGE_MAP(CSO7_Move_Location, CMFCPropertyPage)
ON_BN_CLICKED(IDC_RADIO_SO7_MOVE_SPEED_GEAR5, &CSO7_Move_Location::OnBnClickedRadioSo7MoveSpeedGear5)
ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_SET_CNTS, &CSO7_Move_Location::OnBnClickedButtonSo7MotionSetCnts)
ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_GET_CNTS, &CSO7_Move_Location::OnBnClickedButtonSo7MotionGetCnts)
ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_SET_SEGMENT_DIS, &CSO7_Move_Location::OnBnClickedButtonSo7MotionSetSegmentDis)
ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_GET_SEGMENT_DIS, &CSO7_Move_Location::OnBnClickedButtonSo7MotionGetSegmentDis)
END_MESSAGE_MAP()
// CSO7_Move_Location ÏûÏ¢´¦Àí³ÌÐò
@@ -157,6 +169,19 @@ BOOL CSO7_Move_Location::OnInitDialog()
((CEdit*)GetDlgItem(IDC_EDIT_SO7_MOTION_START_CNTS))->SetWindowTextW(_T("30"));
((CEdit*)GetDlgItem(IDC_EDIT_SO7_MOTION_STOP_CNTS))->SetWindowTextW(_T("5"));
m_UpdateListControl(E_LISTCTRL_TITLE);
m_UpdateListControl(E_LISTCTRL_NO);
if (m_pSO7_Proto->g_machine.FirmwareVer<FirmwareVer_7_X)
{
GetDlgItem(IDC_BUTTON_SO7_MOTION_SET_CNTS)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_MOTION_GET_CNTS)->EnableWindow(FALSE);
}
if (m_pSO7_Proto->g_machine.FirmwareVer<FirmwareVer_7_A)
{
GetDlgItem(IDC_BUTTON_SO7_MOTION_SET_SEGMENT_DIS)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_MOTION_GET_SEGMENT_DIS)->EnableWindow(FALSE);
}
UpdateData(FALSE);
return TRUE;
}
@@ -2746,3 +2771,133 @@ void CSO7_Move_Location::OnBnClickedCheckSo7MovetoFpgadata()
}
//=====================================================================
void CSO7_Move_Location::m_UpdateListControl(int _type)
{
switch(_type)
{
case E_LISTCTRL_TITLE:
{
RECT m_rect;
m_ParaList.GetClientRect(&m_rect); //获取list的客户区
m_ParaList.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); //设置list风格
m_ParaList.InsertColumn(0,_T("档位"),LVCFMT_LEFT, m_rect.right*1/7);
m_ParaList.InsertColumn(1,_T("X(mm)(小于)"),LVCFMT_LEFT, m_rect.right*2/7);
m_ParaList.InsertColumn(2,_T("Y(mm)(小于)"),LVCFMT_LEFT, m_rect.right*2/7);
m_ParaList.InsertColumn(3,_T("Z(mm)(小于)"),LVCFMT_LEFT, m_rect.right*2/7);
break;
}
case E_LISTCTRL_NO:
{
m_ParaListRows=0;
m_ParaList.InsertItem(m_ParaListRows++,_T("4"));
m_ParaList.InsertItem(m_ParaListRows++,_T("3"));
m_ParaList.InsertItem(m_ParaListRows++,_T("2"));
m_ParaList.SetEditableItemRange(0,m_ParaListRows-1,1,3);
m_ParaList.SetColorStyleItemRange(0,m_ParaListRows-1,0,2);
break;
}
case E_LISTCTRL_UPDATEDATA:
{
int iRow=0;
int iCol=1;
CString cStr("");
for (int iAxis=0;iAxis<3;iAxis++)
{
for (int iIndex=0;iIndex<3;iIndex++)
{
cStr.Format(_T("%.4f"),m_SegmentDis[iAxis][iIndex]);
m_ParaList.SetItemText(iRow,iCol,cStr);
iRow++;
}
iRow=0;
iCol++;
}
break;
}
case E_LISTCTRL_SAVEDATA:
{
UpdateData(TRUE);
USES_CONVERSION;
const char* cTemp;
CString cStr("");
int iRow=0;
int iCol=1;
for (int iAxis=0;iAxis<3;iAxis++)
{
for (int iIndex=0;iIndex<3;iIndex++)
{
cStr=m_ParaList.GetItemText(iRow,iCol);
cTemp=T2A(cStr);
m_SegmentDis[iAxis][iIndex]=atof(cTemp);
iRow++;
}
iRow=0;
iCol++;
}
iRow++;
break;
}
default:break;
}
}
//=====================================================================
void CSO7_Move_Location::OnBnClickedButtonSo7MotionSetSegmentDis()
{
m_UpdateListControl(E_LISTCTRL_SAVEDATA);
for (char iIndex=0;iIndex<3;iIndex++)
{
m_pSO7_Proto->g_machine.s_machine_config.x_axis._MotionSegmentDis[iIndex]=
m_pSO7_Proto->MMtoScale(m_SegmentDis[0][iIndex],m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_MOTION_SEGMENT_DIS(E_ACTIVE_AXIS_X,iIndex
,m_pSO7_Proto->g_machine.s_machine_config.x_axis._MotionSegmentDis[iIndex]);
Sleep(20);
}
for (char iIndex=0;iIndex<3;iIndex++)
{
m_pSO7_Proto->g_machine.s_machine_config.y_axis._MotionSegmentDis[iIndex]=
m_pSO7_Proto->MMtoScale(m_SegmentDis[1][iIndex],m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_MOTION_SEGMENT_DIS(E_ACTIVE_AXIS_Y,iIndex
,m_pSO7_Proto->g_machine.s_machine_config.y_axis._MotionSegmentDis[iIndex]);
Sleep(20);
}
for (char iIndex=0;iIndex<3;iIndex++)
{
m_pSO7_Proto->g_machine.s_machine_config.z_axis._MotionSegmentDis[iIndex]=
m_pSO7_Proto->MMtoScale(m_SegmentDis[2][iIndex],m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_MOTION_SEGMENT_DIS(E_ACTIVE_AXIS_Z,iIndex
,m_pSO7_Proto->g_machine.s_machine_config.z_axis._MotionSegmentDis[iIndex]);
Sleep(20);
}
}
void CSO7_Move_Location::OnBnClickedButtonSo7MotionGetSegmentDis()
{
for (char iIndex=0;iIndex<3;iIndex++)
{
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_MOTION_SEGMENT_DIS(E_ACTIVE_AXIS_X,iIndex);
m_SegmentDis[0][iIndex]=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.s_machine_config.x_axis._MotionSegmentDis[iIndex]
,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
Sleep(20);
}
for (char iIndex=0;iIndex<3;iIndex++)
{
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_MOTION_SEGMENT_DIS(E_ACTIVE_AXIS_Y,iIndex);
m_SegmentDis[1][iIndex]=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.s_machine_config.y_axis._MotionSegmentDis[iIndex]
,m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
Sleep(20);
}
for (char iIndex=0;iIndex<3;iIndex++)
{
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_MOTION_SEGMENT_DIS(E_ACTIVE_AXIS_Z,iIndex);
m_SegmentDis[2][iIndex]=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.s_machine_config.z_axis._MotionSegmentDis[iIndex]
,m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
Sleep(20);
}
m_UpdateListControl(E_LISTCTRL_UPDATEDATA);
}
@@ -19,6 +19,11 @@ protected:
virtual BOOL OnSetActive();
virtual BOOL OnKillActive();
DECLARE_MESSAGE_MAP()
private:
CEditableListCtrl m_ParaList;
int m_ParaListRows;
void m_UpdateListControl(int _type);
double m_SegmentDis[3][3];
public:
double m_move_to_x;
double m_move_to_y;
@@ -111,4 +116,6 @@ public:
afx_msg void OnBnClickedRadioSo7MoveSpeedGear5();
afx_msg void OnBnClickedButtonSo7MotionSetCnts();
afx_msg void OnBnClickedButtonSo7MotionGetCnts();
afx_msg void OnBnClickedButtonSo7MotionSetSegmentDis();
afx_msg void OnBnClickedButtonSo7MotionGetSegmentDis();
};
@@ -232,7 +232,12 @@ BOOL CSO7_Send_Parameter::OnInitDialog()
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA4))->SetWindowTextW(_T("Ë¢ÐÂÖÜÆÚ"));
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA5))->SetWindowTextW(_T("¼õËÙ¾àÀë"));
}
if (m_pSO7_Proto->g_machine.FirmwareVer<FirmwareVer_7_9)
{
GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_X)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Y)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Z)->EnableWindow(FALSE);
}
return TRUE; // return TRUE unless you set the focus to a control
}
@@ -318,6 +323,7 @@ void CSO7_Send_Parameter::OnBnClickedButtonBrowse()
//================================================================
void CSO7_Send_Parameter::OnBnClickedButtonSaveParameter()
{
UpdateControlMode(1);
ChangeParameterOnEdit();
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,0);
Sleep(PAUSE_TIME_CHANGE_PARAMETER);
@@ -402,7 +408,8 @@ void CSO7_Send_Parameter::OnBnClickedButtonSave()
//================================================================
void CSO7_Send_Parameter::OnBnClickedButtonReadParameterFromController()
{
// TODO: Add your control notification handler code here
UpdateControlMode(0);
ChangeParameterOnEdit();
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 0);
@@ -1036,4 +1043,70 @@ void CSO7_Send_Parameter::OnBnClickedCancel()
m_pSO7_Proto->Save_SevenOcean_Inifile(csPath+_T("\\Utility_Config.ini"));
CMFCPropertyPage::OnCancel();
}
//=====================================================================================
void CSO7_Send_Parameter::UpdateControlMode(int _Type)
{
if (m_pSO7_Proto->g_machine.FirmwareVer>=FirmwareVer_7_9)
{
if (_Type==1)
{
if (((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_X))->GetCheck())
{
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONTROL_MODE(E_AXIS_X,0);
}
else
{
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONTROL_MODE(E_AXIS_X,1);
}
Sleep(20);
if (((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Y))->GetCheck())
{
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONTROL_MODE(E_AXIS_Y,0);
}
else
{
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONTROL_MODE(E_AXIS_Y,1);
}
Sleep(20);
if (((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Z))->GetCheck())
{
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONTROL_MODE(E_AXIS_Z,0);
}
else
{
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONTROL_MODE(E_AXIS_Z,1);
}
Sleep(20);
}
else
{
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_CONTROL_MODE(E_AXIS_X);
if (m_pSO7_Proto->g_machine.FPGAData==1)
{
((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_X))->SetCheck(FALSE);
}
else
{
((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_X))->SetCheck(TRUE);
}
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_CONTROL_MODE(E_AXIS_Y);
if (m_pSO7_Proto->g_machine.FPGAData==1)
{
((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Y))->SetCheck(FALSE);
}
else
{
((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Y))->SetCheck(TRUE);
}
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_CONTROL_MODE(E_AXIS_Z);
if (m_pSO7_Proto->g_machine.FPGAData==1)
{
((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Z))->SetCheck(FALSE);
}
else
{
((CButton *)GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Z))->SetCheck(TRUE);
}
}
}
}
@@ -87,6 +87,7 @@ public:
void ShowParameterOnEdit();
void ChangeParameterOnEdit();
void UpdateControlMode(int _Type);
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedButtonBrowse();
@@ -7,6 +7,7 @@
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "..\..\..\SevenOcean\CAutoZoom.h"
#include "ProcessButton.h"
#include "EditableListCtrl.h"
#include "DrawGraph.h"
#include "SO7_Send_Parameter.h"
#include "SO7_Automatic_Zoom.h"
@@ -18,7 +19,6 @@
#include "So7_Util_Program.h"
#include "So7_Motion_Pages.h"
#include "ListCtrlItemEdit.h"
#include "EditableListCtrl.h"
#include "SetSo7MotionConfig.h"
#include "So7_Config_Pages.h"
#include "So7_XBoxController.h"
@@ -6,6 +6,7 @@
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "..\..\..\SevenOcean\CMMIO_SERIAL.H"
#include "DrawGraph.h"
#include "EditableListCtrl.h"
#include "ProcessButton.h"
#include "SO7_UtilDlg.h"
#include "SO7_Send_Parameter.h"
@@ -10,6 +10,13 @@
extern CSO7_Proto* m_pSO7_Proto;
enum E_UPDATE_LIST_CONTROL_TYPE
{
E_LISTCTRL_TITLE,
E_LISTCTRL_NO,
E_LISTCTRL_CONTENT,
E_LISTCTRL_TOTAL
};
// CSo7_Util_External_Trig dialog
IMPLEMENT_DYNAMIC(CSo7_Util_External_Trig, CDialog)
@@ -2,13 +2,6 @@
// CSo7_Util_External_Trig dialog
enum E_UPDATE_LIST_CONTROL_TYPE
{
E_LISTCTRL_TITLE,
E_LISTCTRL_NO,
E_LISTCTRL_CONTENT,
E_LISTCTRL_TOTAL
};
class CSo7_Util_External_Trig : public CDialog
{
DECLARE_DYNAMIC(CSo7_Util_External_Trig)
@@ -493,6 +493,7 @@
#define IDC_CHECK_TEST_KEYENCE_LK_G_PROGRAM1 1394
#define IDC_CHECK_SO7_OUT_PORT 1394
#define IDC_CHECK_LKG5000_CONTINUE_READ2 1394
#define IDC_CHECK_SO7_CONTROL_MODE_X 1394
#define IDC_BUTTON_MANUAL_HOME 1395
#define IDC_CHECK_TEST_KEYENCE_LK_G_PROGRAM2 1395
#define IDC_CHECK_ 1396
@@ -938,6 +939,7 @@
#define IDC_CHECK3 1819
#define IDC_CHECK_SO7_MOTION_AUTO_SET_ZERO 1819
#define IDC_CHECK_SO7_TOP_LIGHT_ON 1819
#define IDC_CHECK_SO7_CONTROL_MODE_Y 1819
#define IDC_LIST_SO7_MOTION_CONFIG 1820
#define IDC_CHECK_SO7_BOTTOM_LIGHT_ON 1820
#define IDC_CHECK_SO7_TOP_LIGHT_ON2 1820
@@ -1003,8 +1005,10 @@
#define IDC_BUTTON_SO7_TRIGPULSE_WRITE_PARA 1854
#define IDC_BUTTON5 1855
#define IDC_BUTTON_SO7_TRIGPULSE_READ_PARA 1855
#define IDC_BUTTON_SO7_MOTION_GET_SEGMENT_DIS 1855
#define IDC_BUTTON4 1856
#define IDC_BUTTON_SET_SCALE_COEFFICIENT 1856
#define IDC_BUTTON_SO7_MOTION_SET_SEGMENT_DIS 1856
#define IDC_BUTTON_STIL_GET_DATA 1857
#define IDC_EDIT_STIL_INTERVAL 1858
#define IDC_CHECK_STIL_CONTINUE_GET_DATA 1859
@@ -1022,9 +1026,11 @@
#define IDC_EDIT_SO7_EXTRIG_TEST_TIMES 1872
#define IDC_EDIT_SO7_MOTION_STOP_CNTS 1873
#define IDC_EDIT_SO7_MOTION_START_CNTS 1874
#define IDC_EDIT2 1875
#define IDC_EDIT_ART_PCI8622_LAST_CHANNEL 1875
#define IDC_EDIT_ART_PCI8622_FIRST_CHANNEL 1876
#define IDC_LIST_SO7_MOTION_SEGMENT_DIS 1877
#define IDC_CHECK4 1878
#define IDC_CHECK_SO7_CONTROL_MODE_Z 1878
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
#define ID_EDIT_SO7_CONFIG_MOTION 32741
@@ -1034,7 +1040,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 193
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1877
#define _APS_NEXT_CONTROL_VALUE 1879
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif