新增外触发测试功能。

This commit is contained in:
TAO Cheng
2014-07-07 16:28:28 +08:00
parent 7c3f60c985
commit e81ff3e991
15 changed files with 370 additions and 52 deletions
@@ -123,6 +123,10 @@ enum MOTOR_CMD
CT_GET_INTERRUPT_MSG,
CT_SET_INTERRUPT_MSG,
CT_SET_GETINTERRUPTMSG_METHOD,
CT_SET_MOTION_FINISHED_CNTS,
CT_GET_MOTION_FINISHED_CNTS,
CT_END
};
@@ -205,7 +205,9 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP)
case CT_GET_INTERRUPT_MSG:
_process_SO7_CMD_GET_INTERRUPT_MSG(ep_buff[EP_02_CMD_IDX]._save_send_cmd1);
break;
case CT_GET_MOTION_FINISHED_CNTS:
_process_SO7_CMD_GET_MOTION_CNTS();
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]);
@@ -512,6 +514,18 @@ CSO7_Proto::CSO7_Proto()
g_machine.Light_Switch=0;
g_machine.SEQ_NUMBER=0;
g_machine.Arm_MotionStartCnts[0]=30;
g_machine.Arm_MotionStartCnts[1]=50;
g_machine.Arm_MotionStartCnts[2]=60;
g_machine.Arm_MotionStartCnts[3]=70;
g_machine.Arm_MotionStartCnts[4]=80;
g_machine.Arm_MotionStopCnts[0]=5;
g_machine.Arm_MotionStopCnts[1]=10;
g_machine.Arm_MotionStopCnts[2]=15;
g_machine.Arm_MotionStopCnts[3]=20;
g_machine.Arm_MotionStopCnts[4]=20;
g_machine.Arm_MotionSpeedGear=0;//4,3,2,1,5
g_machine.s_machine_config.x_axis._MoveToSpeed[0]=0.0;
g_machine.s_machine_config.x_axis._MoveToSpeed[1]=0.0;
g_machine.s_machine_config.x_axis._MotionSpeedScale=1.0;
@@ -3416,7 +3430,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_init_firmware_para()
CString csStr(csAStr);
g_pLogger->SendAndFlushWithTime(csStr);
}
if (g_machine.FirmwareVer==FirmwareVer_6_X)
if (g_machine.FirmwareVer>=FirmwareVer_6_X)
{
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X,E_WRITE_ACCURA_ERR,static_cast<char>(g_machine.s_machine_config.motion.m_AccuraErrPulseX));
Sleep(MIN_SLEEP_TIME);
@@ -3424,12 +3438,12 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_init_firmware_para()
Sleep(MIN_SLEEP_TIME);
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z,E_WRITE_ACCURA_ERR,static_cast<char>(g_machine.s_machine_config.motion.m_AccuraErrPulseZ));
Sleep(MIN_SLEEP_TIME);
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_X));
Sleep(MIN_SLEEP_TIME);
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_Y));
Sleep(MIN_SLEEP_TIME);
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_Z));
Sleep(MIN_SLEEP_TIME);
//_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_X));
//Sleep(MIN_SLEEP_TIME);
//_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_Y));
//Sleep(MIN_SLEEP_TIME);
//_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_Z));
//Sleep(MIN_SLEEP_TIME);
}
}
else
@@ -3615,6 +3629,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home_R()
{
g_machine.z._pos_fixed._long_=lMoveToDis;
}
so7_motion_clear_finished_flag();
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
//========================================
INT lSleep = 20;
@@ -3753,6 +3768,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_R(double dRad,bool bWait)
{
g_machine.z._pos_fixed._long_=lMoveToDis;
}
so7_motion_clear_finished_flag();
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
g_machine.MotionType=EMSG_STOPXYZ_1_MOVETOXYZ;
@@ -4105,6 +4121,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY,
g_machine.z._pos_fixed._long_=Z.to-Z.from;
// _calculate_straightline_motion(g_machine.s_machine_config._dXYZSpeed);
so7_motion_clear_finished_flag();
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
g_machine.MotionType=EMSG_STOPXYZ_1_MOVETOXYZ;
@@ -4213,6 +4230,17 @@ BOOL CSO7_Proto::IsMotionFinishedManual(BOOL _BResetCnts)
}
return g_machine.MotionFinished;
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_clear_finished_flag()
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
if (g_machine.s_machine_config.motion.GetInterruptMsgMethod==E_GET_INTERRUPT_MSG_INQUIRY)
{
_send_cmd_SO7_CMD_SET_INTERRUPT_MSG(g_machine.MotionType,0);
}
return SSI_STATUS_MOTION_NORMAL;
}
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_is_finished(char MotionType,BOOL& IsFinished)
{
@@ -5560,7 +5588,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_CONSTANT_SPEED(int iSpeed,ch
char _speed_fresh(0);
char _speed_start(0);
char _speed_max(0);
if (g_machine.FirmwareVer==FirmwareVer_6_X)
if (g_machine.FirmwareVer>=FirmwareVer_6_X)
{
iDeceDistance = iSpeed;
}
@@ -6146,15 +6174,14 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(short ParaI
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
static char caxis=1;
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char ActiveAxis,char TrigMode,short StartIndex,short ParaNumber,short* Para)
{
caxis=ActiveAxis;
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
char cBuff(0);
short sPara(0);
g_machine.TrigPara.TrigPulseActiveAxis=ActiveAxis;
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_WRITE_TRIG_PULSE_PARA;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = ActiveAxis;
@@ -6208,7 +6235,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_TRIG_PULSE_START()
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_START_TRIG_PULSE;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=caxis;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=g_machine.TrigPara.TrigPulseActiveAxis;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x00;
@@ -6226,7 +6253,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_TRIG_PULSE_STOP()
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_STOP_TRIG_PULSE;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=caxis;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=g_machine.TrigPara.TrigPulseActiveAxis;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x00;
@@ -6261,6 +6288,44 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_IO_PURPOSE(BOOL _bEnTrigIO)
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_MOTION_CNTS(char _Speedgear,char _StartCnts,char _StopCnts)
{
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_SET_MOTION_FINISHED_CNTS;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)= _Speedgear;
*(ep_buff[EP_02_CMD_IDX]._buffer+3)= _StartCnts;
*(ep_buff[EP_02_CMD_IDX]._buffer+4)= _StopCnts;
ep_buff[EP_02_CMD_IDX]._size = 0x05;
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_CNTS(char _Speedgear)
{
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_FINISHED_CNTS;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = _Speedgear;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
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()
{
@@ -6595,6 +6660,10 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_FIRMWARE_VERSION_INFO()
{
g_machine.FirmwareVer=FirmwareVer_6_X;
}
else if (g_machine.FirmwareInfo[3]=='7')
{
g_machine.FirmwareVer=FirmwareVer_7_X;
}
else
{
g_machine.FirmwareVer=FirmwareVer_3_X;
@@ -6659,3 +6728,12 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_WRITE_TRIG_PULSE_PARA()
index++;
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_MOTION_CNTS()
{
int index(0);
g_machine.Arm_MotionSpeedGear=*(ep_buff[EP_82_DATA_IDX]._buffer);
g_machine.Arm_MotionStartCnts[index]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
g_machine.Arm_MotionStopCnts[index]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
return SSI_STATUS_MOTION_NORMAL;
}
@@ -79,6 +79,7 @@ enum EFirmwareVer
{
FirmwareVer_3_X=0,
FirmwareVer_6_X,
FirmwareVer_7_X,
FirmwareVer_Total
};
enum ESO7_AXIS_TYPE
@@ -88,11 +89,22 @@ enum ESO7_AXIS_TYPE
E_AXIS_Z=3,
E_AXIS_V=4
};
//FirmwareVer_6_X
//enum ESO7_WRITE_FPGA_DATA_ADDR
//{
// E_WRITE_MOTOR_FLAG=9,
// E_WRITE_EQUIDISTANCE=10,
// E_WRITE_ACCURA_ERR=11,
// E_WRITE_TOTAL=16
//};
//FirmwareVer_7_X
enum ESO7_WRITE_FPGA_DATA_ADDR
{
E_WRITE_MOTOR_FLAG=9,
E_WRITE_EQUIDISTANCE=10,
E_WRITE_ACCURA_ERR=11,
E_WRITE_TRIG_LSB=10,
E_WRITE_ACCURA_ERR=12,
E_WRITE_TRIG_MSB=13,
E_WRITE_TRIG_HOLDTIME=14,
E_WRITE_TOTAL=16
};
enum ESO7_CONTROLLER_IO_ADDR
@@ -310,6 +322,9 @@ struct struct_so7_machine
char MotionType;
int MotionFinishedCnts;
BOOL MotionFinished;
char Arm_MotionStartCnts[5];
char Arm_MotionStopCnts[5];
char Arm_MotionSpeedGear;
struct s_so7_axis x;
struct s_so7_axis y;
struct s_so7_axis z;
@@ -474,6 +489,7 @@ public:
SSI_STATUS_MOTION so7_motion_get_3D_max_speed(double &dMaxSpeed);
SSI_STATUS_MOTION so7_motion_is_finished(char MotionType,BOOL& IsFinished);
SSI_STATUS_MOTION so7_motion_clear_finished_flag();
SSI_STATUS_MOTION so7_motion_set_all_speed_para();
SSI_STATUS_MOTION so7_motion_get_all_speed_para();
@@ -555,6 +571,8 @@ public:
SSI_STATUS_MOTION _send_cmd_SO7_CMD_TRIG_PULSE_START();
SSI_STATUS_MOTION _send_cmd_SO7_CMD_TRIG_PULSE_STOP();
SSI_STATUS_MOTION _send_cmd_SO7_CMD_IO_PURPOSE(BOOL _bEnTrigIO);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_MOTION_CNTS(char _Speedgear,char _StartCnts,char _StopCnts);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_MOTION_CNTS(char _Speedgear=0);
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_X();
@@ -596,6 +614,8 @@ public:
static SSI_STATUS_MOTION _process_SO7_CMD_GET_SEQ_NUMBER();
static SSI_STATUS_MOTION _process_SO7_CMD_READ_TRIG_PULSE_PARA();
static SSI_STATUS_MOTION _process_SO7_CMD_WRITE_TRIG_PULSE_PARA();
static SSI_STATUS_MOTION _process_SO7_CMD_GET_MOTION_CNTS();
};
#endif
@@ -4677,3 +4677,29 @@ 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.
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.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
@@ -15,17 +15,17 @@ SPEED_BASE_X1=28
SPEED_MAX_X1=30
SPEED_START_X1=20
SPEED_FRESH_X1=8
SPEED_SLOW_X1=3.000
SPEED_SLOW_X1=2.500
;
SPEED_BASE_X2=8
SPEED_BASE_X2=16
SPEED_MAX_X2=10
SPEED_START_X2=10
SPEED_START_X2=12
SPEED_FRESH_X2=10
SPEED_SLOW_X2=0.500
SPEED_SLOW_X2=2.000
;
SPEED_BASE_X3=2
SPEED_MAX_X3=0
SPEED_START_X3=8
SPEED_BASE_X3=4
SPEED_MAX_X3=80
SPEED_START_X3=10
SPEED_FRESH_X3=10
SPEED_SLOW_X3=0.050
;
@@ -33,25 +33,25 @@ SPEED_BASE_X4=2
SPEED_MAX_X4=0
SPEED_START_X4=5
SPEED_FRESH_X4=10
SPEED_SLOW_X4=0.010
SPEED_SLOW_X4=0.009
;
SPEED_BASE_X5=2
SPEED_MAX_X5=0
SPEED_START_X5=50
SPEED_FRESH_X5=10
SPEED_SLOW_X5=0.100
SPEED_BASE_X5=28
SPEED_MAX_X5=30
SPEED_START_X5=20
SPEED_FRESH_X5=8
SPEED_SLOW_X5=2.500
;
SPEED_BASE_Y1=20
SPEED_MAX_Y1=10
SPEED_START_Y1=20
SPEED_FRESH_Y1=8
SPEED_SLOW_Y1=2.000
SPEED_SLOW_Y1=2.500
;
SPEED_BASE_Y2=8
SPEED_BASE_Y2=16
SPEED_MAX_Y2=10
SPEED_START_Y2=10
SPEED_START_Y2=12
SPEED_FRESH_Y2=10
SPEED_SLOW_Y2=0.500
SPEED_SLOW_Y2=1.000
;
SPEED_BASE_Y3=2
SPEED_MAX_Y3=0
@@ -63,7 +63,7 @@ SPEED_BASE_Y4=0
SPEED_MAX_Y4=0
SPEED_START_Y4=10
SPEED_FRESH_Y4=10
SPEED_SLOW_Y4=0.010
SPEED_SLOW_Y4=0.009
;
SPEED_BASE_Y5=1
SPEED_MAX_Y5=0
@@ -93,7 +93,7 @@ SPEED_BASE_Z4=0
SPEED_MAX_Z4=0
SPEED_START_Z4=18
SPEED_FRESH_Z4=10
SPEED_SLOW_Z4=0.010
SPEED_SLOW_Z4=0.009
;
SPEED_BASE_Z5=5
SPEED_MAX_Z5=6
@@ -102,7 +102,7 @@ SPEED_FRESH_Z5=10
SPEED_SLOW_Z5=0.100
;
X_MOTOR_PRECISION=0.004
Y_MOTOR_PRECISION=0.009
Y_MOTOR_PRECISION=0.008
Z_MOTOR_PRECISION=0.004
;
X_MOTOR_WHEELBASE=1.500
@@ -540,8 +540,6 @@ BEGIN
EDITTEXT IDC_EDIT_REPETEST_ERRORRANGE,365,206,45,12,ES_RIGHT | ES_AUTOHSCROLL
PUSHBUTTON "开始",IDC_BUTTON_BEGIN_REPE_TEST,435,159,56,13
PUSHBUTTON "保存记录...",IDC_BUTTON_SAVE_REPETEST,435,186,56,13
GROUPBOX "单位",IDC_STATIC,18,15,160,38
GROUPBOX "运动类型",IDC_STATIC,188,15,129,38
GROUPBOX "匀速速度",IDC_STATIC,187,68,305,41
PUSHBUTTON "EXIT",IDCANCEL,697,449,50,14,NOT WS_VISIBLE
LTEXT "x",IDC_STATIC,28,134,8,8
@@ -589,6 +587,15 @@ BEGIN
GROUPBOX "档位",IDC_STATIC,27,68,149,41
GROUPBOX "定位速度",IDC_STATIC,18,59,479,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 "运动类型",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
END
IDD_SO7_UTIL_IMAGE_DLL DIALOGEX 0, 0, 377, 184
@@ -983,13 +990,15 @@ BEGIN
CONTROL "",IDC_LIST_SO7_EXTRIG_SPECLOCATION,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,33,113,254,77
EDITTEXT IDC_EDIT_SO7_EXTRIG_RESULT,19,208,294,80,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
PUSHBUTTON "Exit",IDCANCEL,276,295,50,14
PUSHBUTTON "开始",IDC_BUTTON_SO7_EXTRIG_START,171,30,50,14
PUSHBUTTON "开始",IDC_BUTTON_SO7_EXTRIG_START,238,23,50,14
GROUPBOX "外触发轴",IDC_STATIC,17,15,125,41
PUSHBUTTON "停止",IDC_BUTTON_SO7_EXTRIG_STOP,243,30,50,14
PUSHBUTTON "停止",IDC_BUTTON_SO7_EXTRIG_STOP,238,39,50,14
GROUPBOX "外触发参数",IDC_STATIC,17,58,297,144
GROUPBOX "操作",IDC_STATIC,150,15,163,40
PUSHBUTTON "设置",IDC_BUTTON_SO7_EXTRIG_SET_PARA,238,70,50,14
PUSHBUTTON "读取",IDC_BUTTON_SO7_EXTRIG_GET_PARA,238,90,50,14
EDITTEXT IDC_EDIT_SO7_EXTRIG_TEST_TIMES,182,30,40,14,ES_AUTOHSCROLL
LTEXT "次数",IDC_STATIC,161,32,17,8
END
@@ -84,6 +84,8 @@ BEGIN_MESSAGE_MAP(CSO7_Move_Location, CMFCPropertyPage)
ON_BN_CLICKED(IDC_RADIO_SO7_MOVE_SPEED_GEAR3, &CSO7_Move_Location::OnBnClickedRadioSo7MoveSpeedGear3)
ON_BN_CLICKED(IDC_RADIO_SO7_MOVE_SPEED_GEAR4, &CSO7_Move_Location::OnBnClickedRadioSo7MoveSpeedGear4)
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)
END_MESSAGE_MAP()
// CSO7_Move_Location ÏûÏ¢´¦Àí³ÌÐò
@@ -151,6 +153,10 @@ BOOL CSO7_Move_Location::OnInitDialog()
m_RepeTest_Interval=_T("0");
m_RepeTest_ErrRange=_T("0");
bRepeTestDone=false;
((CEdit*)GetDlgItem(IDC_EDIT_SO7_MOTION_START_CNTS))->SetWindowTextW(_T("30"));
((CEdit*)GetDlgItem(IDC_EDIT_SO7_MOTION_STOP_CNTS))->SetWindowTextW(_T("5"));
UpdateData(FALSE);
return TRUE;
}
@@ -2424,6 +2430,38 @@ void CSO7_Move_Location::RepeTestMoveTo(char type,char axis,double dis)
}
//=========================================================================================
void CSO7_Move_Location::OnBnClickedButtonSo7MotionSetCnts()
{
UpdateData(TRUE);
USES_CONVERSION;
char Startcnts(0);
char Stopcnts(0);
CString csTmp;
((CEdit*)GetDlgItem(IDC_EDIT_SO7_MOTION_START_CNTS))->GetWindowTextW(csTmp);
const char* cTmp=T2A(csTmp);
Startcnts = static_cast<char>(atoi(cTmp));
((CEdit*)GetDlgItem(IDC_EDIT_SO7_MOTION_STOP_CNTS))->GetWindowTextW(csTmp);
cTmp=T2A(csTmp);
Stopcnts = static_cast<char>(atoi(cTmp));
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_MOTION_CNTS(m_pSO7_Proto->g_machine.x._MoveTo_Speed_Gear,Startcnts,Stopcnts);
}
//=========================================================================================
void CSO7_Move_Location::OnBnClickedButtonSo7MotionGetCnts()
{
m_pSO7_Proto->_send_cmd_SO7_CMD_GET_MOTION_CNTS(m_pSO7_Proto->g_machine.x._MoveTo_Speed_Gear);
CString csTmp;
csTmp.Format(_T("MotionCnts:Gear=%d,Start=%d,Stop=%d."),m_pSO7_Proto->g_machine.Arm_MotionSpeedGear
,static_cast<BYTE>(m_pSO7_Proto->g_machine.Arm_MotionStartCnts[0]),static_cast<BYTE>(m_pSO7_Proto->g_machine.Arm_MotionStopCnts[0]));
OutputWithScroll(csTmp,m_edit_RepeTest);
csTmp.Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.Arm_MotionStartCnts[0]));
((CEdit*)GetDlgItem(IDC_EDIT_SO7_MOTION_START_CNTS))->SetWindowTextW(csTmp);
csTmp.Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.Arm_MotionStopCnts[0]));
((CEdit*)GetDlgItem(IDC_EDIT_SO7_MOTION_STOP_CNTS))->SetWindowTextW(csTmp);
}
//=========================================================================================
void CSO7_Move_Location::OnTimer(UINT_PTR nIDEvent)
{
@@ -2706,3 +2744,5 @@ void CSO7_Move_Location::OnBnClickedCheckSo7MovetoFpgadata()
KillTimer(5);
}
}
@@ -109,4 +109,6 @@ public:
afx_msg void OnBnClickedRadioSo7MoveSpeedGear3();
afx_msg void OnBnClickedRadioSo7MoveSpeedGear4();
afx_msg void OnBnClickedRadioSo7MoveSpeedGear5();
afx_msg void OnBnClickedButtonSo7MotionSetCnts();
afx_msg void OnBnClickedButtonSo7MotionGetCnts();
};
@@ -216,7 +216,7 @@ BOOL CSO7_Send_Parameter::OnInitDialog()
((CButton *)GetDlgItem(IDC_RADIO_CANVAS_POSTION_TIME))->SetCheck(false);
((CButton *)GetDlgItem(IDC_RADIO_CANVAS_SPEED_TIME))->SetCheck(true);
if (m_pSO7_Proto->g_machine.FirmwareVer==FirmwareVer_6_X)
if (m_pSO7_Proto->g_machine.FirmwareVer>=FirmwareVer_6_X)
{
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA1))->SetWindowTextW(_T("¼ÓËÙ¶È(0-255)"));
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA2))->SetWindowTextW(_T("»º³å¾àÀë(0-255)"));
@@ -71,7 +71,7 @@ BOOL CSo7_Art_PCI8622::OnInitDialog()
}
}
GetDlgItem(IDC_EDIT_ART_PCI8622_GET_DATA_NUMBER)->SetWindowTextW(_T("4096"));
GetDlgItem(IDC_EDIT_ART_PCI8622_READ_TIMES)->SetWindowTextW(_T("1"));
GetDlgItem(IDC_EDIT_ART_PCI8622_READ_TIMES)->SetWindowTextW(_T("0"));
((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622_MODE_DMATRIG))->SetCheck(TRUE);
m_pART_PCI8622->Init();
@@ -20,7 +20,10 @@ IMPLEMENT_DYNAMIC(CSo7_Util_External_Trig, CDialog)
for (int i=0;i<65535;i++)
{
m_TrigPara[i]=0;
m_TrigSetPara[i]=0;
}
m_TestTimes=1;
m_CurTestCnt=0;
}
CSo7_Util_External_Trig::~CSo7_Util_External_Trig()
@@ -36,6 +39,7 @@ void CSo7_Util_External_Trig::DoDataExchange(CDataExchange* pDX)
BEGIN_MESSAGE_MAP(CSo7_Util_External_Trig, CDialog)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_RADIO_SO7_EXTRIG_EQDIS, &CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigEqdis)
ON_BN_CLICKED(IDC_RADIO_SO7_EXTRIG_SPECLOCATION, &CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigSpeclocation)
ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_START, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigStart)
@@ -43,6 +47,7 @@ BEGIN_MESSAGE_MAP(CSo7_Util_External_Trig, CDialog)
ON_EN_KILLFOCUS(IDC_EDIT_SO7_EXTRIG_SPECLOCATION, &CSo7_Util_External_Trig::OnEnKillfocusEditSo7ExtrigSpeclocation)
ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_SET_PARA, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigSetPara)
ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_GET_PARA, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigGetPara)
ON_BN_CLICKED(IDCANCEL, &CSo7_Util_External_Trig::OnBnClickedCancel)
END_MESSAGE_MAP()
@@ -81,6 +86,8 @@ BOOL CSo7_Util_External_Trig::OnInitDialog()
m_ParaListRows=0;
m_UpdateListControl(E_LISTCTRL_TITLE);
m_UpdateListControl(E_LISTCTRL_NO);
((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_TEST_TIMES))->SetWindowText(_T("1"));
return TRUE; // return TRUE unless you set the focus to a control
}
@@ -116,7 +123,7 @@ void CSo7_Util_External_Trig::m_UpdateListControl(int _type)
CString str;
str.Format(_T("%d"),i+1);
m_ParaList.InsertItem(i,str);
m_ParaList.SetItemText(i,1,str);
m_ParaList.SetItemText(i,1,_T("1"));
}
}
else
@@ -170,16 +177,27 @@ void CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigSpeclocation()
//=====================================================================
void CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigStart()
{
GetDlgItem(IDC_BUTTON_SO7_EXTRIG_START)->EnableWindow(FALSE);
m_UpdatePara(TRUE);
m_pSO7_Proto->_send_cmd_SO7_CMD_TRIG_PULSE_START();
m_pSO7_Proto->so7_motion_set_position_xyz(m_EndPos[0],m_EndPos[1],m_EndPos[2],true);
char _Gear(3);
_Gear=m_pSO7_Proto->g_machine.x._Move_Speed_Gear;
m_pSO7_Proto->g_machine.x._MoveTo_Speed_Gear=_Gear;
m_pSO7_Proto->g_machine.y._MoveTo_Speed_Gear=_Gear;
m_pSO7_Proto->g_machine.z._MoveTo_Speed_Gear=_Gear;
m_pSO7_Proto->so7_motion_set_position_xyz(m_EndPos[0],m_EndPos[1],m_EndPos[2],false);
if (m_TestTimes>1)
{
SetTimer(1,500,NULL);
}
}
//=====================================================================
void CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigStop()
{
m_pSO7_Proto->_send_cmd_SO7_CMD_TRIG_PULSE_STOP();
m_pSO7_Proto->so7_motion_set_position_xyz(m_BeginPos[0],m_BeginPos[1],m_BeginPos[2],true);
KillTimer(1);
m_StopTrig();
GetDlgItem(IDC_BUTTON_SO7_EXTRIG_START)->EnableWindow(TRUE);
}
//=====================================================================================
@@ -270,8 +288,14 @@ void CSo7_Util_External_Trig::m_UpdatePara(BOOL _bSave)
CString csTmp;
const char* cTmp;
double dResolution(0.5);
double dEndPos(0.0);
double dEndPos(0.5);
double dTmp(0.0);
((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_TEST_TIMES))->GetWindowTextW(csTmp);
cTmp=T2A(csTmp);
m_TestTimes = static_cast<short>(atoi(cTmp));
m_CurTestCnt=0;
m_pSO7_Proto->so7_motion_get_position_xyz(m_BeginPos[0],m_BeginPos[1],m_BeginPos[2]);
if (((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_X))->GetCheck())
@@ -311,6 +335,7 @@ void CSo7_Util_External_Trig::m_UpdatePara(BOOL _bSave)
dEndPos+=dTmp;
m_TrigPara[iRow]=static_cast<short>(m_pSO7_Proto->MMtoScale(dTmp,dResolution));
}
dEndPos+=dTmp;
}
if (m_ActiveAxis==E_AXIS_X)
{
@@ -346,6 +371,66 @@ void CSo7_Util_External_Trig::m_UpdatePara(BOOL _bSave)
}
}
//=====================================================================================
void CSo7_Util_External_Trig::m_StartTrig()
{
short iParaNumber(0);
double dEndPos(0.5);
long lEndPos(0);
double dTmp(0.0);
double dResolution(0.0);
int iAxisID(0);
double dTmpXYZ[3]={0.0};
m_pSO7_Proto->so7_motion_get_position_xyz(dTmpXYZ[0],dTmpXYZ[1],dTmpXYZ[2]);
m_EndPos[0]=dTmpXYZ[0];
m_EndPos[1]=dTmpXYZ[1];
m_EndPos[2]=dTmpXYZ[2];
if (m_ActiveAxis==E_AXIS_X)
{
dResolution=m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution;
iAxisID=0;
}
else if (m_ActiveAxis==E_AXIS_Y)
{
dResolution=m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution;
iAxisID=1;
}
else
{
dResolution=m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution;
iAxisID=2;
}
if (m_TrigMode==E_DIS_TRIG_PULSE_EQDIS)
{
m_TrigSetPara[0]=m_TrigPara[0];
iParaNumber=1;
dEndPos=10.0;
}
else
{
iParaNumber=m_ParaNumber;
for (int i=0;i<m_ParaNumber;i++)
{
dTmp=m_BeginPos[iAxisID]-dTmpXYZ[iAxisID];
m_TrigSetPara[i]=m_TrigPara[i]+static_cast<short>(m_pSO7_Proto->MMtoScale(dTmp,dResolution));
lEndPos+=m_TrigSetPara[i];
}
}
dEndPos+=m_pSO7_Proto->ScaleToMM(lEndPos,dResolution);
m_EndPos[iAxisID]=dTmpXYZ[iAxisID]+dEndPos;
m_pSO7_Proto->so7_motion_set_trig_para(m_ActiveAxis,m_TrigMode,iParaNumber,m_TrigPara);
m_csMsg.Format(_T("[Write Trig Para]:R TotalNo=%d"),m_pSO7_Proto->g_machine.TrigPara.TrigTotalNo);
OutputWithScroll(m_csMsg,m_EdMsg);
m_pSO7_Proto->_send_cmd_SO7_CMD_TRIG_PULSE_START();
Sleep(20);
m_pSO7_Proto->so7_motion_set_position_xyz(m_EndPos[0],m_EndPos[1],m_EndPos[2],false);
}
//=====================================================================================
void CSo7_Util_External_Trig::m_StopTrig()
{
m_pSO7_Proto->_send_cmd_SO7_CMD_TRIG_PULSE_STOP();
m_pSO7_Proto->so7_motion_set_position_xyz(m_BeginPos[0],m_BeginPos[1],m_BeginPos[2],false);
}
//=====================================================================================
//Print message on edit control
void CSo7_Util_External_Trig::OutputWithScroll(const CString &strNewText,CEdit &edtOutput)
{
@@ -366,3 +451,41 @@ void CSo7_Util_External_Trig::OutputWithScroll(const CString &strNewText,CEdit &
edtOutput.SetSel(iCount, iCount);
edtOutput.SetRedraw(TRUE);
}
void CSo7_Util_External_Trig::OnBnClickedCancel()
{
KillTimer(1);
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
//===================================================
void CSo7_Util_External_Trig::OnTimer(UINT_PTR nIDEvent)
{
switch(nIDEvent)
{
case 1:
{
bool Isfinished(false);
m_pSO7_Proto->so7_Motion_XYZ_IsMotionFinished(Isfinished);
if(Isfinished)
{
if (m_CurTestCnt%2==0)
{
m_StopTrig();
}
else
{
m_StartTrig();
}
m_CurTestCnt++;
}
if(m_CurTestCnt>=2*m_TestTimes)
{
OnBnClickedButtonSo7ExtrigStop();
}
break;
}
}
CDialog::OnTimer(nIDEvent);
}
@@ -31,18 +31,24 @@ protected:
char m_ActiveAxis;
short m_ParaNumber;
short m_TrigPara[65535];
short m_TrigSetPara[65535];
CString m_csMsg;
CEdit m_EdMsg;
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
CEditableListCtrl m_ParaList;
void m_UpdateListControl(int _type);
void m_StartTrig();
void m_StopTrig();
int m_ParaListRows;
int m_ParaListSelectedRow;
int m_ParaListSelectedCol;
short m_ReturnPara;
double m_BeginPos[3];
double m_EndPos[3];
int m_TestTimes;
int m_CurTestCnt;
public:
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnBnClickedRadioSo7ExtrigEqdis();
afx_msg void OnBnClickedRadioSo7ExtrigSpeclocation();
afx_msg void OnBnClickedButtonSo7ExtrigStart();
@@ -50,4 +56,5 @@ public:
afx_msg void OnEnKillfocusEditSo7ExtrigSpeclocation();
afx_msg void OnBnClickedButtonSo7ExtrigSetPara();
afx_msg void OnBnClickedButtonSo7ExtrigGetPara();
afx_msg void OnBnClickedCancel();
};
@@ -217,7 +217,9 @@
<ClCompile Include="..\..\..\STIL\Common\src\cAcqEasy.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="So7_Util_External_Trig.cpp" />
<ClCompile Include="So7_Util_External_Trig.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="CaptureDataDlg.h">
@@ -469,7 +471,9 @@
<ClInclude Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="So7_Util_External_Trig.h" />
<ClInclude Include="So7_Util_External_Trig.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
@@ -657,13 +657,13 @@
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT1 1542
#define IDC_BUTTON_STIL_LASER_EXIT 1542
#define IDC_BUTTON_SO7_EXTRIG_STOP 1542
#define IDC_BUTTON_SO7_MOTION_SET_CNTS 1542
#define IDC_BUTTON_STOP_SAMPLE_SCURVE 1543
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT2 1543
#define IDC_BUTTON_SO7_MOTION_CONFIG_OK2 1543
#define IDC_BUTTON_SO7_MOTION_CONFIG_SET_DEFAULT 1543
#define IDC_BUTTON_SO7_EXTRIG_SET_PARA 1543
#define IDC_BTN_CONFIGURE_MOVEVOUT 1544
#define IDC_BUTTON_SO7_EXTRIG_STOP3 1544
#define IDC_BUTTON_SO7_EXTRIG_GET_PARA 1544
#define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_GLASER 1545
#define IDC_BUTTON_SET_TRIGGER 1546
@@ -710,6 +710,7 @@
#define IDC_BUTTONIDC_BUTTON_TESA_STAR_MOVETO 1585
#define IDC_BUTTON_SO7_TRIGPULSE_STOP 1585
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_STORAGEDATA2 1585
#define IDC_BUTTON_SO7_MOTION_GET_CNTS 1585
#define IDC_BUTTON_INIT_SCAN_KEYENCE_LK_GLASER 1586
#define IDC_BUTTON_SO7_TRIGPULSE_START 1586
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_STORAGEDATA1 1586
@@ -1017,6 +1018,10 @@
#define IDC_RADIO_SO7_EXTRIG_Z 1868
#define IDC_EDIT_SO7_EXTRIG_EQDIS 1869
#define IDC_LIST_SO7_EXTRIG_SPECLOCATION 1870
#define IDC_EDIT_SO7_EXTRIG_TEST_TIMES 1872
#define IDC_EDIT2 1873
#define IDC_EDIT_SO7_MOTION_STOP_CNTS 1873
#define IDC_EDIT_SO7_MOTION_START_CNTS 1874
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
#define ID_EDIT_SO7_CONFIG_MOTION 32741
@@ -1026,7 +1031,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 193
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1872
#define _APS_NEXT_CONTROL_VALUE 1875
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif