Machine Interface Utility:VER1.0
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,413 @@
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Destruct Csmartmotor_Proto.
|
||||
|
||||
Destruct Csmartmotor_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Unable to open device _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.
|
||||
|
||||
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.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
@@ -0,0 +1,114 @@
|
||||
[HARDWARE]
|
||||
SPEED_BASE_X1=2
|
||||
SPEED_MAX_X1=0
|
||||
SPEED_START_X1=10
|
||||
SPEED_FRESH_X1=10
|
||||
SPEED_SLOW_X1=0.000
|
||||
;
|
||||
SPEED_BASE_X2=2
|
||||
SPEED_MAX_X2=0
|
||||
SPEED_START_X2=10
|
||||
SPEED_FRESH_X2=10
|
||||
SPEED_SLOW_X2=0.000
|
||||
;
|
||||
SPEED_BASE_X3=2
|
||||
SPEED_MAX_X3=1
|
||||
SPEED_START_X3=10
|
||||
SPEED_FRESH_X3=10
|
||||
SPEED_SLOW_X3=0.000
|
||||
;
|
||||
SPEED_BASE_X4=1
|
||||
SPEED_MAX_X4=0
|
||||
SPEED_START_X4=20
|
||||
SPEED_FRESH_X4=10
|
||||
SPEED_SLOW_X4=0.000
|
||||
;
|
||||
SPEED_BASE_X5=1
|
||||
SPEED_MAX_X5=0
|
||||
SPEED_START_X5=20
|
||||
SPEED_FRESH_X5=10
|
||||
SPEED_SLOW_X5=0.000
|
||||
;
|
||||
SPEED_BASE_Y1=5
|
||||
SPEED_MAX_Y1=200
|
||||
SPEED_START_Y1=30
|
||||
SPEED_FRESH_Y1=10
|
||||
SPEED_SLOW_Y1=0.600
|
||||
;
|
||||
SPEED_BASE_Y2=3
|
||||
SPEED_MAX_Y2=60
|
||||
SPEED_START_Y2=10
|
||||
SPEED_FRESH_Y2=10
|
||||
SPEED_SLOW_Y2=0.200
|
||||
;
|
||||
SPEED_BASE_Y3=1
|
||||
SPEED_MAX_Y3=5
|
||||
SPEED_START_Y3=3
|
||||
SPEED_FRESH_Y3=3
|
||||
SPEED_SLOW_Y3=0.100
|
||||
;
|
||||
SPEED_BASE_Y4=5
|
||||
SPEED_MAX_Y4=0
|
||||
SPEED_START_Y4=50
|
||||
SPEED_FRESH_Y4=5
|
||||
SPEED_SLOW_Y4=0.000
|
||||
;
|
||||
SPEED_BASE_Y5=5
|
||||
SPEED_MAX_Y5=0
|
||||
SPEED_START_Y5=80
|
||||
SPEED_FRESH_Y5=5
|
||||
SPEED_SLOW_Y5=0.000
|
||||
;
|
||||
SPEED_BASE_Z1=5
|
||||
SPEED_MAX_Z1=200
|
||||
SPEED_START_Z1=50
|
||||
SPEED_FRESH_Z1=10
|
||||
SPEED_SLOW_Z1=0.500
|
||||
;
|
||||
SPEED_BASE_Z2=5
|
||||
SPEED_MAX_Z2=50
|
||||
SPEED_START_Z2=10
|
||||
SPEED_FRESH_Z2=10
|
||||
SPEED_SLOW_Z2=0.100
|
||||
;
|
||||
SPEED_BASE_Z3=5
|
||||
SPEED_MAX_Z3=5
|
||||
SPEED_START_Z3=5
|
||||
SPEED_FRESH_Z3=10
|
||||
SPEED_SLOW_Z3=0.000
|
||||
;
|
||||
SPEED_BASE_Z4=5
|
||||
SPEED_MAX_Z4=0
|
||||
SPEED_START_Z4=50
|
||||
SPEED_FRESH_Z4=5
|
||||
SPEED_SLOW_Z4=0.000
|
||||
;
|
||||
SPEED_BASE_Z5=5
|
||||
SPEED_MAX_Z5=0
|
||||
SPEED_START_Z5=80
|
||||
SPEED_FRESH_Z5=5
|
||||
SPEED_SLOW_Z5=0.000
|
||||
;
|
||||
X_MOTOR_PRECISION=0.019
|
||||
Y_MOTOR_PRECISION=0.019
|
||||
Z_MOTOR_PRECISION=0.004
|
||||
;
|
||||
X_MOTOR_WHEELBASE=20.000
|
||||
Y_MOTOR_WHEELBASE=20.000
|
||||
Z_MOTOR_WHEELBASE=1.500
|
||||
;
|
||||
MOTOR_PULSE_NUM=10000
|
||||
;
|
||||
[WORKTABLE]
|
||||
X_SCALE_RESOLUTION=0.400
|
||||
Y_SCALE_RESOLUTION=0.400
|
||||
Z_SCALE_RESOLUTION=0.400
|
||||
;
|
||||
X_NEG_WORKING_LIMIT=0.000
|
||||
Y_NEG_WORKING_LIMIT=0.000
|
||||
Z_NEG_WORKING_LIMIT=0.000
|
||||
;
|
||||
X_POS_WORKING_LIMIT=400.000
|
||||
Y_POS_WORKING_LIMIT=300.000
|
||||
Z_POS_WORKING_LIMIT=200.000
|
||||
;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,11 @@
|
||||
copy Mix.dll %windir%\system32
|
||||
copy sdk3000_7130.dll %windir%\system32
|
||||
copy Deinterlace.ax %windir%\system32
|
||||
copy SDK3000.ocx %windir%\system32
|
||||
regsvr32/u/s %windir%\system32\Deinterlace.ax
|
||||
regsvr32/s %windir%\system32\Deinterlace.ax
|
||||
regsvr32/u/s %windir%\system32\SDK3000.ocx
|
||||
regsvr32/s %windir%\system32\SDK3000.ocx
|
||||
regsvr32/s Comdlg32.ocx
|
||||
regsvr32/s mscomctl.ocx
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
[HARDWARE]
|
||||
SPEED_X1=10000
|
||||
ACCELERATION_X1=50
|
||||
DECELERATION_X1=50
|
||||
;
|
||||
SPEED_X2=100000
|
||||
ACCELERATION_X2=100
|
||||
DECELERATION_X2=100
|
||||
;
|
||||
SPEED_X3=500000
|
||||
ACCELERATION_X3=200
|
||||
DECELERATION_X3=200
|
||||
;
|
||||
SPEED_X4=1000000
|
||||
ACCELERATION_X4=300
|
||||
DECELERATION_X4=300
|
||||
;
|
||||
SPEED_X5=0
|
||||
ACCELERATION_X5=0
|
||||
DECELERATION_X5=0
|
||||
;
|
||||
SPEED_Y1=10000
|
||||
ACCELERATION_Y1=50
|
||||
DECELERATION_Y1=50
|
||||
;
|
||||
SPEED_Y2=100000
|
||||
ACCELERATION_Y2=100
|
||||
DECELERATION_Y2=100
|
||||
;
|
||||
SPEED_Y3=500000
|
||||
ACCELERATION_Y3=200
|
||||
DECELERATION_Y3=200
|
||||
;
|
||||
SPEED_Y4=1000000
|
||||
ACCELERATION_Y4=300
|
||||
DECELERATION_Y4=300
|
||||
;
|
||||
SPEED_Y5=0
|
||||
ACCELERATION_Y5=0
|
||||
DECELERATION_Y5=0
|
||||
;
|
||||
SPEED_Z1=10000
|
||||
ACCELERATION_Z1=50
|
||||
DECELERATION_Z1=50
|
||||
;
|
||||
SPEED_Z2=100000
|
||||
ACCELERATION_Z2=100
|
||||
DECELERATION_Z2=100
|
||||
;
|
||||
SPEED_Z3=500000
|
||||
ACCELERATION_Z3=200
|
||||
DECELERATION_Z3=200
|
||||
;
|
||||
SPEED_Z4=1000000
|
||||
ACCELERATION_Z4=300
|
||||
DECELERATION_Z4=300
|
||||
;
|
||||
SPEED_Z5=0
|
||||
ACCELERATION_Z5=0
|
||||
DECELERATION_Z5=0
|
||||
;
|
||||
[WORKTABLE]
|
||||
X_SCALE_RESOLUTION=0.400
|
||||
Y_SCALE_RESOLUTION=0.400
|
||||
Z_SCALE_RESOLUTION=0.400
|
||||
;
|
||||
X_NEG_WORKING_LIMIT=0.000
|
||||
Y_NEG_WORKING_LIMIT=0.000
|
||||
Z_NEG_WORKING_LIMIT=0.000
|
||||
;
|
||||
X_POS_WORKING_LIMIT=200.000
|
||||
Y_POS_WORKING_LIMIT=200.000
|
||||
Z_POS_WORKING_LIMIT=200.000
|
||||
;
|
||||
@@ -0,0 +1,18 @@
|
||||
[7OCEANAUTOZOOM]
|
||||
ZOOM_PRODUCT_ID=So7-123456
|
||||
ZOOM_COM_PORT=1
|
||||
ZOOM_START_DEG=10.000000
|
||||
ZOOM_END_DEG=230.000000
|
||||
ZOOM_ORG_DEG=360.000000
|
||||
ZOOM_DEADBAND_DEG=0.050000
|
||||
ZOOM_PULSE_PER_DEG=78.546050203026880
|
||||
ZOOM_READING_INTERVAL_TIME=60
|
||||
ZOOM_MOTOR_SPEED_FAST=2000
|
||||
ZOOM_MOTOR_SPEED_SLOW=800
|
||||
;
|
||||
[HARDWARE]
|
||||
CLOSE_LOOP_ENABLED=0
|
||||
RETRY_TIMES=5
|
||||
SHIFT_POSITION_X=0
|
||||
SHIFT_POSITION_Y=0
|
||||
SHIFT_POSITION_Z=0
|
||||
@@ -0,0 +1,68 @@
|
||||
#include "stdafx.h"
|
||||
#include "Logger.h"
|
||||
#include <atltime.h>
|
||||
void CLogger::SendAtTime(const char* buffer)
|
||||
{
|
||||
|
||||
if (!m_File)
|
||||
{
|
||||
m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR);
|
||||
}
|
||||
if(m_File)
|
||||
{
|
||||
CTime _cTime=CTime::GetCurrentTime();
|
||||
CString csTime=_cTime.Format("[%m/%d %H:%M] ");
|
||||
_ftprintf(m_File,_T("%s\r\n"), csTime);
|
||||
fprintf(m_File,"%s", buffer);
|
||||
}
|
||||
}
|
||||
void CLogger::Send(LPCTSTR format, ...)
|
||||
{
|
||||
if (!m_File)
|
||||
{
|
||||
m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR);
|
||||
}
|
||||
int length = 0;
|
||||
va_list list;
|
||||
va_start(list, format);
|
||||
length = vswprintf_s(m_Str,5000, format, list);
|
||||
if(m_File)
|
||||
{
|
||||
_ftprintf(m_File, m_Str);
|
||||
}
|
||||
}
|
||||
void CLogger::SendAndFlush(LPCTSTR format, ...)
|
||||
{
|
||||
int length = 0;
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
length = vswprintf_s(m_Str2,5000, format, list);
|
||||
Send(m_Str2);
|
||||
|
||||
if(m_File)
|
||||
{
|
||||
fclose(m_File);
|
||||
m_File = NULL;
|
||||
if(m_FileName.GetLength() > 0)
|
||||
m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR);
|
||||
}
|
||||
}
|
||||
|
||||
void CLogger::SendAndFlushPerMode(LPCTSTR format, ...)
|
||||
{
|
||||
int length = 0;
|
||||
va_list list;
|
||||
|
||||
va_start(list, format);
|
||||
length = vswprintf_s(m_Str2,5000, format, list);
|
||||
Send(m_Str2);
|
||||
|
||||
if((m_lLogMask & LOGFLUSH) && m_File)
|
||||
{
|
||||
fclose(m_File);
|
||||
m_File = NULL;
|
||||
if(m_FileName.GetLength() > 0)
|
||||
m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
//=============================================================================
|
||||
#include "stdafx.h"
|
||||
#include "SsiStatus.h"
|
||||
#include "logger.h"
|
||||
#include "math.h"
|
||||
#include "Proto_Util.h"
|
||||
|
||||
#define MY_CONFIG 1
|
||||
#define MAX_DEVPATH_LENGTH 256
|
||||
#define ENDPOINT_TIMEOUT 500
|
||||
#define MAX_BUFF_SIZE 1024
|
||||
|
||||
//===========================================================================
|
||||
double CProto_Util::ScaleToMM(long lCount, double dResolution)
|
||||
{
|
||||
double dMM = 0.0;
|
||||
dMM = lCount * dResolution;
|
||||
return dMM;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
long CProto_Util::MMtoScale(double lDistanceMM, double dResolution)
|
||||
{
|
||||
long lCounts = 0;
|
||||
if (dResolution)
|
||||
lCounts = (long) (lDistanceMM / dResolution);
|
||||
else
|
||||
ASSERT(0);
|
||||
return lCounts;
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
long CProto_Util::_4char2long(unsigned char *cBuff)
|
||||
{
|
||||
union
|
||||
{
|
||||
long l_value;
|
||||
char c_array[5];
|
||||
};
|
||||
memset (c_array, 0, 5);
|
||||
c_array[0] = cBuff[3];
|
||||
c_array[1] = cBuff[2];
|
||||
c_array[2] = cBuff[1];
|
||||
c_array[3] = cBuff[0];
|
||||
return(l_value);
|
||||
}
|
||||
|
||||
//========================================================================
|
||||
void CProto_Util::_reverse_dword(DWORD *dWord)
|
||||
{
|
||||
BYTE cBuff[4];
|
||||
BYTE *dwBuff = (BYTE *)dWord;
|
||||
for ( int ii = 0 ; ii < 4 ; ++ii )
|
||||
cBuff[ii]= dwBuff[ii];
|
||||
|
||||
dwBuff[0] = cBuff[3];
|
||||
dwBuff[1] = cBuff[2];
|
||||
dwBuff[2] = cBuff[1];
|
||||
dwBuff[3] = cBuff[0];
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void CProto_Util::_scale2inch(unsigned long scale, double &inch)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(scale);
|
||||
UNREFERENCED_PARAMETER(inch);
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void CProto_Util::_inch2scale(unsigned long &scale, double inch)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(scale);
|
||||
UNREFERENCED_PARAMETER(inch);
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
// convert a string of characters into its binary form
|
||||
void CProto_Util::_char2bin(unsigned char *cBuff, BYTE *cBytes, int iLen)
|
||||
{
|
||||
memset(cBytes, 0, MAX_BUFF_SIZE);
|
||||
for (int i=0;i<iLen;i++)
|
||||
{
|
||||
sscanf_s((const char *)(cBuff+i*2), "%2x", (cBytes+i));
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
void CProto_Util::_swap_byte(unsigned short &Val)
|
||||
{
|
||||
unsigned short MSB = Val<<8;
|
||||
BYTE LSB = Val>>8;
|
||||
Val = MSB|LSB;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
double CProto_Util::TimeInSecs(void)
|
||||
{
|
||||
double Secs;
|
||||
|
||||
LARGE_INTEGER HPCounterTicksPerSecond;
|
||||
BOOL HasHPCounter = QueryPerformanceFrequency(&HPCounterTicksPerSecond);
|
||||
|
||||
if (HasHPCounter == TRUE)
|
||||
{
|
||||
// Use high resolution clock.
|
||||
double HPCounterTicksPersec = (DWORD)((double) HPCounterTicksPerSecond.QuadPart);
|
||||
LARGE_INTEGER HPTicks;
|
||||
QueryPerformanceCounter(&HPTicks);
|
||||
Secs = ((double)HPTicks.QuadPart / HPCounterTicksPersec);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use clock with less resolution.
|
||||
Secs = GetTickCount();
|
||||
Secs /= 1000.0;
|
||||
}
|
||||
return Secs;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
CProto_Util::CProto_Util()
|
||||
{
|
||||
g_pLogger = new CLogger(_T("\\UtilityDebug.Log"));
|
||||
};
|
||||
|
||||
//******************************************************************************
|
||||
CProto_Util::~CProto_Util()
|
||||
{
|
||||
delete g_pLogger;
|
||||
g_pLogger = NULL;
|
||||
}
|
||||
|
||||
#pragma warning(disable:4996)
|
||||
|
||||
//******************************************************************************
|
||||
// Send is direct and async.
|
||||
// The receive thread will receive data and interpret it.
|
||||
//******************************************************************************
|
||||
SSI_STATUS CProto_Util::Initialize()
|
||||
{
|
||||
SSI_STATUS Status=SSI_STATUS_NORMAL;
|
||||
UNREFERENCED_PARAMETER(Status);
|
||||
if (g_pLogger->m_lLogMask & LOGACTIONS)
|
||||
g_pLogger->SendAndFlushPerMode(_T("Exit Initialize Usb\n"));
|
||||
return SSI_STATUS_NORMAL;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
SSI_STATUS CProto_Util::Terminate()
|
||||
{
|
||||
SSI_STATUS Status=SSI_STATUS_NORMAL;
|
||||
if (g_pLogger->m_lLogMask & LOGACTIONS)
|
||||
g_pLogger->SendAndFlushPerMode(_T("Exit Exit_MvUsb\n"));
|
||||
return Status;
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
SSI_STATUS CProto_Util::ExtractAppPath(CString &Path)
|
||||
{
|
||||
CString tmpPath = Path;
|
||||
tmpPath.TrimRight();
|
||||
tmpPath.TrimLeft();
|
||||
int nLastSlash = tmpPath.ReverseFind('\\');
|
||||
if (nLastSlash > -1)
|
||||
{ // complete path
|
||||
tmpPath = Path.Left(nLastSlash);
|
||||
Path = tmpPath;
|
||||
}
|
||||
else
|
||||
{ // not a complete path
|
||||
Path="";
|
||||
};
|
||||
return SSI_STATUS_NORMAL;
|
||||
};
|
||||
|
||||
//******************************************************************************
|
||||
SSI_STATUS CProto_Util::GetAppPath(CString &Path)
|
||||
{
|
||||
Path=_T(""); // Speed optimization - noticed slow in GlowCode
|
||||
if (Path.IsEmpty())
|
||||
{
|
||||
CString tmpPath;
|
||||
GetModuleFileName(NULL,tmpPath.GetBuffer(255),255);
|
||||
tmpPath.ReleaseBuffer();
|
||||
tmpPath.TrimRight();
|
||||
int nLastSlash = tmpPath.ReverseFind('\\');
|
||||
if (nLastSlash >= 0)
|
||||
tmpPath = tmpPath.Left(nLastSlash);
|
||||
else
|
||||
tmpPath.Empty();
|
||||
Path=tmpPath;
|
||||
}
|
||||
return SSI_STATUS_NORMAL;
|
||||
};
|
||||
|
||||
void CProto_Util::_ascii2bin(char *cBuff)
|
||||
{
|
||||
char x[3];
|
||||
char t[MAX_BUFF_SIZE];
|
||||
|
||||
int iSize = strlen(cBuff)/2;
|
||||
memset(t, 0, MAX_BUFF_SIZE);
|
||||
for (int j=0;j<iSize;j++)
|
||||
{
|
||||
memset(x, 0, 3);
|
||||
memcpy(x, cBuff+(j*2), 2);
|
||||
sscanf_s(x, "%2x", &(t[j]));
|
||||
};
|
||||
memset(cBuff, 0, MAX_BUFF_SIZE);
|
||||
memcpy(cBuff, t, iSize);
|
||||
};
|
||||
|
||||
void CProto_Util::_clear_blanks(char *cBuff)
|
||||
{
|
||||
char pBuff[MAX_BUFF_SIZE];
|
||||
int j = strlen(cBuff);
|
||||
int k = 0;
|
||||
for (int i=0; i<j; i++)
|
||||
{
|
||||
if ((cBuff[i]!=' ') && (cBuff[i]!= 0x0d) && (cBuff[i]!= 0x0a) ) pBuff[k++] = cBuff[i];
|
||||
};
|
||||
pBuff[k] = 0;
|
||||
strcpy(cBuff, pBuff);
|
||||
return;
|
||||
};
|
||||
@@ -0,0 +1,104 @@
|
||||
// Proto_Util.h: interface for the CDataLink class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
#if !defined(AFX_Proto_Util_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_)
|
||||
#define AFX_Proto_Util_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_
|
||||
|
||||
#define MV_TRACE if ( g_pLogger && g_pLogger->m_lLogMask & LOGACTIONS ) g_pLogger->SendAndFlushPerMode
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#include "logger.h"
|
||||
#include "SsiStatus.h"
|
||||
|
||||
enum SETTLE_STATUS
|
||||
{
|
||||
NOTSETTLED = 0,
|
||||
SETTLED,
|
||||
TIMEDOUT
|
||||
};
|
||||
|
||||
// CSettleStageParams and CSettleStage are copied from QVI, but QVI is based on millionths of and inch
|
||||
// and we will use microns for MV
|
||||
class CSettleStageParams
|
||||
{
|
||||
public:
|
||||
CSettleStageParams()
|
||||
{
|
||||
EDGE_RETRY_TIMEOUT_X = 800;
|
||||
EDGE_RETRY_TIMEOUT_Y = 800;
|
||||
EDGE_RETRY_TIMEOUT_Z = 800;
|
||||
EDGE_RETRY_TIMEOUT_MAG = 800;
|
||||
EDGE_RETRY_BANDWIDTH_X = 1;
|
||||
EDGE_RETRY_BANDWIDTH_Y = 1;
|
||||
EDGE_RETRY_BANDWIDTH_Z = 1;
|
||||
EDGE_RETRY_BANDWIDTH_MAG = 1;
|
||||
EDGE_RETRY_COUNT_X = 1;
|
||||
EDGE_RETRY_COUNT_Y = 1;
|
||||
EDGE_RETRY_COUNT_Z = 1;
|
||||
EDGE_RETRY_COUNT_MAG = 1;
|
||||
};
|
||||
|
||||
long EDGE_RETRY_TIMEOUT_X; //300
|
||||
long EDGE_RETRY_TIMEOUT_Y; //300
|
||||
long EDGE_RETRY_TIMEOUT_Z; //300
|
||||
long EDGE_RETRY_TIMEOUT_MAG; //300
|
||||
long EDGE_RETRY_BANDWIDTH_X; //50
|
||||
long EDGE_RETRY_BANDWIDTH_Y; //50
|
||||
long EDGE_RETRY_BANDWIDTH_Z; //50
|
||||
long EDGE_RETRY_BANDWIDTH_MAG; //50
|
||||
long EDGE_RETRY_COUNT_X; //1
|
||||
long EDGE_RETRY_COUNT_Y; //1
|
||||
long EDGE_RETRY_COUNT_Z; //1
|
||||
long EDGE_RETRY_COUNT_MAG; //1
|
||||
};
|
||||
|
||||
class CSettleStage
|
||||
{
|
||||
public:
|
||||
CSettleStage(long lAxis, double dStartTime, long lStart, long lDeadband, double dTestIncrSec, double dMaxTimeSec);
|
||||
enum SETTLE_STATUS Test(double dCurTime, long lCurPos);
|
||||
|
||||
private:
|
||||
double m_dStartTime;
|
||||
long m_lStartPos;
|
||||
long m_lDeadband;
|
||||
double m_dTestIncrSec;
|
||||
double m_dMaxTimeSec;
|
||||
double m_dIncrStartTimeSec;
|
||||
long m_lAxis;
|
||||
};
|
||||
|
||||
//======================================================================================
|
||||
class CProto_Util
|
||||
{
|
||||
public:
|
||||
|
||||
double ScaleToMM(long lCount, double dResolution);
|
||||
long MMtoScale(double lDistanceMM, double dResolution);
|
||||
|
||||
//
|
||||
CProto_Util();
|
||||
virtual ~CProto_Util();
|
||||
SSI_STATUS Initialize();
|
||||
SSI_STATUS Terminate();
|
||||
SSI_STATUS GetAppPath(CString &Path);
|
||||
SSI_STATUS ExtractAppPath(CString &Path);
|
||||
|
||||
double TimeInSecs(void);
|
||||
CLogger* g_pLogger;
|
||||
void _swap_byte(unsigned short &Val);
|
||||
void _reverse_dword(DWORD *);
|
||||
void _scale2inch(unsigned long scale, double &inch);
|
||||
void _inch2scale(unsigned long &scale, double inch);
|
||||
long _4char2long(unsigned char *cBuff);
|
||||
void _char2bin(unsigned char *cBuff, BYTE *cBytes, int len);
|
||||
void _clear_blanks(char *cBuff);
|
||||
void _ascii2bin(char *cBuff);
|
||||
SSI_STATUS WaitForSettleXYZZM();
|
||||
};
|
||||
|
||||
#endif
|
||||
// !defined(AFX_Proto_Util_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_)
|
||||
@@ -0,0 +1 @@
|
||||
Usb Port Initialized.
|
||||
@@ -0,0 +1,5 @@
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
@@ -0,0 +1,275 @@
|
||||
Construct Cso7_Proto.
|
||||
|
||||
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.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
[HARDWARE]
|
||||
SPEED_BASE_X1=5
|
||||
SPEED_MAX_X1=120
|
||||
SPEED_START_X1=20
|
||||
SPEED_FRESH_X1=10
|
||||
SPEED_SLOW_X1=0.500
|
||||
;
|
||||
SPEED_BASE_X2=3
|
||||
SPEED_MAX_X2=30
|
||||
SPEED_START_X2=10
|
||||
SPEED_FRESH_X2=10
|
||||
SPEED_SLOW_X2=0.200
|
||||
;
|
||||
SPEED_BASE_X3=1
|
||||
SPEED_MAX_X3=5
|
||||
SPEED_START_X3=5
|
||||
SPEED_FRESH_X3=10
|
||||
SPEED_SLOW_X3=0.000
|
||||
;
|
||||
SPEED_BASE_X4=1
|
||||
SPEED_MAX_X4=0
|
||||
SPEED_START_X4=50
|
||||
SPEED_FRESH_X4=5
|
||||
SPEED_SLOW_X4=0.000
|
||||
;
|
||||
SPEED_BASE_X5=1
|
||||
SPEED_MAX_X5=0
|
||||
SPEED_START_X5=80
|
||||
SPEED_FRESH_X5=5
|
||||
SPEED_SLOW_X5=0.000
|
||||
;
|
||||
SPEED_BASE_Y1=5
|
||||
SPEED_MAX_Y1=120
|
||||
SPEED_START_Y1=20
|
||||
SPEED_FRESH_Y1=10
|
||||
SPEED_SLOW_Y1=0.600
|
||||
;
|
||||
SPEED_BASE_Y2=3
|
||||
SPEED_MAX_Y2=30
|
||||
SPEED_START_Y2=10
|
||||
SPEED_FRESH_Y2=10
|
||||
SPEED_SLOW_Y2=0.100
|
||||
;
|
||||
SPEED_BASE_Y3=1
|
||||
SPEED_MAX_Y3=5
|
||||
SPEED_START_Y3=5
|
||||
SPEED_FRESH_Y3=10
|
||||
SPEED_SLOW_Y3=0.000
|
||||
;
|
||||
SPEED_BASE_Y4=1
|
||||
SPEED_MAX_Y4=0
|
||||
SPEED_START_Y4=50
|
||||
SPEED_FRESH_Y4=5
|
||||
SPEED_SLOW_Y4=0.000
|
||||
;
|
||||
SPEED_BASE_Y5=1
|
||||
SPEED_MAX_Y5=0
|
||||
SPEED_START_Y5=80
|
||||
SPEED_FRESH_Y5=5
|
||||
SPEED_SLOW_Y5=0.000
|
||||
;
|
||||
SPEED_BASE_Z1=5
|
||||
SPEED_MAX_Z1=170
|
||||
SPEED_START_Z1=50
|
||||
SPEED_FRESH_Z1=10
|
||||
SPEED_SLOW_Z1=0.500
|
||||
;
|
||||
SPEED_BASE_Z2=3
|
||||
SPEED_MAX_Z2=50
|
||||
SPEED_START_Z2=10
|
||||
SPEED_FRESH_Z2=10
|
||||
SPEED_SLOW_Z2=0.100
|
||||
;
|
||||
SPEED_BASE_Z3=1
|
||||
SPEED_MAX_Z3=5
|
||||
SPEED_START_Z3=5
|
||||
SPEED_FRESH_Z3=10
|
||||
SPEED_SLOW_Z3=0.000
|
||||
;
|
||||
SPEED_BASE_Z4=1
|
||||
SPEED_MAX_Z4=0
|
||||
SPEED_START_Z4=50
|
||||
SPEED_FRESH_Z4=5
|
||||
SPEED_SLOW_Z4=0.000
|
||||
;
|
||||
SPEED_BASE_Z5=1
|
||||
SPEED_MAX_Z5=0
|
||||
SPEED_START_Z5=80
|
||||
SPEED_FRESH_Z5=5
|
||||
SPEED_SLOW_Z5=0.000
|
||||
;
|
||||
X_MOTOR_PRECISION=0.009
|
||||
Y_MOTOR_PRECISION=0.004
|
||||
Z_MOTOR_PRECISION=0.004
|
||||
;
|
||||
X_MOTOR_WHEELBASE=25.016
|
||||
Y_MOTOR_WHEELBASE=25.028
|
||||
Z_MOTOR_WHEELBASE=1.875
|
||||
;
|
||||
MOTOR_PULSE_NUM=10000
|
||||
;
|
||||
[WORKTABLE]
|
||||
X_SCALE_RESOLUTION=0.500
|
||||
Y_SCALE_RESOLUTION=0.500
|
||||
Z_SCALE_RESOLUTION=0.500
|
||||
;
|
||||
X_NEG_WORKING_LIMIT=0.000
|
||||
Y_NEG_WORKING_LIMIT=0.000
|
||||
Z_NEG_WORKING_LIMIT=0.000
|
||||
;
|
||||
X_POS_WORKING_LIMIT=400.000
|
||||
Y_POS_WORKING_LIMIT=300.000
|
||||
Z_POS_WORKING_LIMIT=200.000
|
||||
;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,74 @@
|
||||
[HARDWARE]
|
||||
SPEED_X1=10000
|
||||
ACCELERATION_X1=50
|
||||
DECELERATION_X1=50
|
||||
;
|
||||
SPEED_X2=100000
|
||||
ACCELERATION_X2=100
|
||||
DECELERATION_X2=100
|
||||
;
|
||||
SPEED_X3=500000
|
||||
ACCELERATION_X3=200
|
||||
DECELERATION_X3=200
|
||||
;
|
||||
SPEED_X4=1000000
|
||||
ACCELERATION_X4=300
|
||||
DECELERATION_X4=300
|
||||
;
|
||||
SPEED_X5=0
|
||||
ACCELERATION_X5=0
|
||||
DECELERATION_X5=0
|
||||
;
|
||||
SPEED_Y1=10000
|
||||
ACCELERATION_Y1=50
|
||||
DECELERATION_Y1=50
|
||||
;
|
||||
SPEED_Y2=100000
|
||||
ACCELERATION_Y2=100
|
||||
DECELERATION_Y2=100
|
||||
;
|
||||
SPEED_Y3=500000
|
||||
ACCELERATION_Y3=200
|
||||
DECELERATION_Y3=200
|
||||
;
|
||||
SPEED_Y4=1000000
|
||||
ACCELERATION_Y4=300
|
||||
DECELERATION_Y4=300
|
||||
;
|
||||
SPEED_Y5=0
|
||||
ACCELERATION_Y5=0
|
||||
DECELERATION_Y5=0
|
||||
;
|
||||
SPEED_Z1=10000
|
||||
ACCELERATION_Z1=50
|
||||
DECELERATION_Z1=50
|
||||
;
|
||||
SPEED_Z2=100000
|
||||
ACCELERATION_Z2=100
|
||||
DECELERATION_Z2=100
|
||||
;
|
||||
SPEED_Z3=500000
|
||||
ACCELERATION_Z3=200
|
||||
DECELERATION_Z3=200
|
||||
;
|
||||
SPEED_Z4=1000000
|
||||
ACCELERATION_Z4=300
|
||||
DECELERATION_Z4=300
|
||||
;
|
||||
SPEED_Z5=0
|
||||
ACCELERATION_Z5=0
|
||||
DECELERATION_Z5=0
|
||||
;
|
||||
[WORKTABLE]
|
||||
X_SCALE_RESOLUTION=0.400
|
||||
Y_SCALE_RESOLUTION=0.400
|
||||
Z_SCALE_RESOLUTION=0.400
|
||||
;
|
||||
X_NEG_WORKING_LIMIT=0.000
|
||||
Y_NEG_WORKING_LIMIT=0.000
|
||||
Z_NEG_WORKING_LIMIT=0.000
|
||||
;
|
||||
X_POS_WORKING_LIMIT=200.000
|
||||
Y_POS_WORKING_LIMIT=200.000
|
||||
Z_POS_WORKING_LIMIT=200.000
|
||||
;
|
||||
@@ -0,0 +1,18 @@
|
||||
[7OCEANAUTOZOOM]
|
||||
ZOOM_PRODUCT_ID=So7123456
|
||||
ZOOM_COM_PORT=1
|
||||
ZOOM_START_DEG=6.000000
|
||||
ZOOM_END_DEG=226.000000
|
||||
ZOOM_ORG_DEG=356.000000
|
||||
ZOOM_DEADBAND_DEG=0.050000
|
||||
ZOOM_PULSE_PER_DEG=78.546050203026880
|
||||
ZOOM_READING_INTERVAL_TIME=60
|
||||
ZOOM_MOTOR_SPEED_FAST=2000
|
||||
ZOOM_MOTOR_SPEED_SLOW=800
|
||||
;
|
||||
[HARDWARE]
|
||||
CLOSE_LOOP_ENABLED=0
|
||||
RETRY_TIMES=5
|
||||
SHIFT_POSITION_X=0
|
||||
SHIFT_POSITION_Y=0
|
||||
SHIFT_POSITION_Z=0
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently,
|
||||
// but are changed infrequently
|
||||
|
||||
#include "..\..\..\..\include\stdafx_net.h"
|
||||
|
||||
#define _ATL_APARTMENT_THREADED
|
||||
|
||||
#include <afxwin.h>
|
||||
#include <afxodlgs.h> // MFC OLE dialog classes
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
@@ -0,0 +1,25 @@
|
||||
// Proto.h: interface for the CProto class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(AFX_SSISTATUS_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_)
|
||||
#define AFX_SSISTATUS_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
enum SSI_STATUS {
|
||||
SSI_STATUS_NORMAL = 0,
|
||||
SSI_STATUS_DATALINK_ERROR,
|
||||
SSI_STATUS_SETUP_ASYNC_CONTEXT_ERROR,
|
||||
SSI_STATUS_SYNC_READ_ERROR,
|
||||
SSI_STATUS_SYNC_WRITE_ERROR,
|
||||
SSI_STATUS_MV_COMMAND_TIMEOUT,
|
||||
SSI_STATUS_MV_COMMAND_BUSY,
|
||||
SSI_STATUS_REPLAY_FILE_ERROR,
|
||||
SSI_STATUS_MV_CONFIG_FILE_NOT_FOUND,
|
||||
SSI_STATUS_MV_HOMING_TIMEOUT,
|
||||
SSI_STATUS_ERROR,
|
||||
SSI_STATUS_INVALID_PARAMETERS
|
||||
};
|
||||
#endif // !defined(AFX_PROTO_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_)
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,114 @@
|
||||
#pragma once
|
||||
|
||||
// AnimaticsUtilityDlg dialog
|
||||
|
||||
class AnimaticsUtilityDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(AnimaticsUtilityDlg)
|
||||
|
||||
public:
|
||||
AnimaticsUtilityDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~AnimaticsUtilityDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_ANIMATICS_UTIL_DIALOG };
|
||||
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
|
||||
|
||||
CString SpeedParameterX[5];
|
||||
CString AccelParameterX[5];
|
||||
CString DecelParameterX[5];
|
||||
CString SpeedParameterY[5];
|
||||
CString AccelParameterY[5];
|
||||
CString DecelParameterY[5];
|
||||
CString SpeedParameterZ[5];
|
||||
CString AccelParameterZ[5];
|
||||
CString DecelParameterZ[5];
|
||||
|
||||
CString ScaleResolutionX;
|
||||
CString ScaleResolutionY;
|
||||
CString ScaleResolutionZ;
|
||||
|
||||
CString NegSoftLimitX;
|
||||
CString NegSoftLimitY;
|
||||
CString NegSoftLimitZ;
|
||||
|
||||
CString PosSoftLimitX;
|
||||
CString PosSoftLimitY;
|
||||
CString PosSoftLimitZ;
|
||||
|
||||
CString PosPulseX;
|
||||
CString PosPulseY;
|
||||
CString PosPulseZ;
|
||||
CString PosmmX;
|
||||
CString PosmmY;
|
||||
CString PosmmZ;
|
||||
CString PosmmChangedX;
|
||||
CString PosmmChangedY;
|
||||
CString PosmmChangedZ;
|
||||
|
||||
CString MoveToDisX;
|
||||
CString MoveToDisY;
|
||||
CString MoveToDisZ;
|
||||
|
||||
CString RepeTestMoveFromDis;
|
||||
CString RepeTestMoveToDis;
|
||||
CString RepeTestTimes;
|
||||
CString RepeTestInterval;
|
||||
CEdit RepeTestMsgOut;
|
||||
CString MsgX,MsgY,MsgZ;
|
||||
|
||||
CString SmartMotorSendCmd;
|
||||
CString SmartMotorGetResponse;
|
||||
|
||||
HICON m_hRed;
|
||||
HICON m_hGreen;
|
||||
HICON m_hGray;
|
||||
HICON m_hWhite;
|
||||
HICON m_hBlack;
|
||||
|
||||
CProcessButton MoveX_Left;
|
||||
CProcessButton MoveX_Right;
|
||||
CProcessButton MoveY_Front;
|
||||
CProcessButton MoveY_Back;
|
||||
CProcessButton MoveZ_Up;
|
||||
CProcessButton MoveZ_Down;
|
||||
|
||||
//=============================
|
||||
void ChangeParameterOnEdit();
|
||||
void ShowParameterOnEdit();
|
||||
void ShowMotorStatusX();
|
||||
void ShowMotorStatusY();
|
||||
void ShowMotorStatusZ();
|
||||
BOOL SmartMotorRepeTest();
|
||||
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
|
||||
afx_msg void OnBnClickedButtonStartAnimaticsMachine();
|
||||
afx_msg void OnBnClickedButtonStopAnimaticsMachine();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
void ShowWorktableEdit();
|
||||
afx_msg void OnEnKillfocusEditWorktable();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
|
||||
afx_msg void OnBnClickedButtonAnimaticsMoveToXyz();
|
||||
afx_msg void OnBnClickedButtonPosSetZero();
|
||||
afx_msg void OnBnClickedButtonSaveConfig();
|
||||
afx_msg void OnBnClickedButtonReadConfig();
|
||||
afx_msg void OnBnClickedRadioAnimaticsSpeedGear1();
|
||||
afx_msg void OnBnClickedRadioAnimaticsSpeedGear2();
|
||||
afx_msg void OnBnClickedRadioAnimaticsSpeedGear3();
|
||||
afx_msg void OnBnClickedRadioAnimaticsSpeedGear4();
|
||||
afx_msg void OnBnClickedButtonAnimaticsMoveToX();
|
||||
afx_msg void OnBnClickedButtonAnimaticsMoveToY();
|
||||
afx_msg void OnBnClickedButtonAnimaticsMoveToZ();
|
||||
|
||||
afx_msg void OnEnKillfocusEditAnimaticsCmd();
|
||||
afx_msg void OnBnClickedButtonBeginRepeTest();
|
||||
afx_msg void OnBnClickedButtonSaveRepetest();
|
||||
afx_msg void OnBnClickedButtonAnimaticsHome();
|
||||
};
|
||||
@@ -0,0 +1,62 @@
|
||||
#include "stdafx.h"
|
||||
#include "Animatics_UtilDlg.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
|
||||
// CAnimatics_UtilDlg ¶Ô»°¿ò
|
||||
|
||||
|
||||
IMPLEMENT_DYNAMIC(CAnimatics_UtilDlg, CDialog)
|
||||
|
||||
CAnimatics_UtilDlg::CAnimatics_UtilDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CAnimatics_UtilDlg::IDD, pParent)
|
||||
{
|
||||
m_YPos=0.0;
|
||||
m_XPos=0.0;
|
||||
m_ZPos=0.0;
|
||||
}
|
||||
|
||||
CAnimatics_UtilDlg::~CAnimatics_UtilDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CAnimatics_UtilDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CAnimatics_UtilDlg, CDialog)
|
||||
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CAnimatics_UtilDlg ÏûÏ¢´¦Àí³ÌÐò
|
||||
|
||||
BOOL CAnimatics_UtilDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
#pragma once
|
||||
|
||||
#include "resource.h"
|
||||
#include "..\..\..\Animatics\Animatics_Proto.h"
|
||||
#include "ProcessButton.h"
|
||||
#include "afxwin.h"
|
||||
extern SmartMotor_Proto* pSmartMotor_Proto;
|
||||
|
||||
|
||||
// CAnimatics_UtilDlg 对话框
|
||||
|
||||
class CAnimatics_UtilDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CAnimatics_UtilDlg)
|
||||
|
||||
public:
|
||||
CAnimatics_UtilDlg(CWnd* pParent = NULL); // 标准构造函数
|
||||
virtual ~CAnimatics_UtilDlg();
|
||||
|
||||
// 对话框数据
|
||||
enum { IDD = IDD_ANIMATICS_UTIL_DIALOG };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
double m_XPos;
|
||||
double m_YPos;
|
||||
double m_ZPos;
|
||||
|
||||
CString m_OutMessage;
|
||||
CString m_X_Pos;
|
||||
CString m_Y_Pos;
|
||||
CString m_Z_Pos;
|
||||
CString m_Zm_Pos;
|
||||
|
||||
CString m_csTop_Light_Value;
|
||||
CString m_csBom_Light_Value;
|
||||
CString m_csFan_Light_Value;
|
||||
CString m_csBom1_Light_Value;
|
||||
CString m_csBom2_Light_Value;
|
||||
CString m_csFan1_Light_Switch;
|
||||
CString m_csFan2_Light_Switch;
|
||||
|
||||
CString m_cs_Light_Switch;
|
||||
CString m_cs_Light_Size_Value;
|
||||
|
||||
CString m_cs_Version_Number;
|
||||
|
||||
CString m_cs_XScaleCoeff;
|
||||
CString m_cs_YScaleCoeff;
|
||||
CString m_cs_ZScaleCoeff;
|
||||
|
||||
HICON m_hRed;
|
||||
HICON m_hGreen;
|
||||
HICON m_hGray;
|
||||
HICON m_hWhite;
|
||||
HICON m_hBlack;
|
||||
|
||||
CProcessButton m_Button_MoveX_Left;
|
||||
CProcessButton m_Button_MoveX_Right;
|
||||
CProcessButton m_Button_MoveY_Front;
|
||||
CProcessButton m_Button_MoveY_Back;
|
||||
CProcessButton m_Button_MoveZ_Up;
|
||||
CProcessButton m_Button_MoveZ_Down;
|
||||
CProcessButton m_Button_MoveV_Zoom_In;
|
||||
CProcessButton m_Button_MoveV_Zoom_Out;
|
||||
|
||||
|
||||
|
||||
};
|
||||
@@ -0,0 +1,457 @@
|
||||
//#define PASSNUM 110
|
||||
//#define PASSNUM1 200
|
||||
enum FUN_CMD
|
||||
{
|
||||
|
||||
CT_FUN,
|
||||
CT_MOTOR,
|
||||
CT_SCALE,
|
||||
CT_LIGHT,
|
||||
CT_INT,
|
||||
CT_DATA
|
||||
|
||||
};
|
||||
|
||||
enum MOTOR_CMD
|
||||
{
|
||||
|
||||
CT_MOVEX,
|
||||
|
||||
CT_MOVEY,
|
||||
|
||||
CT_MOVEZ,
|
||||
|
||||
|
||||
CT_MOVETOX,
|
||||
CT_MOVETOY,
|
||||
CT_MOVETOZ,
|
||||
|
||||
CT_MOVETOFX,
|
||||
CT_MOVETOFY,
|
||||
CT_MOVETOFZ,
|
||||
|
||||
CT_MOVETOSX,
|
||||
CT_MOVETOSY,
|
||||
CT_MOVETOSZ,
|
||||
|
||||
CT_MOVETOAX,
|
||||
CT_MOVETOAY,
|
||||
CT_MOVETOAZ,
|
||||
|
||||
CT_MOVETOASX,
|
||||
CT_MOVETOASY,
|
||||
CT_MOVETOASZ,
|
||||
|
||||
CT_MOVETOAFX,
|
||||
CT_MOVETOAFY,
|
||||
CT_MOVETOAFZ,
|
||||
|
||||
CT_RESETXYZ,
|
||||
CT_RESETX,
|
||||
CT_RESETY,
|
||||
CT_RESETZ,
|
||||
|
||||
CT_STOPA,
|
||||
CT_STOPX,
|
||||
CT_STOPY,
|
||||
CT_STOPZ,
|
||||
|
||||
CT_STOPFA,
|
||||
CT_STOPFX,
|
||||
CT_STOPFY,
|
||||
CT_STOPFZ,
|
||||
|
||||
CT_SET_SPEEDX,
|
||||
|
||||
|
||||
CT_SET_SPEEDY,
|
||||
|
||||
|
||||
CT_SET_SPEEDZ,
|
||||
|
||||
CT_READ_SPEEDX,
|
||||
CT_READ_SPEEDY,
|
||||
CT_READ_SPEEDZ,
|
||||
|
||||
CT_SET_PRECISIONX,
|
||||
CT_SET_PRECISIONY,
|
||||
CT_SET_PRECISIONZ,
|
||||
|
||||
CT_SET_DEFAULTX,
|
||||
CT_SET_DEFAULTY,
|
||||
CT_SET_DEFAULTZ,
|
||||
|
||||
CT_READ_PRECISIONX,
|
||||
CT_READ_PRECISIONY,
|
||||
CT_READ_PRECISIONZ,
|
||||
CT_RESET,
|
||||
|
||||
CT_MOVEV,
|
||||
CT_MOVETOV,
|
||||
CT_RESETV,
|
||||
CT_STOPV,
|
||||
CT_SET_SPEEDV,
|
||||
CT_READ_SPEEDV,
|
||||
CT_SET_DEFAULTV,
|
||||
CT_TESTV,
|
||||
CT_TSTOPV,
|
||||
CT_TEST_STOP,
|
||||
CT_READ_V,
|
||||
|
||||
CT_M_SPEED,
|
||||
CT_M_DIS,
|
||||
CT_M_FRESH,
|
||||
CT_M_CMD,
|
||||
CT_M_READ_DAT,
|
||||
CT_SET_MOTOR_CAL,
|
||||
|
||||
CT_M_SWITCH_START,
|
||||
CT_M_SWITCH_CLOSE,
|
||||
CT_M_SWITCH_TOP,
|
||||
CT_M_SWITCH_BOM,
|
||||
CT_M_SWITCH_RESET,
|
||||
CT_M_SWITCH_VALUE,
|
||||
CT_M_RESET_LEFT,
|
||||
CT_M_RESET_RIGHT,
|
||||
|
||||
CT_LASE_TIMMER_ON,
|
||||
CT_LASE_TIMMER_OFF,
|
||||
CT_M_PROBE_ON,
|
||||
CT_M_PROBE_OFF,
|
||||
CT_MOVETOXYZ,
|
||||
CT_MOVETOXYZ_LASE,
|
||||
CT_GET_LASE,
|
||||
CT_MOVETOXYZV,
|
||||
CT_M_LASE_ON,
|
||||
CT_M_LASE_OFF,
|
||||
CT_M_BCL_ON,
|
||||
CT_M_BCL_OFF,
|
||||
CT_MOVETOXYZ_JM,
|
||||
|
||||
CT_END
|
||||
|
||||
};
|
||||
|
||||
enum SCALE_CMD
|
||||
{
|
||||
|
||||
CT_SEC_FLAG,
|
||||
|
||||
CT_SCALEX,
|
||||
CT_SCALEY,
|
||||
CT_SCALEZ,
|
||||
|
||||
CT_SECTIONX,
|
||||
CT_SECTIONY,
|
||||
CT_SECTIONZ,
|
||||
|
||||
CT_SET_AXISX,
|
||||
CT_SET_AXISY,
|
||||
CT_SET_AXISZ,
|
||||
|
||||
CT_SET_SECTIONX,
|
||||
CT_SET_SECTIONY,
|
||||
CT_SET_SECTIONZ,
|
||||
|
||||
CT_X_BEGIN,
|
||||
CT_Y_BEGIN,
|
||||
CT_Z_BEGIN,
|
||||
|
||||
CT_X_SECTION_END,
|
||||
CT_Y_SECTION_END,
|
||||
CT_Z_SECTION_END,
|
||||
|
||||
CT_X_SECTION_DEC,
|
||||
CT_Y_SECTION_DEC,
|
||||
CT_Z_SECTION_DEC,
|
||||
|
||||
CT_SET_SECTION_X,
|
||||
CT_SET_SECTION_Y,
|
||||
CT_SET_SECTION_Z,
|
||||
|
||||
CT_PROBE_FLAG,
|
||||
CT_SET_LINE_X,
|
||||
CT_SET_LINE_Y,
|
||||
CT_SET_LINE_Z,
|
||||
|
||||
CT_SET_PROBE_LINE,
|
||||
CT_SET_PROBE_SECTION,
|
||||
CT_SET_VERNO,
|
||||
CT_SET_RESET_FLAG,
|
||||
CT_GET_RESET_FLAG
|
||||
|
||||
};
|
||||
|
||||
enum LIGHT_CMD
|
||||
{
|
||||
|
||||
CT_LIGHT1_SIZE,
|
||||
CT_LIGHT2_SIZE,
|
||||
CT_LIGHT3_SIZE,
|
||||
CT_LIGHT4_SIZE,
|
||||
|
||||
CT_LIGHT1_SWITCH,
|
||||
CT_LIGHT2_SWITCH,
|
||||
CT_LIGHT3_SWITCH,
|
||||
CT_LIGHT4_SWITCH,
|
||||
CT_LIGHT5_SWITCH,
|
||||
CT_LIGHT_CMD
|
||||
|
||||
};
|
||||
|
||||
enum INT_CMD
|
||||
{
|
||||
|
||||
CT_STOPMX,
|
||||
CT_STOPMY,
|
||||
CT_STOPMZ,
|
||||
CT_STOPXYZ,
|
||||
|
||||
CT_ENDXYZ,
|
||||
|
||||
CT_SWITCHX,
|
||||
CT_SWITCHY,
|
||||
CT_SWITCHZ,
|
||||
|
||||
CT_PROBE,
|
||||
CT_PROBE_SWITCH,
|
||||
CT_XYZLASE,
|
||||
CT_SEND_XYZLASE,
|
||||
CT_END1
|
||||
|
||||
};
|
||||
|
||||
enum PRO_DATA
|
||||
{
|
||||
CT_READ_AXISXYZ,
|
||||
CT_READ_AXISX,
|
||||
CT_READ_AXISY,
|
||||
CT_READ_AXISZ,
|
||||
|
||||
CT_READ_PROBEXYZ,
|
||||
CT_READ_PROBEX,
|
||||
CT_READ_PROBEY,
|
||||
CT_READ_PROBEZ,
|
||||
|
||||
CT_SAVE_MOTORX1,
|
||||
CT_SAVE_MOTORX2,
|
||||
CT_SAVE_MOTORX3,
|
||||
CT_SAVE_MOTORX4,
|
||||
CT_SAVE_MOTORX5,
|
||||
|
||||
CT_SAVE_MOTORY1,
|
||||
CT_SAVE_MOTORY2,
|
||||
CT_SAVE_MOTORY3,
|
||||
CT_SAVE_MOTORY4,
|
||||
CT_SAVE_MOTORY5,
|
||||
|
||||
CT_SAVE_MOTORZ1,
|
||||
CT_SAVE_MOTORZ2,
|
||||
CT_SAVE_MOTORZ3,
|
||||
CT_SAVE_MOTORZ4,
|
||||
CT_SAVE_MOTORZ5,
|
||||
|
||||
CT_READ_MOTORX1,
|
||||
CT_READ_MOTORX2,
|
||||
CT_READ_MOTORX3,
|
||||
CT_READ_MOTORX4,
|
||||
CT_READ_MOTORX5,
|
||||
|
||||
CT_READ_MOTORY1,
|
||||
CT_READ_MOTORY2,
|
||||
CT_READ_MOTORY3,
|
||||
CT_READ_MOTORY4,
|
||||
CT_READ_MOTORY5,
|
||||
|
||||
CT_READ_MOTORZ1,
|
||||
CT_READ_MOTORZ2,
|
||||
CT_READ_MOTORZ3,
|
||||
CT_READ_MOTORZ4,
|
||||
CT_READ_MOTORZ5,
|
||||
|
||||
CT_SAVE_SCALEX,
|
||||
CT_SAVE_SCALEY,
|
||||
CT_SAVE_SCALEZ,
|
||||
|
||||
CT_READ_SCALEX,
|
||||
CT_READ_SCALEY,
|
||||
CT_READ_SCALEZ,
|
||||
|
||||
CT_SAVE_SECTION_FLAGX,
|
||||
CT_SAVE_SECTION_FLAGY,
|
||||
CT_SAVE_SECTION_FLAGZ,
|
||||
|
||||
CT_READ_SECTION_FLAGX,
|
||||
CT_READ_SECTION_FLAGY,
|
||||
CT_READ_SECTION_FLAGZ,
|
||||
|
||||
CT_SAVE_PROBE,
|
||||
CT_READ_PROBE,
|
||||
|
||||
CT_SAVE_SEC_REALX,
|
||||
CT_SAVE_SEC_INTX,
|
||||
CT_SAVE_SEC_SCALEX,
|
||||
|
||||
CT_SAVE_SEC_REALY,
|
||||
CT_SAVE_SEC_INTY,
|
||||
CT_SAVE_SEC_SCALEY,
|
||||
|
||||
CT_SAVE_SEC_REALZ,
|
||||
CT_SAVE_SEC_INTZ,
|
||||
CT_SAVE_SEC_SCALEZ,
|
||||
|
||||
CT_READ_SEC_REALX,
|
||||
CT_READ_SEC_INTX,
|
||||
CT_READ_SEC_SCALEX,
|
||||
|
||||
CT_READ_SEC_REALY,
|
||||
CT_READ_SEC_INTY,
|
||||
CT_READ_SEC_SCALEY,
|
||||
|
||||
CT_READ_SEC_REALZ,
|
||||
CT_READ_SEC_INTZ,
|
||||
CT_READ_SEC_SCALEZ,
|
||||
|
||||
CT_READ_SYSTEM,
|
||||
CT_READ_XSECTION_INT,
|
||||
CT_READ_XSECTION_REAL,
|
||||
CT_READ_XSECTION_SCALE,
|
||||
|
||||
CT_READ_YSECTION_INT,
|
||||
CT_READ_YSECTION_REAL,
|
||||
CT_READ_YSECTION_SCALE,
|
||||
|
||||
CT_READ_ZSECTION_INT,
|
||||
CT_READ_ZSECTION_REAL,
|
||||
CT_READ_ZSECTION_SCALE,
|
||||
|
||||
|
||||
CT_WRITE_SYSTEM,
|
||||
CT_WRITE_XSECTION_INT,
|
||||
CT_WRITE_XSECTION_REAL,
|
||||
CT_WRITE_XSECTION_SCALE,
|
||||
|
||||
CT_WRITE_YSECTION_INT,
|
||||
CT_WRITE_YSECTION_REAL,
|
||||
CT_WRITE_YSECTION_SCALE,
|
||||
|
||||
CT_WRITE_ZSECTION_INT,
|
||||
CT_WRITE_ZSECTION_REAL,
|
||||
CT_WRITE_ZSECTION_SCALE,
|
||||
|
||||
CT_READ_AXISV,
|
||||
CT_READ_ADC,
|
||||
CT_READ_ADC_INDEX,
|
||||
|
||||
CT_PRO_DAT_END,
|
||||
CT_CLEAR_PROBE_FLAG,
|
||||
|
||||
CT_READ_IO_DAT,
|
||||
CT_WRITE_IO_DAT
|
||||
|
||||
};
|
||||
|
||||
enum PASSWORD
|
||||
{
|
||||
#ifdef PASSNUM
|
||||
Llz_unknow=PASSNUM,//110,
|
||||
#else
|
||||
llz_unknow = 0,
|
||||
#endif
|
||||
Llz_Start,
|
||||
Llz_Check_PassWord,
|
||||
Llz_Set_User_Dat,
|
||||
Llz_Get_User_Dat,
|
||||
Llz_Get_Fun,
|
||||
Llz_Scale_Dat,
|
||||
Llz_Save_Config_Dat,
|
||||
Llz_Change_SCR_Coor,
|
||||
Llz_Read_Config_Dat,
|
||||
Llz_Distance,
|
||||
Llz_Circle,
|
||||
Llz_Angle,
|
||||
Llz_PLDis,
|
||||
Llz_GetID,
|
||||
Llz_total
|
||||
};
|
||||
|
||||
enum BARCODE
|
||||
{
|
||||
Bar_unknow = 220,
|
||||
|
||||
Bar_Line_Scalex,
|
||||
Bar_Line_Scaley,
|
||||
Bar_Section_Scalex,
|
||||
Bar_Section_Scaley,
|
||||
|
||||
Bar_total
|
||||
};
|
||||
|
||||
enum Video_Surce
|
||||
{
|
||||
Video,
|
||||
|
||||
SDK3000,
|
||||
CG400,
|
||||
MVIP_1,
|
||||
MVIP_2,
|
||||
MVIP_3,
|
||||
|
||||
MV8000E_2,
|
||||
MV8000E_6,
|
||||
MV8000E_2_IP,
|
||||
MV8000E_8,
|
||||
MV8000E_BAR_3,
|
||||
MV8000E_BAR_5,
|
||||
MV8000E_BAR_IP2,
|
||||
MV8000E_BAR_8,
|
||||
|
||||
V80M,
|
||||
V80M_SDK3000,
|
||||
V80M_MV8000E_2,
|
||||
V80M_MV8000E_BAR_3,
|
||||
V80M_MV8000E_BAR_5,
|
||||
V80M_MV8000E_8,
|
||||
|
||||
V140M,
|
||||
V140M_SDK3000,
|
||||
V140M_MV8000E_5,
|
||||
V140M_MV8000E_8,
|
||||
|
||||
V910M,
|
||||
V910M_SDK3000,
|
||||
V910M_MV8000E_2,
|
||||
V910M_MV8000E_BAR_3,
|
||||
V910M_MV8000E_BAR_5,
|
||||
V910M_MV8000E_8,
|
||||
|
||||
MV8000E_10,
|
||||
MV8000E_12,
|
||||
MV8000E_16,
|
||||
|
||||
MV8800E_8,
|
||||
MV8800E_10,
|
||||
MV8800E_12,
|
||||
MV8800E_16,
|
||||
|
||||
V140M_MV8800E_11,
|
||||
V140M_MV8000E_11,
|
||||
|
||||
V1000M,
|
||||
V1000M_2,
|
||||
|
||||
V1000M_30M,
|
||||
V1KM_V1KM,
|
||||
V1000M_30M_BARCODE,
|
||||
V1KM_V1KM_BARCODE,
|
||||
|
||||
V140M_TTK,
|
||||
VGALF_3C4L,
|
||||
|
||||
|
||||
Total
|
||||
};
|
||||
|
||||
#define NULCCD if((video_type == MV8000E_8)||(video_type == VGALF_3C4L)||(video_type==V140M_MV8000E_11)/*||(video_type==V140M_TTK)*/||(video_type==V140M_MV8000E_8)||(video_type==MV8000E_BAR_5)||((video_type>=MV8000E_10)&&(video_type<V1000M)))
|
||||
|
||||
#define MVECCD if((video_type>=MV8800E_8)&&(video_type<=MV8800E_16))
|
||||
@@ -0,0 +1,320 @@
|
||||
// CaptureDataDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "CaptureDataDlg.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
|
||||
extern CMv_Proto *m_pMv_Proto;
|
||||
|
||||
// CCaptureDataDlg dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CCaptureDataDlg, CDialogEx)
|
||||
|
||||
CCaptureDataDlg::CCaptureDataDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialogEx(CCaptureDataDlg::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CCaptureDataDlg::~CCaptureDataDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CCaptureDataDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialogEx::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CCaptureDataDlg, CDialogEx)
|
||||
ON_BN_CLICKED(IDC_BUTTON_UPDATE_CONFIG, &CCaptureDataDlg::OnBnClickedButtonUpdateConfig)
|
||||
ON_BN_CLICKED(IDC_BUTTON_BROWSE_LOG, &CCaptureDataDlg::OnBnClickedButtonBrowseLog)
|
||||
ON_BN_CLICKED(IDC_BUTTON_GET_MV_CONFIG, &CCaptureDataDlg::OnBnClickedButtonGetMvConfig)
|
||||
ON_BN_CLICKED(IDC_RADIO_CREATE_MV_CONFIG, &CCaptureDataDlg::OnBnClickedRadioCreateMvConfig)
|
||||
ON_BN_CLICKED(IDC_RADIO_UPDATE_MV_CONFIG, &CCaptureDataDlg::OnBnClickedRadioUpdateMvConfig)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
//=============================================================================
|
||||
// CCaptureDataDlg message handlers
|
||||
//=============================================================================
|
||||
void CCaptureDataDlg::OnBnClickedButtonUpdateConfig()
|
||||
{
|
||||
char inBuff[MAX_LINE_LEN];
|
||||
FILE* pOutFile;
|
||||
FILE* pMvFile;
|
||||
FILE* pExtractLogFile;
|
||||
|
||||
memset(_str_7000, 0, MAX_SHORT_LEN);
|
||||
memset(_str_6f00, 0, MAX_SHORT_LEN);
|
||||
memset(_str_4c02, 0, MAX_SHORT_LEN);
|
||||
|
||||
//==================================================================================
|
||||
// Create condensed file first.
|
||||
//==================================================================================
|
||||
CMv_Proto_Dump* mv_proto_dump = new CMv_Proto_Dump;
|
||||
int retStatus = mv_proto_dump->MainSnoopyFunction(m_SnoopyLogFile, OUT_CONDENSED, MACHINE_MICROVU);
|
||||
delete mv_proto_dump;
|
||||
if (retStatus == -1)
|
||||
{
|
||||
m_status_msg += _T("\r\nError: SnoopyLog not found or unable to create condensed file.");
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
return;
|
||||
}
|
||||
m_proto_filename = m_SnoopyLogFile + _T(".condensed.proto.txt");
|
||||
m_status_msg = _T("\r\nStatus : Extract file created. - ") + m_proto_filename;
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
|
||||
//==================================================================================
|
||||
// Extract 7000/6f00/4c02 from the condensed files.
|
||||
//==================================================================================
|
||||
_wfopen_s(&pExtractLogFile, m_proto_filename, _T("r")); // open the condensed file
|
||||
fgets((char *)inBuff, MAX_LINE_LEN, pExtractLogFile ); // pick up the first line
|
||||
while (!feof(pExtractLogFile))
|
||||
{
|
||||
if (inBuff[0] != '>')
|
||||
{
|
||||
// dummy
|
||||
}
|
||||
else
|
||||
if (!_strnicmp(inBuff+30, _6000_BUFF, 7))
|
||||
{
|
||||
// convert the ascii text into wchar_t code.
|
||||
memset(_c_str_model, 0, MAX_SHORT_LEN*2);
|
||||
memset(_c_str_serial_no, 0, MAX_SHORT_LEN*2);
|
||||
memset(_str_model, 0, MAX_SHORT_LEN*2);
|
||||
memset(_str_serial_no, 0, MAX_SHORT_LEN*2);
|
||||
for (int i = 0; i<16; ++i)
|
||||
{
|
||||
_c_str_serial_no[i] = (unsigned char) (*(inBuff+37+i*2) - '0');
|
||||
_c_str_serial_no[i] = (_c_str_serial_no[i] << 4) + (unsigned char) (*(inBuff+37+i*2+1) - '0');
|
||||
_c_str_model[i] = (unsigned char) (*(inBuff+101+i*2) - '0');
|
||||
_c_str_model[i] = (_c_str_model[i] << 4 ) + (unsigned char) (*(inBuff+101+i*2+1) - '0');
|
||||
};
|
||||
wcstombs(_str_serial_no, _wc_str_serial_no, 16);
|
||||
wcstombs(_str_model, _wc_str_model, 16);
|
||||
strcpy(_str_SerialNo, _STR_SerialNo_Label);
|
||||
strcat(_str_SerialNo, _str_serial_no);
|
||||
int i = (int) strlen(_str_SerialNo);
|
||||
_str_SerialNo[i] = 0x0a;
|
||||
_str_SerialNo[i+1] = 0;
|
||||
strcpy(_str_Model, _STR_Model_Label);
|
||||
strcat(_str_Model, _str_model);
|
||||
i = (int) strlen(_str_Model);
|
||||
_str_Model[i] = 0x0a;
|
||||
_str_Model[i+1] = 0;
|
||||
}
|
||||
else
|
||||
if (!(inBuff[40] == '1' && inBuff[41] == '0'))
|
||||
{
|
||||
}
|
||||
else
|
||||
if (!_strnicmp(inBuff+35, _7000_BUFF, 4))
|
||||
{
|
||||
strcpy(_str_7000, _STR_7000_Label);
|
||||
strcat(_str_7000, inBuff+35);
|
||||
strcpy(m_pMv_Proto->g_machine.s_machine_config._str_7000_signature, inBuff+35);
|
||||
}
|
||||
else
|
||||
if (!_strnicmp(inBuff+35, _6f00_BUFF, 4))
|
||||
{
|
||||
strcpy(_str_6f00, _STR_6f00_Label);
|
||||
strcat(_str_6f00, inBuff+35);
|
||||
strcpy(m_pMv_Proto->g_machine.s_machine_config._str_6f00_signature, inBuff+35);
|
||||
}
|
||||
fgets((char *)inBuff, MAX_LINE_LEN, pExtractLogFile ); // pick up the first line
|
||||
};
|
||||
fclose(pExtractLogFile);
|
||||
|
||||
//==================================================================================
|
||||
// Create a new mv_config file.
|
||||
//==================================================================================
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_CREATE_MV_CONFIG))->GetCheck())
|
||||
{
|
||||
m_status_msg += _T("\r\nStatus : Creating new mv_config file.");
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
MvConfigNew();
|
||||
return;
|
||||
};
|
||||
|
||||
//==================================================================================
|
||||
// Create the temp_mv_config_file from old mv_config.
|
||||
//==================================================================================
|
||||
_wfopen_s(&pMvFile, m_mv_config_full_path_name, _T("r")); // open the condensed file
|
||||
|
||||
if (pMvFile == NULL)
|
||||
{
|
||||
m_status_msg += _T("\r\nUnable to open mv_config file.");
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
return;
|
||||
};
|
||||
|
||||
CString _temp_name = m_AppPath + _T("\\") + m_temp_mv_config_filename + _T(".") + _wc_str_serial_no + _T(".cfg");
|
||||
_wfopen_s(&pOutFile, _temp_name, _T("w")); // open the condensed file
|
||||
if (pOutFile == NULL)
|
||||
{
|
||||
m_status_msg += _T("\r\nUnable to create temp_mv_config file.");
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
return;
|
||||
};
|
||||
fputs(_str_SerialNo, pOutFile);
|
||||
fputs(_str_Model, pOutFile);
|
||||
fputs(_str_7000, pOutFile);
|
||||
fputs(_str_6f00, pOutFile);
|
||||
// fputs(_str_4c02, pOutFile);
|
||||
|
||||
fgets((char *)inBuff, MAX_LINE_LEN, pMvFile ); // pick up the first line
|
||||
while (!feof(pMvFile))
|
||||
{
|
||||
if (!_strnicmp(inBuff, _STR_7000_Label, 9) ||
|
||||
!_strnicmp(inBuff, _STR_6f00_Label, 9) ||
|
||||
// !_strnicmp(inBuff, _STR_4c02_Label, 9) ||
|
||||
!_strnicmp(inBuff, _STR_SerialNo_Label, 9) ||
|
||||
!_strnicmp(inBuff, _STR_Model_Label, 6))
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
fputs(inBuff, pOutFile);
|
||||
};
|
||||
fgets((char *)inBuff, MAX_LINE_LEN, pMvFile ); // pick up the first line
|
||||
};
|
||||
|
||||
fclose(pMvFile);
|
||||
fclose(pOutFile);
|
||||
m_status_msg += _T("\r\nStatus : temp_mv_config created - \r\n ") + _temp_name;
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// Defaults to c:\Windows\usbsnoop.log
|
||||
// Use File Dialog to point to the log file.
|
||||
// This file must exist.
|
||||
void CCaptureDataDlg::OnBnClickedButtonBrowseLog()
|
||||
{
|
||||
CString strFilters = _T("All Files (*.*)|*.*||");
|
||||
CString strExt = _T("log");
|
||||
CFileDialog fileDlg(TRUE, strExt, (LPCTSTR) m_SnoopyLogFile, OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, strFilters, this);
|
||||
FILE* pLogFile;
|
||||
INT_PTR nResult;
|
||||
while (true) {
|
||||
nResult = fileDlg.DoModal();
|
||||
if (nResult == IDOK)
|
||||
{
|
||||
m_SnoopyLogFile = fileDlg.GetPathName();
|
||||
_wfopen_s(&pLogFile, m_SnoopyLogFile, _T("r")); // see if we can read the file.
|
||||
if (pLogFile == NULL)
|
||||
{
|
||||
m_status_msg += _T("\r\n Snoopy Input File not found.");
|
||||
MessageBox( _T("UsbSnoop.log not found."), _T("Message"), MB_OK);
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_SNOOP_LOG_FILE))->SetWindowText(m_SnoopyLogFile);
|
||||
fclose(pLogFile);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// Defaults to the current directory with a file called mv_config.cfg.
|
||||
// This file may not exist.
|
||||
void CCaptureDataDlg::OnBnClickedButtonGetMvConfig()
|
||||
{
|
||||
CString strFilters = _T("All Files (*.*)|*.*||");
|
||||
CString strExt = _T("cfg");
|
||||
CString csMvFile = _T("mv_config.cfg");
|
||||
CFileDialog fileDlg(TRUE, strExt, (LPCTSTR) csMvFile, OFN_HIDEREADONLY, strFilters, this);
|
||||
FILE* pMvFile;
|
||||
INT_PTR nResult;
|
||||
while (true) {
|
||||
nResult = fileDlg.DoModal();
|
||||
if (nResult == IDOK)
|
||||
{
|
||||
csMvFile = fileDlg.GetPathName();
|
||||
_wfopen_s(&pMvFile, csMvFile, _T("r")); // see if we can read the file.
|
||||
if (pMvFile == NULL)
|
||||
{
|
||||
m_status_msg += _T("\r\nmv_config.cfg file not found. Creating a new temp_mv_config.cfg without mv_config.cfg file.");
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_mv_config_full_path_name = csMvFile;
|
||||
fclose(pMvFile);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
BOOL CCaptureDataDlg::OnInitDialog()
|
||||
{
|
||||
m_status_msg = _T("System Ready.");
|
||||
m_SnoopyLogFile = _T("C:\\Windows\\usbsnoop.log");
|
||||
m_mv_config_filename = _T("mv_config.cfg");
|
||||
m_temp_mv_config_filename = _T("temp_mv_config");
|
||||
m_pMv_Proto->GetAppPath(m_AppPath);
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_SNOOP_LOG_FILE))->SetWindowText(m_SnoopyLogFile);
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_CREATE_MV_CONFIG))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_UPDATE_MV_CONFIG))->SetCheck(1);
|
||||
CString strAppPath;
|
||||
m_pMv_Proto->GetAppPath(strAppPath);
|
||||
m_mv_config_full_path_name = strAppPath + _T("\\") + m_mv_config_filename;
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->EnableWindow(true);
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_MV_CONFIG_FILE))->SetWindowText(m_mv_config_full_path_name);
|
||||
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
//===========================================================================
|
||||
void CCaptureDataDlg::MvConfigNew()
|
||||
{
|
||||
CString fn;
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_SNOOP_LOG_FILE))->GetWindowText(fn);
|
||||
|
||||
FILE* pOutFile;
|
||||
CString _temp_name = m_AppPath + _T("\\") + m_temp_mv_config_filename + _T(".") + _wc_str_serial_no + _T(".cfg");
|
||||
_wfopen_s(&pOutFile, _temp_name, _T("w")); // open the condensed file
|
||||
if (pOutFile == NULL)
|
||||
{
|
||||
m_status_msg += _T("\r\nStatus : Unable to create temp_mv_config file.");
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
return;
|
||||
};
|
||||
fputs(_str_SerialNo, pOutFile);
|
||||
fputs(_str_Model, pOutFile);
|
||||
fputs(_str_7000, pOutFile);
|
||||
fputs(_str_6f00, pOutFile);
|
||||
fputs(_str_4c02, pOutFile);
|
||||
fclose(pOutFile);
|
||||
m_status_msg += _T("\r\nTemp_mv_config created - \r\n ") + _temp_name;
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_STATUS_WINDOW))->SetWindowText(m_status_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void CCaptureDataDlg::OnBnClickedRadioCreateMvConfig()
|
||||
{
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_MV_CONFIG_FILE))->EnableWindow(false);
|
||||
((CEdit *)GetDlgItem(IDC_BUTTON_GET_MV_CONFIG))->EnableWindow(false);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void CCaptureDataDlg::OnBnClickedRadioUpdateMvConfig()
|
||||
{
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_MV_CONFIG_FILE))->EnableWindow(true);
|
||||
((CEdit *)GetDlgItem(IDC_BUTTON_GET_MV_CONFIG))->EnableWindow(true);
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
#pragma once
|
||||
#include "afxwin.h"
|
||||
#include "Mv_Proto_Dump.H"
|
||||
|
||||
#define MAX_LINE_LEN 512
|
||||
#define MAX_SHORT_LEN 128
|
||||
|
||||
#define _STR_7000_Label "STR_7000="
|
||||
#define _STR_6f00_Label "STR_6f00="
|
||||
#define _STR_4c02_Label "STR_4c02="
|
||||
#define _STR_SerialNo_Label "SerialNo="
|
||||
#define _STR_Model_Label "Model="
|
||||
//
|
||||
#define _6000_BUFF "7e : 60"
|
||||
#define _7000_BUFF "7000"
|
||||
#define _6f00_BUFF "6f00"
|
||||
#define _4c02_BUFF "4c02"
|
||||
|
||||
// CCaptureDataDlg dialog
|
||||
|
||||
class CCaptureDataDlg : public CDialogEx
|
||||
{
|
||||
DECLARE_DYNAMIC(CCaptureDataDlg)
|
||||
|
||||
public:
|
||||
CCaptureDataDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CCaptureDataDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_DIALOG_UPDATE_MV_CONFIG };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedButtonUpdateConfig();
|
||||
afx_msg void OnBnClickedButtonBrowseLog();
|
||||
afx_msg void OnBnClickedButtonGetMvConfig();
|
||||
CString m_status_msg;
|
||||
CString m_SnoopyLogFile;
|
||||
CString m_mv_config_full_path_name;
|
||||
CString m_mv_config_filename;
|
||||
CString m_temp_mv_config_filename;
|
||||
CString m_proto_filename;
|
||||
CString m_AppPath;
|
||||
CMv_Proto_Dump* mv_proto_dump;
|
||||
|
||||
union {
|
||||
wchar_t _wc_str_serial_no[MAX_SHORT_LEN];
|
||||
char _c_str_serial_no[MAX_SHORT_LEN*2];
|
||||
};
|
||||
char _str_serial_no[MAX_SHORT_LEN*2];
|
||||
union {
|
||||
wchar_t _wc_str_model[MAX_SHORT_LEN];
|
||||
char _c_str_model[MAX_SHORT_LEN*2];
|
||||
};
|
||||
char _str_model[MAX_SHORT_LEN*2];
|
||||
|
||||
void MvConfigNew();
|
||||
afx_msg void OnBnClickedRadioCreateMvConfig();
|
||||
afx_msg void OnBnClickedRadioUpdateMvConfig();
|
||||
|
||||
char _str_SerialNo[MAX_SHORT_LEN];
|
||||
char _str_Model[MAX_SHORT_LEN];
|
||||
char _str_7000[MAX_SHORT_LEN];
|
||||
char _str_6f00[MAX_SHORT_LEN];
|
||||
char _str_4c02[MAX_SHORT_LEN];
|
||||
};
|
||||
@@ -0,0 +1,126 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// DirDialog.cpp: implementation of the CDirDialog class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "DirDialog.h"
|
||||
#include "shlobj.h"
|
||||
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[]=__FILE__;
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
// Callback function called by SHBrowseForFolder's browse control
|
||||
// after initialization and when selection changes
|
||||
static int __stdcall BrowseCtrlCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
CDirDialog* pDirDialogObj = (CDirDialog*)lpData;
|
||||
|
||||
if (uMsg == BFFM_INITIALIZED && !pDirDialogObj->m_strSelDir.IsEmpty())
|
||||
{
|
||||
::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)(LPCTSTR)(pDirDialogObj->m_strSelDir));
|
||||
}
|
||||
else // uMsg == BFFM_SELCHANGED
|
||||
{
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
CDirDialog::CDirDialog()
|
||||
{
|
||||
}
|
||||
|
||||
CDirDialog::~CDirDialog()
|
||||
{
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
int CDirDialog::DoBrowse()
|
||||
{
|
||||
LPMALLOC pMalloc;
|
||||
if (SHGetMalloc (&pMalloc)!= NOERROR)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
BROWSEINFO bInfo;
|
||||
LPITEMIDLIST pidl;
|
||||
ZeroMemory ( (PVOID) &bInfo,sizeof (BROWSEINFO));
|
||||
|
||||
if (!m_strInitDir.IsEmpty ())
|
||||
{
|
||||
OLECHAR olePath[MAX_PATH];
|
||||
ULONG chEaten;
|
||||
ULONG dwAttributes;
|
||||
HRESULT hr;
|
||||
LPSHELLFOLDER pDesktopFolder;
|
||||
//
|
||||
// Get a pointer to the Desktop's IShellFolder interface.
|
||||
//
|
||||
if (SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
|
||||
{
|
||||
//
|
||||
// IShellFolder::ParseDisplayName requires the file name be in Unicode.
|
||||
//
|
||||
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (LPCSTR) m_strInitDir.GetBuffer(MAX_PATH), -1,
|
||||
olePath, MAX_PATH);
|
||||
|
||||
m_strInitDir.ReleaseBuffer (-1);
|
||||
//
|
||||
// Convert the path to an ITEMIDLIST.
|
||||
//
|
||||
hr = pDesktopFolder->ParseDisplayName(NULL,
|
||||
NULL,
|
||||
olePath,
|
||||
&chEaten,
|
||||
&pidl,
|
||||
&dwAttributes);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
pMalloc ->Free (pidl);
|
||||
pMalloc ->Release ();
|
||||
return 0;
|
||||
}
|
||||
bInfo.pidlRoot = pidl;
|
||||
|
||||
}
|
||||
}
|
||||
bInfo.hwndOwner = NULL;
|
||||
bInfo.pszDisplayName = m_strPath.GetBuffer (MAX_PATH);
|
||||
bInfo.lpszTitle = (m_strTitle.IsEmpty()) ? _T("Open"):m_strTitle;
|
||||
bInfo.ulFlags = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;
|
||||
bInfo.lpfn = BrowseCtrlCallback; // address of callback function
|
||||
bInfo.lParam = (LPARAM)this; // pass address of object to callback function
|
||||
|
||||
if ((pidl = ::SHBrowseForFolder(&bInfo)) == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
m_strPath.ReleaseBuffer();
|
||||
m_iImageIndex = bInfo.iImage;
|
||||
|
||||
if (::SHGetPathFromIDList(pidl,m_strPath.GetBuffer(MAX_PATH)) == FALSE)
|
||||
{
|
||||
pMalloc ->Free(pidl);
|
||||
pMalloc ->Release();
|
||||
return 0;
|
||||
}
|
||||
|
||||
m_strPath.ReleaseBuffer();
|
||||
|
||||
pMalloc ->Free(pidl);
|
||||
pMalloc ->Release();
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// DirDialog.h: interface for the CDirDialog class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(AFX_DIRDIALOG_H__62FFAC92_1DEE_11D1_B87A_0060979CDF6D__INCLUDED_)
|
||||
#define AFX_DIRDIALOG_H__62FFAC92_1DEE_11D1_B87A_0060979CDF6D__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
class CDirDialog
|
||||
{
|
||||
public:
|
||||
CDirDialog();
|
||||
virtual ~CDirDialog();
|
||||
int DoBrowse();
|
||||
|
||||
CString m_strPath;
|
||||
CString m_strInitDir;
|
||||
CString m_strSelDir;
|
||||
CString m_strTitle;
|
||||
int m_iImageIndex;
|
||||
};
|
||||
|
||||
#endif // !defined(AFX_DIRDIALOG_H__62FFAC92_1DEE_11D1_B87A_0060979CDF6D__INCLUDED_)
|
||||
|
||||
|
||||
@@ -0,0 +1,366 @@
|
||||
// GraphView.cpp : 实现文件
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "DrawGraph.h"
|
||||
|
||||
|
||||
// CDrawGraph
|
||||
|
||||
IMPLEMENT_DYNAMIC(CDrawGraph, CWnd)
|
||||
//========================================================
|
||||
CDrawGraph::CDrawGraph()
|
||||
{
|
||||
//注册控件类
|
||||
RegisterCtrlClass();
|
||||
|
||||
m_nMarginLeft = 40;
|
||||
m_nMarginTop = 15;
|
||||
m_nMarginRight = 15;
|
||||
m_nMarginBottom = 30;
|
||||
|
||||
m_dbResolutionX = 1;
|
||||
m_dbResolutionY = 1;
|
||||
m_nDivisionX = 10;
|
||||
m_nDivisionY = 10;
|
||||
|
||||
m_dbStartX = m_dbStartY = 0;
|
||||
m_dbEndX = m_dbEndY = 100;
|
||||
|
||||
//颜色表
|
||||
m_clrCoordBkg = RGB(255, 255, 255);
|
||||
m_clrFrame = RGB(0, 0, 0);
|
||||
m_clrWave = RGB(0, 0, 255);
|
||||
}
|
||||
//========================================================
|
||||
CDrawGraph::~CDrawGraph()
|
||||
{
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::RegisterCtrlClass()
|
||||
{
|
||||
HINSTANCE hInstance = AfxGetInstanceHandle();
|
||||
|
||||
WNDCLASS wndclsCtrl;
|
||||
ZeroMemory(&wndclsCtrl, sizeof(WNDCLASS));
|
||||
|
||||
if(::GetClassInfo(hInstance, STR_CLASS_NAME, &wndclsCtrl))
|
||||
return;
|
||||
|
||||
//设置控件类信息
|
||||
wndclsCtrl.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
|
||||
wndclsCtrl.lpfnWndProc = ::DefWindowProc;
|
||||
wndclsCtrl.cbClsExtra = 0;
|
||||
wndclsCtrl.cbWndExtra = 0;
|
||||
wndclsCtrl.hInstance = hInstance;
|
||||
wndclsCtrl.hIcon = NULL;
|
||||
wndclsCtrl.hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
|
||||
wndclsCtrl.hbrBackground = NULL;
|
||||
wndclsCtrl.lpszMenuName = NULL;
|
||||
wndclsCtrl.lpszClassName = STR_CLASS_NAME;
|
||||
|
||||
//注册控件类
|
||||
AfxRegisterClass(&wndclsCtrl);
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::SetViewFont(const CString& strFont, int nPointSize, int nWeight, BOOL bIsRedraw)
|
||||
{
|
||||
int nCount;
|
||||
LOGFONT lf;
|
||||
memset(&lf, 0, sizeof(LOGFONT));
|
||||
|
||||
//设置字体样式
|
||||
nCount = sizeof(lf.lfFaceName)/sizeof(TCHAR);
|
||||
COPYSTRING(lf.lfFaceName, nCount, strFont);
|
||||
lf.lfHeight = nPointSize;
|
||||
lf.lfWeight = nWeight;
|
||||
lf.lfCharSet = GB2312_CHARSET;
|
||||
|
||||
//清楚已有样式
|
||||
if(m_fontView.GetSafeHandle())
|
||||
m_fontView.DeleteObject();
|
||||
|
||||
//设置字体
|
||||
m_fontView.CreateFontIndirect(&lf);
|
||||
|
||||
if(bIsRedraw)
|
||||
Invalidate();
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::SetMargin(int nLeft, int nTop, int nRight, int nBottom, BOOL bIsRedraw)
|
||||
{
|
||||
m_nMarginLeft = nLeft;
|
||||
m_nMarginTop = nTop;
|
||||
m_nMarginRight = nRight;
|
||||
m_nMarginBottom = nBottom;
|
||||
|
||||
if(bIsRedraw)
|
||||
Invalidate();
|
||||
}
|
||||
//========================================================
|
||||
bool CDrawGraph::SetGraphyView(double dbStartX, double dbEndX, double dbStartY, double dbEndY, int nDivisionX, int nDivisionY, BOOL bIsRedraw)
|
||||
{
|
||||
if(nDivisionX<=1||nDivisionY<=1)
|
||||
return false;
|
||||
|
||||
m_dbStartX = dbStartX;
|
||||
m_dbEndX = dbEndX;
|
||||
m_dbStartY = dbStartY;
|
||||
m_dbEndY = dbEndY;
|
||||
m_nDivisionX = nDivisionX;
|
||||
m_nDivisionY = nDivisionY;
|
||||
|
||||
if(bIsRedraw)
|
||||
Invalidate();
|
||||
|
||||
return true;
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::SetResolution(double dbResolutionX, double dbResolutionY, BOOL bIsRedraw)
|
||||
{
|
||||
m_dbResolutionX = dbResolutionX;
|
||||
m_dbResolutionY = dbResolutionY;
|
||||
|
||||
if(bIsRedraw)
|
||||
Invalidate();
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::LoadGraphyData(DataBuff& dataShow)
|
||||
{
|
||||
double dbData;
|
||||
INT_PTR nCount = dataShow.GetCount();
|
||||
|
||||
if(nCount==0)
|
||||
return;
|
||||
|
||||
m_dataGraph.RemoveAll();
|
||||
m_dataGraph.SetSize(nCount);
|
||||
for(int i=0; i<nCount; i++)
|
||||
{
|
||||
dbData = dataShow.ElementAt(i);
|
||||
|
||||
m_dataGraph.SetAt(i, dbData);
|
||||
}
|
||||
Invalidate();
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::AddGraphyData(double _data)
|
||||
{
|
||||
m_dataGraph.Add(_data);
|
||||
Invalidate();
|
||||
}
|
||||
//=======================================================
|
||||
void CDrawGraph::RemoveGraphyData(BOOL bIsRedraw)
|
||||
{
|
||||
m_dataGraph.RemoveAll();
|
||||
if(bIsRedraw)
|
||||
Invalidate();
|
||||
};
|
||||
|
||||
//========================================================
|
||||
void CDrawGraph::DrawCoordinate(CDC* pDC, CRect rectCoord)
|
||||
{
|
||||
CString strCoord;
|
||||
CRect rectTemp;
|
||||
int i, nSection, nOffset;
|
||||
CSize szText, szUnit;
|
||||
double dbTemp, dbTempStartY, dbTempStartX,
|
||||
dbRangX = m_dbEndX-m_dbStartX,
|
||||
dbRangY = m_dbEndY-m_dbStartY;
|
||||
|
||||
dbTempStartX = m_dbStartX;
|
||||
dbTempStartY = m_dbStartY;
|
||||
|
||||
pDC->FillSolidRect(rectCoord, m_clrCoordBkg);
|
||||
nOffset = 2;
|
||||
for(i=0; i<=m_nDivisionX; i++)
|
||||
{
|
||||
dbTemp = dbTempStartX+dbRangX*i/m_nDivisionX;
|
||||
strCoord.Format(_T("%g"), dbTemp);
|
||||
|
||||
nSection = rectCoord.Width()*i/m_nDivisionX;
|
||||
szText = pDC->GetTextExtent(strCoord, strCoord.GetLength());
|
||||
|
||||
rectTemp.SetRect(rectCoord.left+nSection-szText.cx/2, rectCoord.bottom+nOffset, rectCoord.left+nSection+szText.cx/2, rectCoord.bottom+szText.cy+nOffset);
|
||||
pDC->MoveTo(rectCoord.left+nSection, rectCoord.top);
|
||||
pDC->LineTo(rectCoord.left+nSection, rectCoord.bottom);
|
||||
pDC->DrawText(strCoord, strCoord.GetLength(), rectTemp, DT_CENTER);
|
||||
}
|
||||
|
||||
nOffset = 2;
|
||||
for(i=0; i<=m_nDivisionY; i++)
|
||||
{
|
||||
dbTemp = dbTempStartY+dbRangY*i/m_nDivisionY;
|
||||
strCoord.Format(_T("%g"), dbTemp);
|
||||
|
||||
nSection = rectCoord.Height()*i/m_nDivisionY;
|
||||
szText = pDC->GetTextExtent(strCoord, strCoord.GetLength());
|
||||
|
||||
rectTemp.SetRect(rectCoord.left-szText.cx-nOffset, rectCoord.bottom-nSection-szText.cy*2/3, rectCoord.left-nOffset, rectCoord.bottom-nSection+szText.cy/3);
|
||||
pDC->MoveTo(rectCoord.left, rectCoord.top+nSection);
|
||||
pDC->LineTo(rectCoord.right+1, rectCoord.top+nSection);
|
||||
pDC->DrawText(strCoord, strCoord.GetLength(), rectTemp, DT_CENTER);
|
||||
}
|
||||
LOGFONT lf;
|
||||
::ZeroMemory (&lf, sizeof (lf));
|
||||
//lf.lfHeight = 160;
|
||||
//lf.lfWeight = FW_BOLD;
|
||||
lf.lfEscapement = 900;
|
||||
lf.lfOrientation = 900;
|
||||
|
||||
CFont font;
|
||||
font.CreatePointFontIndirect (&lf);
|
||||
|
||||
CFont* pOldFont = pDC->SelectObject (&font);
|
||||
pDC->TextOut(rectCoord.left-40,rectCoord.top+(rectCoord.Height()/2)+30,_T("速度(mm/s)"));//旋转90°输出
|
||||
pDC->SelectObject (pOldFont);
|
||||
pDC->TextOut(rectCoord.left-20+(rectCoord.Width()/2),rectCoord.bottom+15,_T("时间(s)"));
|
||||
|
||||
nOffset = 4;
|
||||
rectTemp.SetRect(rectCoord.left+nOffset, rectCoord.top+1, rectCoord.right, rectCoord.bottom-nOffset);
|
||||
pDC->FillSolidRect(rectTemp, m_clrCoordBkg);
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::DrawActualCurve(CDC *pDC, CRect rectCoord)
|
||||
{
|
||||
CRect rectView;
|
||||
CRgn rgnTemp, rgnView;
|
||||
CPen penLine, *pOldPen;
|
||||
INT_PTR nCount = m_dataGraph.GetCount();
|
||||
|
||||
if(nCount==0)
|
||||
return;
|
||||
|
||||
double dbData(0.0);
|
||||
int nOffsetX(0), nOffsetY(0),nOriginX(0),nOriginY(0);
|
||||
dbData = m_dataGraph.ElementAt(0);
|
||||
nOriginX = rectCoord.left;
|
||||
nOriginY = rectCoord.bottom;;
|
||||
nOffsetX = static_cast<int>(m_dbResolutionX*(rectCoord.Width()));
|
||||
nOffsetY = static_cast<int>(m_dbResolutionY*(rectCoord.Height())*dbData);
|
||||
|
||||
rgnTemp.CreateRectRgnIndirect(rectCoord);
|
||||
pDC->SelectObject(rgnTemp);
|
||||
penLine.CreatePen(PS_SOLID, 1, m_clrWave);
|
||||
pOldPen = pDC->SelectObject(&penLine);
|
||||
|
||||
|
||||
pDC->MoveTo(nOriginX, nOriginY-nOffsetY);
|
||||
|
||||
for(int i=1; i<nCount; i++)
|
||||
{
|
||||
dbData = m_dataGraph.ElementAt(i);
|
||||
nOffsetY = static_cast<int>(m_dbResolutionY*(rectCoord.Height())*dbData);
|
||||
|
||||
pDC->LineTo(nOriginX+nOffsetX*i, nOriginY-nOffsetY);
|
||||
}
|
||||
pDC->SelectObject(pOldPen);
|
||||
GetClientRect(rectView);
|
||||
rgnView.CreateRectRgnIndirect(rectView);
|
||||
pDC->SelectObject(rgnView);
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::DrawIdealCurve(CDC *pDC, CRect rectCoord)
|
||||
{
|
||||
CRect rectView;
|
||||
CRgn rgnTemp, rgnView;
|
||||
CPen penLine, *pOldPen;
|
||||
INT_PTR nCount = m_dataGraph.GetCount();
|
||||
|
||||
if(nCount==0)
|
||||
return;
|
||||
|
||||
double dbData;
|
||||
int nOffsetX, nOffsetY;
|
||||
int nRangX = abs(int((m_dbEndX-m_dbStartX)*m_dbResolutionX)),
|
||||
nRangY = abs(int((m_dbEndY-m_dbStartY)*m_dbResolutionY));
|
||||
int nCoordWith = rectCoord.Width(),
|
||||
nCoordHeight = rectCoord.Height(),
|
||||
nOriginX = rectCoord.left-int(m_dbStartX*nCoordWith/nRangX),
|
||||
nOriginY = rectCoord.bottom+int(m_dbStartY*nCoordHeight/nRangY);
|
||||
|
||||
|
||||
rgnTemp.CreateRectRgnIndirect(rectCoord);
|
||||
pDC->SelectObject(rgnTemp);
|
||||
penLine.CreatePen(PS_SOLID, 1, m_clrWave);
|
||||
pOldPen = pDC->SelectObject(&penLine);
|
||||
|
||||
dbData = m_dataGraph.ElementAt(0);
|
||||
nOffsetY = int(nCoordHeight*dbData/nRangY);
|
||||
pDC->MoveTo(nOriginX, nOriginY-nOffsetY);
|
||||
|
||||
for(int i=1; i<nCount; i++)
|
||||
{
|
||||
dbData = m_dataGraph.ElementAt(i);
|
||||
nOffsetX = int(nCoordWith*(i+1)/nRangX);
|
||||
nOffsetY = int(nCoordHeight*dbData/nRangY);
|
||||
|
||||
pDC->LineTo(nOriginX+nOffsetX, nOriginY-nOffsetY);
|
||||
}
|
||||
pDC->SelectObject(pOldPen);
|
||||
GetClientRect(rectView);
|
||||
rgnView.CreateRectRgnIndirect(rectView);
|
||||
pDC->SelectObject(rgnView);
|
||||
}
|
||||
//========================================================
|
||||
BEGIN_MESSAGE_MAP(CDrawGraph, CWnd)
|
||||
ON_WM_PAINT()
|
||||
ON_WM_ERASEBKGND()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
// CDrawGraph 消息处理程序
|
||||
//========================================================
|
||||
void CDrawGraph::PreSubclassWindow()
|
||||
{
|
||||
CWnd::PreSubclassWindow();
|
||||
|
||||
SetViewFont(_T("宋体"), 12, FW_NORMAL);
|
||||
}
|
||||
//========================================================
|
||||
void CDrawGraph::OnPaint()
|
||||
{
|
||||
CPaintDC dc(this);
|
||||
int nMode;
|
||||
CRect rectClient, rectCoord, rectInfo, rectTemp;
|
||||
CString strCaption, strOutputInfo;
|
||||
CBitmap bitmapTemp, *pOldBitmap;
|
||||
CFont* pOldFont;
|
||||
CDC* pMemDC = new CDC;
|
||||
|
||||
//获取控件信息
|
||||
GetClientRect(rectClient);
|
||||
GetWindowText(strCaption);
|
||||
|
||||
//创建位图内存
|
||||
bitmapTemp.CreateCompatibleBitmap(&dc, rectClient.Width(), rectClient.Height());
|
||||
pMemDC->CreateCompatibleDC(&dc);
|
||||
pOldBitmap = pMemDC->SelectObject(&bitmapTemp);
|
||||
pOldFont = pMemDC->SelectObject(&m_fontView);
|
||||
nMode = pMemDC->SetBkMode(TRANSPARENT);
|
||||
|
||||
//填充客户区
|
||||
pMemDC->FillSolidRect(&rectClient, GetSysColor(COLOR_BTNFACE));
|
||||
//绘制视图标题
|
||||
pMemDC->DrawText(strCaption, strCaption.GetLength(), rectClient, DT_CENTER);
|
||||
//绘制坐标框
|
||||
rectCoord.SetRect(rectClient.left+m_nMarginLeft, rectClient.top+m_nMarginTop, rectClient.right-m_nMarginRight, rectClient.bottom-m_nMarginBottom);
|
||||
DrawCoordinate(pMemDC, rectCoord);
|
||||
//绘制波形
|
||||
DrawActualCurve(pMemDC, rectCoord);
|
||||
|
||||
dc.BitBlt(0, 0, rectClient.Width(), rectClient.Height(), pMemDC, 0, 0, SRCCOPY);
|
||||
|
||||
pMemDC->SetBkMode(nMode);
|
||||
pMemDC->SelectObject(pOldFont);
|
||||
pMemDC->SelectObject(pOldBitmap);
|
||||
ReleaseDC(pMemDC);
|
||||
delete pMemDC;
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
BOOL CDrawGraph::OnEraseBkgnd(CDC* pDC)
|
||||
{
|
||||
//UNREFERENCED_PARAMETER(pDC);
|
||||
//return TRUE;
|
||||
return CWnd::OnEraseBkgnd(pDC);
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef UNICODE
|
||||
#define COPYSTRING wcscpy_s
|
||||
#else
|
||||
#define COPYSTRING strcpy_s
|
||||
#endif
|
||||
|
||||
#define STR_CLASS_NAME _T("CDrawGraph")
|
||||
|
||||
typedef CArray<double> DataBuff;
|
||||
// CDrawGraph
|
||||
|
||||
class CDrawGraph : public CWnd
|
||||
{
|
||||
DECLARE_DYNAMIC(CDrawGraph)
|
||||
|
||||
CFont m_fontView;
|
||||
COLORREF m_clrCoordBkg,m_clrFrame,m_clrWave;
|
||||
int m_nMarginLeft,m_nMarginTop,m_nMarginRight,m_nMarginBottom;
|
||||
double m_dbStartX, m_dbEndX,m_dbStartY,m_dbEndY;
|
||||
double m_dbResolutionX,m_dbResolutionY;
|
||||
int m_nDivisionX,m_nDivisionY;
|
||||
DataBuff m_dataGraph;
|
||||
|
||||
public:
|
||||
CDrawGraph();
|
||||
virtual ~CDrawGraph();
|
||||
|
||||
void RegisterCtrlClass();
|
||||
void SetViewFont(const CString& strFont, int nPointSize, int nWeight, BOOL bIsRedraw=TRUE);
|
||||
void SetMargin(int nLeft, int nTop, int nRight, int nBottom, BOOL bIsRedraw=TRUE);
|
||||
bool SetGraphyView(double dbStartX, double dbEndX, double dbStartY, double dbEndY, int nDivisionX = 10, int nDivisionY = 10, BOOL bIsRedraw=TRUE);
|
||||
void SetResolution(double dbResolutionX, double dbResolutionY, BOOL bIsRedraw=TRUE);
|
||||
void LoadGraphyData(DataBuff& dataShow);
|
||||
void AddGraphyData(double _data);
|
||||
void RemoveGraphyData(BOOL bIsRedraw=TRUE);
|
||||
void DrawCoordinate(CDC* pDC, CRect rectCoord);
|
||||
void DrawIdealCurve(CDC* pDC, CRect rectCoord);
|
||||
void DrawActualCurve(CDC* pDC, CRect rectCoord);
|
||||
|
||||
protected:
|
||||
virtual void PreSubclassWindow();
|
||||
|
||||
public:
|
||||
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||||
afx_msg void OnPaint();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,147 @@
|
||||
// FileUtilitiesDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "Mv_File_Utilities.h"
|
||||
#include "FileUtilitiesDlg.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
// CFileUtilitiesDlg dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CFileUtilitiesDlg, CDialogEx)
|
||||
|
||||
CFileUtilitiesDlg::CFileUtilitiesDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialogEx(CFileUtilitiesDlg::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CFileUtilitiesDlg::~CFileUtilitiesDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CFileUtilitiesDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialogEx::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CFileUtilitiesDlg, CDialogEx)
|
||||
ON_BN_CLICKED(IDOK, &CFileUtilitiesDlg::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDC_BUTTON_BROWSE, &CFileUtilitiesDlg::OnBnClickedButtonBrowse)
|
||||
ON_BN_CLICKED(IDCANCEL, &CFileUtilitiesDlg::OnBnClickedCancel)
|
||||
ON_BN_CLICKED(IDC_RADIO_EXTRACT, &CFileUtilitiesDlg::OnBnClickedRadioExtract)
|
||||
ON_BN_CLICKED(IDC_RADIO_DUMP_BINARY, &CFileUtilitiesDlg::OnBnClickedRadioDumpBinary)
|
||||
ON_BN_CLICKED(IDC_RADIO_HEX_ASCII2BIN, &CFileUtilitiesDlg::OnBnClickedRadioHexAscii2bin)
|
||||
ON_BN_CLICKED(IDC_RADIO_DEDUPE, &CFileUtilitiesDlg::OnBnClickedRadioDedupe)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
//==============================================================================
|
||||
void CFileUtilitiesDlg::OnBnClickedOk()
|
||||
{
|
||||
char _criteria[256];
|
||||
CString _extractString;
|
||||
CMv_File_Utilities *m_FileUtilities = new CMv_File_Utilities();
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_HEX_BIN2ASCII))->GetCheck())
|
||||
{
|
||||
m_FileUtilities->BinToHexAscii(&m_csInputFile);
|
||||
}
|
||||
else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_DEDUPE))->GetCheck())
|
||||
{
|
||||
m_FileUtilities->DedupeFunction(&m_csInputFile);
|
||||
}
|
||||
else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_HEX_ASCII2BIN))->GetCheck())
|
||||
{
|
||||
}
|
||||
else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_DUMP_BINARY))->GetCheck())
|
||||
{
|
||||
}
|
||||
else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_EXTRACT))->GetCheck())
|
||||
{
|
||||
GetDlgItem(IDC_EDIT_CRITERIA)->GetWindowText(_extractString);
|
||||
if (_extractString.GetLength() == 0)
|
||||
{
|
||||
strcpy(_criteria, "Poll");
|
||||
// MessageBox(_T("Null Crtieria, operation exit."), _T("Warning Message"), MB_OK);
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t sConverted;
|
||||
wcstombs_s(&sConverted, _criteria, _extractString.GetLength()+1, _extractString, _TRUNCATE);
|
||||
};
|
||||
m_FileUtilities->ExtractCommand(&m_csInputFile, (char *)_criteria, ((CButton *)GetDlgItem(IDC_CHECK_NEGATE))->GetCheck());
|
||||
};
|
||||
MessageBox(_T("Done."), _T("Message"), MB_OK);
|
||||
delete m_FileUtilities;
|
||||
m_FileUtilities=nullptr;
|
||||
// CDialogEx::OnOK();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void CFileUtilitiesDlg::OnBnClickedButtonBrowse()
|
||||
{
|
||||
CString strFilters;
|
||||
CString strExt;
|
||||
strFilters = _T("All Files (*.*)|*.*||");
|
||||
strExt = _T("*");
|
||||
CString m_csLogFile = _T("");
|
||||
CString strMsg;
|
||||
CFileDialog fileDlg(TRUE, strExt, (LPCTSTR) m_csLogFile, OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, strFilters, this);
|
||||
if ( fileDlg.DoModal ()==IDOK )
|
||||
{
|
||||
m_csInputFile = fileDlg.GetPathName();
|
||||
GetDlgItem(IDC_EDIT_INPUT_FILE)->SetWindowText(m_csInputFile);
|
||||
};
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
//===========================================================================
|
||||
BOOL CFileUtilitiesDlg::OnInitDialog()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_RADIO_DEDUPE))->SetCheck(1);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_HEX_ASCII2BIN))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_DUMP_BINARY))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_EXTRACT))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_EDIT_CRITERIA))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_NEGATE))->EnableWindow(false);
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
void CFileUtilitiesDlg::OnBnClickedCancel()
|
||||
{
|
||||
CDialogEx::OnCancel();
|
||||
}
|
||||
|
||||
|
||||
void CFileUtilitiesDlg::OnBnClickedRadioExtract()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_EDIT_CRITERIA))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_NEGATE))->EnableWindow(true);
|
||||
}
|
||||
|
||||
|
||||
void CFileUtilitiesDlg::OnBnClickedRadioDumpBinary()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_EDIT_CRITERIA))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_NEGATE))->EnableWindow(false);
|
||||
}
|
||||
|
||||
|
||||
void CFileUtilitiesDlg::OnBnClickedRadioHexAscii2bin()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_EDIT_CRITERIA))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_NEGATE))->EnableWindow(false);
|
||||
}
|
||||
|
||||
|
||||
void CFileUtilitiesDlg::OnBnClickedRadioDedupe()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_EDIT_CRITERIA))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_NEGATE))->EnableWindow(false);
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
#include "Mv_File_Utilities.h"
|
||||
|
||||
// CFileUtilitiesDlg dialog
|
||||
|
||||
class CFileUtilitiesDlg : public CDialogEx
|
||||
{
|
||||
DECLARE_DYNAMIC(CFileUtilitiesDlg)
|
||||
|
||||
public:
|
||||
CFileUtilitiesDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CFileUtilitiesDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_DIALOG_FILE_UTILITIES };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedButtonBrowse();
|
||||
virtual BOOL OnInitDialog();
|
||||
CMv_File_Utilities* m_FileUtilities;
|
||||
CString m_csInputFile;
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedRadioExtract();
|
||||
afx_msg void OnBnClickedRadioDumpBinary();
|
||||
afx_msg void OnBnClickedRadioHexAscii2bin();
|
||||
afx_msg void OnBnClickedRadioDedupe();
|
||||
};
|
||||
@@ -0,0 +1,304 @@
|
||||
// Keyence_UtilDlg.cpp : 实现文件
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "..\..\..\Keyence\Keyence_Laser.h"
|
||||
#include "..\..\..\Keyence\\Keyence_Proto.h"
|
||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||
#include "Keyence_UtilDlg.h"
|
||||
extern CSO7_Proto* m_pSO7_Proto;
|
||||
extern CKeyence_Laser* m_pKeyence_Laser;
|
||||
extern CKeyence_Proto* m_pKeyence_Proto;
|
||||
|
||||
#define MAX_STORAGE_DATA_SIZE 65536
|
||||
|
||||
long lmove_to_x(0);
|
||||
long lmove_to_y(0);
|
||||
long lmove_to_z(0);
|
||||
INT Axis_X(0);
|
||||
INT Axis_Y(0);
|
||||
|
||||
float fLaserVaule1(0);
|
||||
float fLaserVaule2(0);
|
||||
|
||||
// CKeyence_UtilDlg 对话框
|
||||
|
||||
IMPLEMENT_DYNAMIC(CKeyence_UtilDlg, CDialog)
|
||||
|
||||
CKeyence_UtilDlg::CKeyence_UtilDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CKeyence_UtilDlg::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CKeyence_UtilDlg::~CKeyence_UtilDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CKeyence_UtilDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
DDX_Control(pDX, IDC_EDIT_TEST_KEYENCE_MESSAGE, m_edMSG);
|
||||
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CKeyence_UtilDlg, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDC_BUTTON_INIT_KEYENCE_LASER, &CKeyence_UtilDlg::OnBnClickedButtonInitKeyenceLaser)
|
||||
ON_BN_CLICKED(IDC_BUTTON_RUNCNC, &CKeyence_UtilDlg::OnBnClickedButtonRuncnc)
|
||||
ON_BN_CLICKED(IDCANCEL, &CKeyence_UtilDlg::OnBnClickedCancel)
|
||||
ON_BN_CLICKED(IDC_BUTTON_INIT_KEYENCE_USB, &CKeyence_UtilDlg::OnBnClickedButtonInitKeyenceUsb)
|
||||
ON_BN_CLICKED(IDC_BUTTON_RESET_KEYENCE_USB, &CKeyence_UtilDlg::OnBnClickedButtonResetKeyenceUsb)
|
||||
ON_BN_CLICKED(IDC_BUTTON_EXIT_KEYENCE_USB, &CKeyence_UtilDlg::OnBnClickedButtonExitKeyenceUsb)
|
||||
ON_BN_CLICKED(IDC_CHECK_CONTINUE_READ_LASER_VALUE, &CKeyence_UtilDlg::OnBnClickedCheckContinueReadLaserValue)
|
||||
ON_BN_CLICKED(IDC_BUTTON_GET_SCAN_DATA_KEYENCE_LK_GLASER, &CKeyence_UtilDlg::OnBnClickedButtonGetScanDataKeyenceLkGlaser)
|
||||
ON_BN_CLICKED(IDC_BUTTON_STOP_SCAN_KEYENCE_LK_GLASER, &CKeyence_UtilDlg::OnBnClickedButtonStopScanKeyenceLkGlaser)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SCAN_KEYENCE_LK_GLASER, &CKeyence_UtilDlg::OnBnClickedButtonScanKeyenceLkGlaser)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
BOOL CKeyence_UtilDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_pSO7_Proto->Init_SO7Usb();
|
||||
m_pSO7_Proto->_start_machine();
|
||||
m_pKeyence_Laser->KeyenceLaserInit();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
|
||||
// CKeyence_UtilDlg 消息处理程序
|
||||
|
||||
|
||||
void CKeyence_UtilDlg::OnBnClickedButtonInitKeyenceLaser()
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_OPEN_KEYENCE_LASER();
|
||||
do
|
||||
{
|
||||
Sleep(20);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_INTERRUPT_MESSAGE();
|
||||
} while (m_pSO7_Proto->g_machine.InterruptFlag[0]!=CT_SEND_XYZLASE);
|
||||
m_pSO7_Proto->g_machine.InterruptFlag[0]=0;
|
||||
CString csLaserValue;
|
||||
m_pKeyence_Laser->Get_KeyenceLaserData(&fLaserVaule1,&fLaserVaule2);
|
||||
csLaserValue.Format(_T("%f"),fLaserVaule1);
|
||||
GetDlgItem(IDC_EDIT_LASER_VALUE1)->SetWindowText(csLaserValue);
|
||||
csLaserValue.Format(_T("%f"),fLaserVaule2);
|
||||
GetDlgItem(IDC_EDIT_LASER_VALUE2)->SetWindowText(csLaserValue);
|
||||
}
|
||||
//================================================================================================
|
||||
|
||||
void CKeyence_UtilDlg::OnBnClickedCheckContinueReadLaserValue()
|
||||
{
|
||||
if (((CButton*)(GetDlgItem(IDC_CHECK_CONTINUE_READ_LASER_VALUE)))->GetCheck())
|
||||
{
|
||||
((CButton*)(GetDlgItem(IDC_BUTTON_INIT_KEYENCE_LASER)))->EnableWindow(FALSE);
|
||||
SetTimer(1,20,NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
((CButton*)(GetDlgItem(IDC_BUTTON_INIT_KEYENCE_LASER)))->EnableWindow(TRUE);
|
||||
KillTimer(1);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CKeyence_UtilDlg::OnBnClickedButtonScanKeyenceLkGlaser()
|
||||
{
|
||||
m_pKeyence_Laser->StartStoreData(500,20);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X(5);
|
||||
SetTimer(2,100,NULL);
|
||||
}
|
||||
//================================================================================================
|
||||
void CKeyence_UtilDlg::OnBnClickedButtonStopScanKeyenceLkGlaser()
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ();
|
||||
m_pKeyence_Laser->StopStoreData();
|
||||
KillTimer(2);
|
||||
}
|
||||
//================================================================================================
|
||||
void CKeyence_UtilDlg::OnBnClickedButtonGetScanDataKeyenceLkGlaser()
|
||||
{
|
||||
float GetData[MAX_STORAGE_DATA_SIZE];
|
||||
int GetDataNumber(0);
|
||||
m_pKeyence_Laser->GetStoredData(GetData,&GetDataNumber);
|
||||
m_OutMessage.Format(_T("------TotaL:%d--------------"),GetDataNumber);
|
||||
OutputWithScroll(m_OutMessage,m_edMSG);
|
||||
|
||||
FILE* m_pOutFile;
|
||||
char *outBuff = NULL;
|
||||
|
||||
CString cFileName=_T("T:\\log\\Laser.log");
|
||||
_wfopen_s(&m_pOutFile, cFileName, _T("wt"));
|
||||
if (!m_pOutFile)
|
||||
{
|
||||
free(outBuff);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(m_pOutFile,"-------------Total:%d-----------------\n", GetDataNumber);
|
||||
for (int i=0;i<GetDataNumber;i++)
|
||||
{
|
||||
fprintf(m_pOutFile,"[%d]:", i);
|
||||
fprintf(m_pOutFile,"%.4f", GetData[i]);
|
||||
fprintf(m_pOutFile, "\n");
|
||||
}
|
||||
fclose(m_pOutFile);
|
||||
}
|
||||
|
||||
}
|
||||
//================================================================================================
|
||||
void CKeyence_UtilDlg::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
switch(nIDEvent)
|
||||
{
|
||||
case 1:OnBnClickedButtonInitKeyenceLaser();
|
||||
break;
|
||||
case 2:
|
||||
float GetData[MAX_STORAGE_DATA_SIZE];
|
||||
int GetDataNumber(0);
|
||||
m_pKeyence_Laser->PauseScanAndGetData(GetData,&GetDataNumber);
|
||||
m_OutMessage.Format(_T("<Stored>:%d"),m_pKeyence_Laser->m_StoredDataNumber);
|
||||
OutputWithScroll(m_OutMessage,m_edMSG);
|
||||
/*for(INT I=0;I<GetDataNumber;I++)
|
||||
{
|
||||
m_OutMessage.Format(_T("[%d]:%.4f"),I,GetData[I]);
|
||||
OutputWithScroll(m_OutMessage,m_edMSG);
|
||||
}*/
|
||||
break;
|
||||
}
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
|
||||
void CKeyence_UtilDlg::OnBnClickedCancel()
|
||||
{
|
||||
KillTimer(1);
|
||||
KillTimer(2);
|
||||
m_pSO7_Proto->_shutdown_machine();
|
||||
m_pSO7_Proto->Exit_SO7Usb();
|
||||
CDialog::OnCancel();
|
||||
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
//Print message on edit control
|
||||
void CKeyence_UtilDlg::OutputWithScroll(const CString &strNewText,CEdit &edtOutput)
|
||||
{
|
||||
CString strOutput;
|
||||
edtOutput.GetWindowText(strOutput);
|
||||
strOutput += strNewText;
|
||||
if ("\r\n" != strOutput.Right(2))
|
||||
{
|
||||
strOutput += "\r\n";
|
||||
}
|
||||
|
||||
int iCount = strOutput.GetLength();
|
||||
|
||||
edtOutput.SetRedraw(FALSE);
|
||||
edtOutput.SetWindowText(strOutput);
|
||||
int iLine = edtOutput.GetLineCount();
|
||||
edtOutput.LineScroll(iLine, 0);
|
||||
edtOutput.SetSel(iCount, iCount);
|
||||
edtOutput.SetRedraw(TRUE);
|
||||
}
|
||||
/************************************************
|
||||
*************************************************/
|
||||
//===============================================
|
||||
void CKeyence_UtilDlg::OnBnClickedButtonRuncnc()
|
||||
{
|
||||
|
||||
SetTimer(2,300,NULL);
|
||||
}
|
||||
//===============================================
|
||||
void CKeyence_UtilDlg::RunCNC()
|
||||
{
|
||||
|
||||
if (m_pSO7_Proto)
|
||||
{
|
||||
if (Axis_X<75 && Axis_Y<=40)
|
||||
{
|
||||
lmove_to_x=5;
|
||||
lmove_to_y=0;
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=(lmove_to_x*1999);
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=(lmove_to_y*1999);
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=(lmove_to_z*1999);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
Axis_X+=5;
|
||||
}
|
||||
else if (Axis_X>=75 && Axis_Y<40)
|
||||
{
|
||||
lmove_to_x=-75;
|
||||
lmove_to_y=5;
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=(lmove_to_x*1999);
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=(lmove_to_y*1999);
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=(lmove_to_z*1999);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
Axis_X=0;
|
||||
Axis_Y+=5;
|
||||
}
|
||||
else if (Axis_X>=75 && Axis_Y>=40)
|
||||
{
|
||||
lmove_to_x=-75;
|
||||
lmove_to_y=-40;
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=(lmove_to_x*1999);
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=(lmove_to_y*1999);
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=(lmove_to_z*1999);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
Axis_X=0;
|
||||
Axis_Y=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=0;
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=0;
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=0;
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
void CKeyence_UtilDlg::OnBnClickedButtonInitKeyenceUsb()
|
||||
{
|
||||
|
||||
if (m_pKeyence_Proto)
|
||||
{
|
||||
if (m_pKeyence_Proto->Init_MvUsb())
|
||||
{
|
||||
m_OutMessage = _T("Usb Port Error");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
return;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
void CKeyence_UtilDlg::OnBnClickedButtonResetKeyenceUsb()
|
||||
{
|
||||
|
||||
m_pKeyence_Proto->_usb_reset();
|
||||
m_OutMessage = _T("The usb has been reseted.");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
}
|
||||
void CKeyence_UtilDlg::OnBnClickedButtonExitKeyenceUsb()
|
||||
{
|
||||
|
||||
m_pKeyence_Proto->Exit_MvUsb();
|
||||
m_OutMessage = _T("Ready - Usb Port Released");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
// CKeyence_UtilDlg 对话框
|
||||
|
||||
class CKeyence_UtilDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CKeyence_UtilDlg)
|
||||
|
||||
public:
|
||||
CKeyence_UtilDlg(CWnd* pParent = NULL); // 标准构造函数
|
||||
virtual ~CKeyence_UtilDlg();
|
||||
|
||||
// 对话框数据
|
||||
enum { IDD = IDD_DIALOG_TEST_KEYENCE };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
virtual BOOL OnInitDialog();
|
||||
CEdit m_edMSG;
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
CString m_OutMessage;
|
||||
void RunCNC();
|
||||
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
|
||||
afx_msg void OnBnClickedButtonInitKeyenceLaser();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnBnClickedButtonRuncnc();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedButtonInitKeyenceUsb();
|
||||
afx_msg void OnBnClickedButtonResetKeyenceUsb();
|
||||
afx_msg void OnBnClickedButtonExitKeyenceUsb();
|
||||
afx_msg void OnBnClickedCheckContinueReadLaserValue();
|
||||
afx_msg void OnBnClickedButtonGetScanDataKeyenceLkGlaser();
|
||||
afx_msg void OnBnClickedButtonStopScanKeyenceLkGlaser();
|
||||
afx_msg void OnBnClickedButtonScanKeyenceLkGlaser();
|
||||
};
|
||||
@@ -0,0 +1,379 @@
|
||||
// AutoTestDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "Mv_AutoTestDlg.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
|
||||
extern CMv_Proto *m_pMv_Proto;
|
||||
|
||||
int CMv_AutoTestDlg::g_hThread_State;
|
||||
HANDLE CMv_AutoTestDlg::g_hThread_Id;
|
||||
CString CMv_AutoTestDlg::g_EditString;
|
||||
HANDLE CMv_AutoTestDlg::g_hExitMutex;
|
||||
|
||||
// CMv_AutoTestDlg dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CMv_AutoTestDlg, CDialogEx)
|
||||
|
||||
CMv_AutoTestDlg::CMv_AutoTestDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialogEx(CMv_AutoTestDlg::IDD, pParent)
|
||||
, vIterations(_T(""))
|
||||
, bUpdateFlag(false)
|
||||
, vMessageWindow(_T(""))
|
||||
{
|
||||
vMotionSpeed = _T("");
|
||||
}
|
||||
|
||||
//========================================================================
|
||||
CMv_AutoTestDlg::~CMv_AutoTestDlg()
|
||||
{
|
||||
}
|
||||
|
||||
//========================================================================
|
||||
void CMv_AutoTestDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialogEx::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_EDIT_ITERATIONS, vIterations);
|
||||
DDX_Text(pDX, IDC_EDIT_MOTION_SPEED, vMotionSpeed);
|
||||
DDX_Text(pDX, IDC_EDIT_AUTO_TEST_TEXT, vMessageWindow);
|
||||
DDX_Text(pDX, IDC_EDIT_SCALE_X, m_scale_x);
|
||||
DDX_Text(pDX, IDC_EDIT_SCALE_Y, m_scale_y);
|
||||
DDX_Text(pDX, IDC_EDIT_SCALE_Z, m_scale_z);
|
||||
DDX_Text(pDX, IDC_EDIT_SCALE_ZM, m_scale_zm);
|
||||
}
|
||||
|
||||
//========================================================================
|
||||
BEGIN_MESSAGE_MAP(CMv_AutoTestDlg, CDialogEx)
|
||||
ON_BN_CLICKED(IDCANCEL, &CMv_AutoTestDlg::OnBnClickedExit)
|
||||
ON_BN_CLICKED(IDOK, &CMv_AutoTestDlg::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDSTOP, &CMv_AutoTestDlg::OnBnClickedBreak)
|
||||
ON_WM_TIMER()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
//===========================================================================
|
||||
// CMv_AutoTestDlg message handlers
|
||||
//===========================================================================
|
||||
void CMv_AutoTestDlg::OnBnClickedExit()
|
||||
{
|
||||
KillTimer(1);
|
||||
CDialogEx::OnCancel();
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// This function creates all objects and delete them all upon exit.
|
||||
//===========================================================================
|
||||
void CMv_AutoTestDlg::OnBnClickedOk()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
SetTimer(1, 20, 0);
|
||||
m_iIterations = _ttoi(vIterations);
|
||||
m_iMotionSpeed = _ttoi(vMotionSpeed);
|
||||
m_iTop_Bottom = ((CButton *)GetDlgItem(IDC_CHECK_CYCLE_TOP_BOTTOM_LIGHTS))->GetCheck();
|
||||
m_iRing_Light = ((CButton *)GetDlgItem(IDC_CHECK_CYCLE_RING_LIGHTS))->GetCheck();
|
||||
m_iZoom = ((CButton *)GetDlgItem(IDC_CHECK_CYCLE_ZOOM))->GetCheck();
|
||||
m_iCycle_Stage = ((CButton *)GetDlgItem(IDC_CHECK_CYCLE_STAGE))->GetCheck();
|
||||
m_iCycle_Rotary = ((CButton *)GetDlgItem(IDC_CHECK_CYCLE_ROTARY))->GetCheck();
|
||||
if (!(m_iCycle_Stage || m_iRing_Light || m_iTop_Bottom || m_iZoom || m_iCycle_Rotary))
|
||||
{
|
||||
m_status_msg += _T("======== Cycle selection not set, leaving. ======\r\n");
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_AUTO_TEST_TEXT))->SetWindowText(m_status_msg);
|
||||
return;
|
||||
}
|
||||
g_hThread_State = THREAD_RUNNING; // Set thread to running
|
||||
g_hThread_Id = CreateThread( (LPSECURITY_ATTRIBUTES) NULL,
|
||||
0,
|
||||
(LPTHREAD_START_ROUTINE) g_Thread,
|
||||
(LPVOID) this,
|
||||
0,
|
||||
NULL);
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_AUTO_TEST_TEXT))->SetWindowText(m_status_msg);
|
||||
((CButton *)GetDlgItem(IDSTOP))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDOK))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDCANCEL))->EnableWindow(false);
|
||||
}
|
||||
|
||||
//========================================================================
|
||||
//
|
||||
//========================================================================
|
||||
void CMv_AutoTestDlg::CycleTopBottomLights()
|
||||
{
|
||||
// ramp up the bottom light
|
||||
for (int ii=0 ; ii<11; ii++ )
|
||||
{
|
||||
m_pMv_Proto->mv_light_set_lamp_state(ii*10.0, 0.0);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
}
|
||||
m_pMv_Proto->mv_light_set_lamp_state(0.0, 0.0);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
|
||||
// ramp up the top light
|
||||
for (int ii=0 ; ii<11; ii++ )
|
||||
{
|
||||
m_pMv_Proto->mv_light_set_lamp_state(0.0, ii*10.0);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
}
|
||||
m_pMv_Proto->mv_light_set_lamp_state(0.0, 0.0);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
return;
|
||||
};
|
||||
|
||||
//========================================================================
|
||||
//
|
||||
//========================================================================
|
||||
void CMv_AutoTestDlg::CycleRingLights()
|
||||
{
|
||||
if (m_pMv_Proto->g_machine.s_machine_config._vector_light_model == 2)
|
||||
{
|
||||
for (int ii=0 ; ii<TWO_RINGS; ii++ )
|
||||
{
|
||||
for (int jj=0 ; jj<EIGHT_SEGS ; jj++)
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_lights_200._segment[ii][jj] = 256;
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
m_pMv_Proto->g_machine.s_lights_200._segment[ii][jj] = 0;
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
// if (m_pMv_Proto->g_machine.s_machine_config._vector_light_model == 3)
|
||||
{
|
||||
for (int ii=0 ; ii<FIVE_RINGS; ii++ )
|
||||
{
|
||||
for (int jj=0 ; jj<EIGHT_SEGS ; jj++)
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_lights_300._segment[ii][jj] = 256;
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
m_pMv_Proto->g_machine.s_lights_300._segment[ii][jj] = 0;
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
}
|
||||
}
|
||||
};
|
||||
MessageBeep(MB_ICONINFORMATION);
|
||||
|
||||
for (int lIntensity = 0 ; lIntensity < MAXINTENSITY ; lIntensity += (long)(MAXINTENSITY*0.05))
|
||||
{
|
||||
m_pMv_Proto->mv_set_full_ringlight_data(lIntensity);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
}
|
||||
|
||||
MessageBeep(MB_ICONINFORMATION);
|
||||
|
||||
for (int lIntensity = MAXINTENSITY ; lIntensity > 0 ; lIntensity -= (long)(MAXINTENSITY*0.05))
|
||||
{
|
||||
m_pMv_Proto->mv_set_full_ringlight_data(lIntensity);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
}
|
||||
MessageBeep(MB_ICONINFORMATION);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
BOOL CMv_AutoTestDlg::OnInitDialog()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_EDIT_ITERATIONS))->SetWindowText(_T("1"));
|
||||
((CButton *)GetDlgItem(IDC_EDIT_MOTION_SPEED))->SetWindowTextW(_T("100"));
|
||||
((CButton *)GetDlgItem(IDC_CHECK_CYCLE_TOP_BOTTOM_LIGHTS))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_CYCLE_STAGE))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_CYCLE_RING_LIGHTS))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDSTOP))->EnableWindow(false);
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
//===========================================================================
|
||||
void CMv_AutoTestDlg::OnBnClickedBreak()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDSTOP))->EnableWindow(false);
|
||||
g_hThread_State = THREAD_EXIT; // Set thread to stop
|
||||
WaitForSingleObject(g_hExitMutex, INFINITE);
|
||||
CloseHandle(g_hExitMutex);
|
||||
KillTimer(1);
|
||||
((CButton *)GetDlgItem(IDOK))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDCANCEL))->EnableWindow(true);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// Worker Thread to run the autotest
|
||||
//===========================================================================
|
||||
unsigned __stdcall CMv_AutoTestDlg::g_Thread(LPVOID pThis)
|
||||
{
|
||||
CMv_AutoTestDlg* _This = (CMv_AutoTestDlg*)pThis;
|
||||
USES_CONVERSION;
|
||||
SSI_STATUS sStatus;
|
||||
g_hExitMutex=CreateMutex(NULL,TRUE,NULL); // Owned
|
||||
sStatus = m_pMv_Proto->Load_MicroVu_Config();
|
||||
_This->m_status_msg += _T("======== Loading configuration file. \r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
if (sStatus == SSI_STATUS_MV_CONFIG_FILE_NOT_FOUND)
|
||||
{
|
||||
// Initiallize default values
|
||||
};
|
||||
sStatus = m_pMv_Proto->Init_MvUsb();
|
||||
if (sStatus == SSI_STATUS_DATALINK_ERROR)
|
||||
{
|
||||
_This->m_status_msg += _T("======== Unable to start Usb. \r\n");
|
||||
((CButton *)(_This->GetDlgItem(IDSTOP)))->EnableWindow(false);
|
||||
((CButton *)(_This->GetDlgItem(IDOK)))->EnableWindow(true);
|
||||
((CButton *)(_This->GetDlgItem(IDCANCEL)))->EnableWindow(true);
|
||||
ExitThread(0);
|
||||
};
|
||||
|
||||
((CButton *)(_This->GetDlgItem(IDSTOP)))->EnableWindow(false);
|
||||
((CButton *)(_This->GetDlgItem(IDOK)))->EnableWindow(false);
|
||||
((CButton *)(_This->GetDlgItem(IDCANCEL)))->EnableWindow(false);
|
||||
m_pMv_Proto->_start_machine();
|
||||
m_pMv_Proto->_get_xyz_index();
|
||||
m_pMv_Proto->_poll_machine_59();
|
||||
_This->m_status_msg += _T("======== Homing the stage. Please wait. \r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
::MessageBox(NULL, _T("======== Please clear all objects from the stage. Press OK when ready."), _T("Warning"), MB_OK);
|
||||
m_pMv_Proto->mv_motion_Dcc_Home();
|
||||
_This->m_status_msg += _T("======== Homing completed.\r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
((CButton *)(_This->GetDlgItem(IDSTOP)))->EnableWindow(true);
|
||||
((CButton *)(_This->GetDlgItem(IDOK)))->EnableWindow(false);
|
||||
((CButton *)(_This->GetDlgItem(IDCANCEL)))->EnableWindow(false);
|
||||
|
||||
int iIteration = _This->m_iIterations < 0 ? 5 : _This->m_iIterations;
|
||||
for (int i=0; i<iIteration; i++)
|
||||
{
|
||||
if (_This->m_iIterations == 0) i = 0;
|
||||
if (g_hThread_State == THREAD_EXIT) break;
|
||||
_This->m_status_msg += _T("======== Processing iteration : " );
|
||||
g_EditString.Format(_T("%d"),(i+1));
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->m_status_msg += _T("\r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
USES_CONVERSION;
|
||||
if (_This->m_iCycle_Stage)
|
||||
{
|
||||
_This->m_status_msg += _T(" Motion speed : ");
|
||||
g_EditString.Format(_T("%d"),_This->m_iMotionSpeed);
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->m_status_msg += _T("\r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
m_pMv_Proto->mv_motion_set_speed_xyz(_This->m_iMotionSpeed);
|
||||
double dX = 100.0, dY = 100.0, dZ = 80.0;
|
||||
m_pMv_Proto->mv_motion_set_position_xyz(dX, dY, dZ, true);
|
||||
double dXFinal=0.0, dYFinal=0.0, dZFinal = 0.0;
|
||||
m_pMv_Proto->mv_motion_get_position_xyz(dXFinal, dYFinal, dZFinal);
|
||||
g_EditString.Format(_T(" Set Position : %8.4lf %8.4lf %8.4lf\r\n"), dX, dY, dZ);
|
||||
_This->m_status_msg += g_EditString;
|
||||
g_EditString.Format(_T(" Get Position : %8.4lf %8.4lf %8.4lf\r\n"), dXFinal, dYFinal, dZFinal);
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->bUpdateFlag = true;
|
||||
m_pMv_Proto->mv_motion_set_speed_xyz(_This->m_iMotionSpeed);
|
||||
|
||||
dX = 200.0;
|
||||
dY = 150.0;
|
||||
dZ = 100.0;
|
||||
|
||||
m_pMv_Proto->mv_motion_set_position_xyz(dX, dY, dZ, true);
|
||||
m_pMv_Proto->mv_motion_get_position_xyz(dXFinal, dYFinal, dZFinal);
|
||||
g_EditString.Format(_T(" Set Position : %8.4lf %8.4lf %8.4lf\r\n"), dX, dY, dZ);
|
||||
_This->m_status_msg += g_EditString;
|
||||
g_EditString.Format(_T(" Get Position : %8.4lf %8.4lf %8.4lf\r\n"), dXFinal, dYFinal, dZFinal);
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->bUpdateFlag = true;
|
||||
}
|
||||
if (g_hThread_State == THREAD_EXIT) break;
|
||||
if (_This->m_iRing_Light)
|
||||
{
|
||||
_This->m_status_msg += _T(" Cycle Ring Light. \r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
_This->CycleRingLights();
|
||||
};
|
||||
if (g_hThread_State == THREAD_EXIT) break;
|
||||
if (_This->m_iTop_Bottom)
|
||||
{
|
||||
_This->m_status_msg += _T(" Cycle Top and Bottom Lights. \r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
_This->CycleTopBottomLights();
|
||||
};
|
||||
|
||||
if (g_hThread_State == THREAD_EXIT) break;
|
||||
long lScale = -999999;
|
||||
if (_This->m_iZoom)
|
||||
{
|
||||
_This->m_status_msg += _T(" Get Zoom Scale : ");
|
||||
_This->bUpdateFlag = true;
|
||||
m_pMv_Proto->mv_optics_get_scale_position(lScale);
|
||||
g_EditString.Format(_T("%ld"), lScale);
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->m_status_msg += _T("\r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
g_EditString.Format(_T(" Set Zoom Scale : %ld \r\n"), lScale+5000);
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->bUpdateFlag = true;
|
||||
m_pMv_Proto->mv_optics_set_scale_position(lScale+5000);
|
||||
|
||||
_This->m_status_msg += _T(" Get Zoom Scale : ");
|
||||
_This->bUpdateFlag = true;
|
||||
m_pMv_Proto->_send_cmd_MV_CMD_GET_MAG_43(0x03);
|
||||
g_EditString.Format(_T("%ld"), m_pMv_Proto->g_machine.zm._pos_59);
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->m_status_msg += _T("\r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
g_EditString.Format(_T(" Set Zoom Scale : %ld \r\n"), lScale-5000);
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->bUpdateFlag = true;
|
||||
m_pMv_Proto->mv_optics_set_scale_position(lScale-5000);
|
||||
|
||||
_This->m_status_msg += _T(" Get Zoom Scale : ");
|
||||
_This->bUpdateFlag = true;
|
||||
m_pMv_Proto->_send_cmd_MV_CMD_GET_MAG_43(0x03);
|
||||
g_EditString.Format(_T("%ld"), m_pMv_Proto->g_machine.zm._pos_59);
|
||||
_This->m_status_msg += g_EditString;
|
||||
_This->m_status_msg += _T("\r\n");
|
||||
_This->bUpdateFlag = true;
|
||||
m_pMv_Proto->_poll_machine_59();
|
||||
};
|
||||
if (_This->m_iCycle_Rotary)
|
||||
{
|
||||
for (int j = 1; j<12; j++)
|
||||
{
|
||||
m_pMv_Proto->mv_motion_set_position_r(30.0*j);
|
||||
Sleep(10);
|
||||
};
|
||||
};
|
||||
_This->m_status_msg += _T("======== Iteration completed. \r\n");
|
||||
}
|
||||
m_pMv_Proto->_shutdown_machine();
|
||||
m_pMv_Proto->Exit_MvUsb();
|
||||
ReleaseMutex(g_hExitMutex);
|
||||
ExitThread(0);
|
||||
};
|
||||
|
||||
//================================================================================================
|
||||
// This is needed to update the status window periodically.
|
||||
//================================================================================================
|
||||
void CMv_AutoTestDlg::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
if (m_pMv_Proto)
|
||||
{
|
||||
if (bUpdateFlag)
|
||||
{
|
||||
CString temp;
|
||||
temp = m_status_msg;
|
||||
((CEdit *)GetDlgItem(IDC_EDIT_AUTO_TEST_TEXT))->SetWindowText(temp);
|
||||
bUpdateFlag = false;
|
||||
};
|
||||
m_scale_x.Format(_T("%8ld"),(m_pMv_Proto->g_machine.x._pos_59));
|
||||
GetDlgItem(IDC_EDIT_SCALE_X)->SetWindowText(m_scale_x);
|
||||
m_scale_y.Format(_T("%8ld"),(m_pMv_Proto->g_machine.y._pos_59));
|
||||
GetDlgItem(IDC_EDIT_SCALE_Y)->SetWindowText(m_scale_y);
|
||||
m_scale_z.Format(_T("%8ld"),(m_pMv_Proto->g_machine.z._pos_59));
|
||||
GetDlgItem(IDC_EDIT_SCALE_Z)->SetWindowText(m_scale_z);
|
||||
m_scale_zm.Format(_T("%8ld"),(m_pMv_Proto->g_machine.zm._pos_59));
|
||||
GetDlgItem(IDC_EDIT_SCALE_ZM)->SetWindowText(m_scale_zm);
|
||||
}
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
#include "afxwin.h"
|
||||
|
||||
// CMv_AutoTestDlg dialog
|
||||
|
||||
class CMv_AutoTestDlg : public CDialogEx
|
||||
{
|
||||
DECLARE_DYNAMIC(CMv_AutoTestDlg)
|
||||
|
||||
public:
|
||||
CMv_AutoTestDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CMv_AutoTestDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_DIALOG_AUTO_TEST };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedExit();
|
||||
void CycleTopBottomLights();
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedBreak();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
void CycleRingLights();
|
||||
BOOL OnInitDialog();
|
||||
// Number of times to execute
|
||||
CString vIterations;
|
||||
int m_iIterations;
|
||||
|
||||
static int g_hThread_State;
|
||||
static unsigned __stdcall g_Thread(LPVOID pThis);
|
||||
static HANDLE g_hThread_Id;
|
||||
static CString g_EditString;
|
||||
CString vMotionSpeed;
|
||||
int m_iMotionSpeed;
|
||||
CString vMessageWindow;
|
||||
CString m_status_msg;
|
||||
BOOL bUpdateFlag;
|
||||
BOOL m_iTop_Bottom;
|
||||
BOOL m_iRing_Light;
|
||||
BOOL m_iCycle_Stage;
|
||||
BOOL m_iCycle_Rotary;
|
||||
BOOL m_iZoom;
|
||||
long m_lScale;
|
||||
CString m_scale_x;
|
||||
CString m_scale_y;
|
||||
CString m_scale_z;
|
||||
CString m_scale_zm;
|
||||
static HANDLE g_hExitMutex;
|
||||
};
|
||||
@@ -0,0 +1,60 @@
|
||||
// Mv_ConfigDataDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "Mv_ConfigDataDlg.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "DirDialog.h"
|
||||
|
||||
// CMv_ConfigDataDlg dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CMv_ConfigDataDlg, CDialogEx)
|
||||
|
||||
CMv_ConfigDataDlg::CMv_ConfigDataDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialogEx(CMv_ConfigDataDlg::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CMv_ConfigDataDlg::~CMv_ConfigDataDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CMv_ConfigDataDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialogEx::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CMv_ConfigDataDlg, CDialogEx)
|
||||
ON_BN_CLICKED(IDOK, &CMv_ConfigDataDlg::OnBnClickedOk)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CMv_ConfigDataDlg message handlers
|
||||
|
||||
|
||||
void CMv_ConfigDataDlg::OnBnClickedOk()
|
||||
{
|
||||
|
||||
// Select the target directory
|
||||
CString m_szDirName;
|
||||
CDirDialog dirDlg;
|
||||
dirDlg.m_strSelDir = _T("C:\\Program Files\\Micro-Vu Corporation\\InSpec for Windows");
|
||||
if (dirDlg.DoBrowse())
|
||||
{
|
||||
m_szDirName = dirDlg.m_strPath;
|
||||
};
|
||||
CString FromFile = m_szDirName + _T("\\InSpecDiagCollect.zip");
|
||||
CString ToFile;
|
||||
BOOL bFailIfExists = false;
|
||||
if(::CopyFile(FromFile,ToFile,bFailIfExists))
|
||||
{
|
||||
CString Entry;
|
||||
Entry.Format(_T("\r\nCopied %s"), FromFile);
|
||||
Entry.Format(_T("\r\nTo %s"),ToFile);
|
||||
}
|
||||
|
||||
CDialogEx::OnOK();
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CMv_ConfigDataDlg dialog
|
||||
|
||||
class CMv_ConfigDataDlg : public CDialogEx
|
||||
{
|
||||
DECLARE_DYNAMIC(CMv_ConfigDataDlg)
|
||||
|
||||
public:
|
||||
CMv_ConfigDataDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CMv_ConfigDataDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_DIALOG_COPY_INSPEC_CONFIG };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedOk();
|
||||
};
|
||||
@@ -0,0 +1,186 @@
|
||||
#include "StdAfx.h"
|
||||
#include "Mv_File_Utilities.h"
|
||||
|
||||
#define MAX_BUFF_SIZE 1024
|
||||
// ==========================================================================================
|
||||
// Read in a buffer. Look for the key. Match one of them.
|
||||
// iFmt = -1 not used.
|
||||
// ==========================================================================================
|
||||
int CMv_File_Utilities::DedupeFunction(CString *_InFileName)
|
||||
{
|
||||
FILE* pInFile;
|
||||
FILE* pOutFile;
|
||||
char LastCmd[MAX_BUFF_SIZE];
|
||||
char PrintLine[MAX_BUFF_SIZE];
|
||||
char InBuff[MAX_BUFF_SIZE];
|
||||
int iCount=0;
|
||||
|
||||
memset(LastCmd, 0, MAX_BUFF_SIZE);
|
||||
CString OutFileName = *_InFileName + _T("_scrubbed.txt");
|
||||
_wfopen_s(&pOutFile, OutFileName, _T("w"));
|
||||
if (!pOutFile)
|
||||
return -1;
|
||||
_wfopen_s(&pInFile, *_InFileName, _T("r"));
|
||||
if (!pInFile)
|
||||
{
|
||||
fclose(pOutFile);
|
||||
return(-1);
|
||||
};
|
||||
memset(PrintLine, 0, MAX_BUFF_SIZE);
|
||||
fgets((char *)InBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line
|
||||
while (!feof(pInFile))
|
||||
{
|
||||
if (!_strnicmp(InBuff, "Matrix", 6))
|
||||
{
|
||||
if (!_strnicmp(LastCmd, InBuff, strlen(InBuff)))
|
||||
{
|
||||
iCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strlen(LastCmd) > 2)
|
||||
{
|
||||
LastCmd[strlen(LastCmd)-1] = 0;
|
||||
fprintf(pOutFile, "%s (%i) \n", LastCmd, iCount+1);
|
||||
iCount=0;
|
||||
}
|
||||
strcpy(LastCmd, InBuff);
|
||||
fgets((char *)InBuff, MAX_BUFF_SIZE, pInFile ); //
|
||||
}
|
||||
};
|
||||
fgets((char *)InBuff, MAX_BUFF_SIZE, pInFile ); //
|
||||
};
|
||||
fclose(pInFile);
|
||||
fclose(pOutFile);
|
||||
return 0;
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
int CMv_File_Utilities::ExtractCommand(CString* _InFileName, char* _criteriaString, int bNegate)
|
||||
{
|
||||
FILE* pInFile;
|
||||
FILE* pOutFile;
|
||||
char inBuff[MAX_BUFF_SIZE];
|
||||
char _criteriaArray[5][256];
|
||||
|
||||
CString OutFileName = *_InFileName + _T("_scrubbed.txt");
|
||||
_wfopen_s(&pOutFile, OutFileName, _T("w"));
|
||||
if (!pOutFile)
|
||||
return -1;
|
||||
_wfopen_s(&pInFile, *_InFileName, _T("r"));
|
||||
if (!pInFile)
|
||||
{
|
||||
fclose(pOutFile);
|
||||
return(-1);
|
||||
};
|
||||
fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line
|
||||
char *token = NULL;
|
||||
int idx = 0;
|
||||
int i;
|
||||
token = strtok(_criteriaString, ";");
|
||||
while (token)
|
||||
{
|
||||
strcpy(_criteriaArray[idx], token);
|
||||
++idx;
|
||||
token = strtok(NULL, ";");
|
||||
};
|
||||
if (bNegate)
|
||||
{
|
||||
while (!feof(pInFile))
|
||||
{
|
||||
if ((inBuff[0] == '<') || (inBuff[0] == '>'))
|
||||
{
|
||||
fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); //
|
||||
continue;
|
||||
}
|
||||
for (i=0; i<idx; i++)
|
||||
{
|
||||
if (strstr(inBuff, _criteriaArray[i]))
|
||||
{
|
||||
i = -1;
|
||||
break;
|
||||
}
|
||||
};
|
||||
if (i>0)
|
||||
fprintf(pOutFile, inBuff);
|
||||
fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); //
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
while (!feof(pInFile))
|
||||
{
|
||||
for (int i=0; i<idx; i++)
|
||||
{
|
||||
if (strstr(inBuff, _criteriaArray[i]))
|
||||
{
|
||||
fprintf(pOutFile, inBuff);
|
||||
break;
|
||||
}
|
||||
};
|
||||
fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); //
|
||||
};
|
||||
};
|
||||
fclose(pInFile);
|
||||
fclose(pOutFile);
|
||||
return 0;
|
||||
};
|
||||
|
||||
//=====================================================================================
|
||||
CMv_File_Utilities::CMv_File_Utilities(void)
|
||||
{
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
CMv_File_Utilities::~CMv_File_Utilities(void)
|
||||
{
|
||||
}
|
||||
|
||||
// ==========================================================================================
|
||||
// Read in a buffer. Look for the key. Match one of them.
|
||||
// iFmt = -1 not used.
|
||||
// ==========================================================================================
|
||||
int CMv_File_Utilities::BinToHexAscii(CString *_InFileName)
|
||||
{
|
||||
FILE* pInFile;
|
||||
FILE* pOutFile;
|
||||
unsigned char *fBuff = NULL;
|
||||
int bytes_read = 0;
|
||||
unsigned long byte_pos = 0;
|
||||
|
||||
CString OutFileName = *_InFileName + _T("_ASCII.txt");
|
||||
_wfopen_s(&pOutFile, OutFileName, _T("wt"));
|
||||
if (!pOutFile)
|
||||
return -1;
|
||||
_wfopen_s(&pInFile, *_InFileName, _T("rb"));
|
||||
if (!pInFile)
|
||||
{
|
||||
fprintf(pOutFile, "%s not found.\n", _InFileName);
|
||||
fclose(pOutFile);
|
||||
return(-1);
|
||||
};
|
||||
|
||||
fBuff = (unsigned char *)malloc(MAX_BUFF_SIZE);
|
||||
memset(fBuff, 0, MAX_BUFF_SIZE);
|
||||
while (!feof(pInFile))
|
||||
{
|
||||
bytes_read = fread(fBuff, 1, 32, pInFile);
|
||||
if (bytes_read > 0)
|
||||
{
|
||||
fprintf(pOutFile, "%8.8X : ", byte_pos);
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
fprintf(pOutFile, "%2.2X%2.2X%2.2X%2.2X ", *(fBuff+j*4), *(fBuff+j*4+1), *(fBuff+j*4+2), *(fBuff+j*4+3));
|
||||
};
|
||||
fprintf(pOutFile, "\n");
|
||||
byte_pos += 32;
|
||||
};
|
||||
};
|
||||
|
||||
fclose(pInFile);
|
||||
fclose(pOutFile);
|
||||
|
||||
free(fBuff);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
#include "afxwin.h"
|
||||
|
||||
class CMv_File_Utilities
|
||||
{
|
||||
public:
|
||||
CMv_File_Utilities(void);
|
||||
~CMv_File_Utilities(void);
|
||||
int BinToHexAscii(CString* InFileName);
|
||||
int DedupeFunction(CString* InFileName);
|
||||
int ExtractCommand(CString* InFileName, char *_criteriaString, int bNegate);
|
||||
};
|
||||
@@ -0,0 +1,534 @@
|
||||
// Mv_MainDlg.cpp : implementation file
|
||||
//
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
#include "Mv_UtilDlg.h"
|
||||
#include "Mv_AutoTestDlg.h"
|
||||
#include "Mv_ProtocolAnalyzerDlg.h"
|
||||
#include "CaptureDataDlg.h"
|
||||
#include "FileUtilitiesDlg.h"
|
||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||
#include "ProcessButton.h"
|
||||
#include "..\..\..\Animatics\Animatics_Proto.h"
|
||||
#include "AnimaticsUtilityDlg.h"
|
||||
#include "Animatics_UtilDlg.h"
|
||||
#include "SO7_UtilDlg.h"
|
||||
#include "So7_Option.h"
|
||||
#include "Mv_MainDlg.h"
|
||||
|
||||
CMv_Proto* m_pMv_Proto =NULL;
|
||||
SmartMotor_Proto* pSmartMotor_Proto=NULL;
|
||||
|
||||
|
||||
// CMv_MainDlg dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CMv_MainDlg, CDialogEx)
|
||||
|
||||
CMv_MainDlg::CMv_MainDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialogEx(CMv_MainDlg::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
CMv_MainDlg::~CMv_MainDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CMv_MainDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialogEx::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CMv_MainDlg, CDialogEx)
|
||||
ON_BN_CLICKED(IDC_BUTTON_DIAGNOSTICS, &CMv_MainDlg::OnBnClickedButtonDiagnostics)
|
||||
ON_BN_CLICKED(IDC_BUTTON_AUTO_TEST, &CMv_MainDlg::OnBnClickedButtonAutoTest)
|
||||
ON_BN_CLICKED(IDC_BUTTON_PROTOCOL_ANALYZER, &CMv_MainDlg::OnBnClickedButtonProtocolAnalyzerDlg)
|
||||
ON_BN_CLICKED(IDC_BUTTON_REPLAY_STARTUP, &CMv_MainDlg::OnBnClickedButtonReplayStartup)
|
||||
ON_BN_CLICKED(IDOK, &CMv_MainDlg::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDC_BUTTON_START_CAPTURE, &CMv_MainDlg::OnBnClickedButtonStartCapture)
|
||||
ON_BN_CLICKED(IDC_RADIO_DATA_CAPTURE_MODE, &CMv_MainDlg::OnBnClickedRadioDataCaptureMode)
|
||||
ON_BN_CLICKED(IDC_RADIO_ENGINEERING_MODE, &CMv_MainDlg::OnBnClickedRadioEngineering)
|
||||
ON_BN_CLICKED(IDC_RADIO_DEMO_MODE, &CMv_MainDlg::OnBnClickedRadioDemoMode)
|
||||
ON_BN_CLICKED(IDC_BUTTON_FILE_UTILITIES, &CMv_MainDlg::OnBnClickedButtonFileUtilities)
|
||||
ON_BN_CLICKED(IDC_RADIO_MACHINE_MICROVU, &CMv_MainDlg::OnBnClickedRadioMachineMicrovu)
|
||||
ON_BN_CLICKED(IDC_RADIO_MACHINE_MITUTOYO, &CMv_MainDlg::OnBnClickedRadioMachineMitutoyo)
|
||||
ON_BN_CLICKED(IDC_BUTTON_CREATE_CONFIG, &CMv_MainDlg::OnBnClickedButtonCreateConfig)
|
||||
ON_BN_CLICKED(IDC_RADIO_MACHINE_SevenOcean, &CMv_MainDlg::OnBnClickedRadioMachineSevenocean)
|
||||
ON_BN_CLICKED(IDC_RADIO_MACHINE_GENERIC, &CMv_MainDlg::OnBnClickedRadioMachineGeneric)
|
||||
ON_BN_CLICKED(IDC_RADIO_MACHINE_ANIMATICS, &CMv_MainDlg::OnBnClickedRadioAnimatics)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
//===========================================================================
|
||||
//===========================================================================
|
||||
// CMv_MainDlg message handlers
|
||||
//===========================================================================
|
||||
//===========================================================================
|
||||
void CMv_MainDlg::OnBnClickedButtonDiagnostics()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->GetCheck())
|
||||
{
|
||||
CMv_UtilDlg* pMv_UtilDlg = new CMv_UtilDlg();
|
||||
pMv_UtilDlg->DoModal();
|
||||
delete pMv_UtilDlg;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_MACHINE_SevenOcean))->GetCheck())
|
||||
{
|
||||
CSo7_Option* pSo7_Option=new CSo7_Option();
|
||||
pSo7_Option->DoModal();
|
||||
delete pSo7_Option;
|
||||
pSo7_Option=nullptr;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_MACHINE_ANIMATICS))->GetCheck())
|
||||
{
|
||||
if(!pSmartMotor_Proto)
|
||||
{
|
||||
pSmartMotor_Proto=new SmartMotor_Proto();
|
||||
}
|
||||
AnimaticsUtilityDlg* pAnimaticsDlg =new AnimaticsUtilityDlg();
|
||||
pAnimaticsDlg->DoModal();
|
||||
delete pAnimaticsDlg;
|
||||
pAnimaticsDlg=nullptr;
|
||||
if(pSmartMotor_Proto)
|
||||
{
|
||||
delete pSmartMotor_Proto;
|
||||
pSmartMotor_Proto=nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void CMv_MainDlg::OnBnClickedButtonAutoTest()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->GetCheck())
|
||||
{
|
||||
m_pMv_Proto = new CMv_Proto();
|
||||
CMv_AutoTestDlg* pMv_AutoTestDlg = new CMv_AutoTestDlg();
|
||||
pMv_AutoTestDlg->DoModal();
|
||||
delete pMv_AutoTestDlg;
|
||||
delete m_pMv_Proto;
|
||||
m_pMv_Proto=NULL;
|
||||
};
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// pMv_ProtocolAnalyzerDlg->m_machine = 0; MicroVu
|
||||
// pMv_ProtocolAnalyzerDlg->m_machine = 1; Mitutoyo
|
||||
//===========================================================================
|
||||
void CMv_MainDlg::OnBnClickedButtonProtocolAnalyzerDlg()
|
||||
{
|
||||
CMv_ProtocolAnalyzerDlg* pMv_ProtocolAnalyzerDlg = new CMv_ProtocolAnalyzerDlg();
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MITUTOYO))->GetCheck())
|
||||
pMv_ProtocolAnalyzerDlg->m_machine = 2;
|
||||
else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->GetCheck())
|
||||
pMv_ProtocolAnalyzerDlg->m_machine = 1;
|
||||
else
|
||||
pMv_ProtocolAnalyzerDlg->m_machine = 0; // Generic
|
||||
pMv_ProtocolAnalyzerDlg->DoModal();
|
||||
delete pMv_ProtocolAnalyzerDlg;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// DeviceID = "VID_0D26&PID_1001" - MicroVu
|
||||
// DeviceID = "VID_0fe7&PID_2004" - Mitutoyo
|
||||
//===========================================================================
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
void CMv_MainDlg::OnBnClickedButtonReplayStartup()
|
||||
{
|
||||
CString strFilters;
|
||||
CString strExt;
|
||||
strFilters = _T("Replay Data (*.annotated.proto.txt)|*.annotated.proto.txt|All Files (*.*)|*.*||");
|
||||
strExt = _T(".txt");
|
||||
m_csLogFile = "Replay.Txt";
|
||||
CString strMsg;
|
||||
CFileDialog fileDlg(TRUE, strExt, (LPCTSTR) m_csLogFile, OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, strFilters, this);
|
||||
if ( fileDlg.DoModal ()==IDOK )
|
||||
{
|
||||
m_csReplayFile = fileDlg.GetPathName();
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->GetCheck())
|
||||
{
|
||||
if (!m_pMv_Proto)
|
||||
m_pMv_Proto = new CMv_Proto();
|
||||
m_pMv_Proto->Init_MvUsb();
|
||||
m_pMv_Proto->_start_machine();
|
||||
m_pMv_Proto->_get_xyz_index();
|
||||
m_pMv_Proto->_poll_machine_59();
|
||||
m_pMv_Proto->mv_motion_Dcc_Home();
|
||||
if (m_pMv_Proto->_replay_capture(m_csReplayFile))
|
||||
{
|
||||
MessageBox( _T("Replay MicroVu Capture File not found."), _T("Message"), MB_OK);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox( _T("Replay MicroVu Capture File Done."), _T("Message"), MB_OK);
|
||||
};
|
||||
m_pMv_Proto->_shutdown_machine();
|
||||
m_pMv_Proto->Exit_MvUsb();
|
||||
delete m_pMv_Proto;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void CMv_MainDlg::OnBnClickedOk()
|
||||
{
|
||||
CDialogEx::OnOK();
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
BOOL CMv_MainDlg::OnInitDialog()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MITUTOYO))->SetCheck(false);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->SetCheck(false);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_SevenOcean))->SetCheck(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_ANIMATICS))->SetCheck(false);
|
||||
|
||||
((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->SetCheck(true);
|
||||
OnBnClickedRadioEngineering();
|
||||
OnBnClickedRadioMachineMitutoyo();
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
//===========================================================================
|
||||
void CMv_MainDlg::OnBnClickedButtonStartCapture()
|
||||
{
|
||||
STARTUPINFO m_si;
|
||||
PROCESS_INFORMATION m_pi;
|
||||
ZeroMemory(&m_si, sizeof(m_si));
|
||||
m_si.cb = sizeof(m_si);
|
||||
ZeroMemory(&m_pi, sizeof(m_pi));
|
||||
DWORD dwExitCode = 0;
|
||||
int x;
|
||||
LPTSTR szCmdline = _tcsdup(TEXT("SniffUSB.exe"));
|
||||
if (!CreateProcess(NULL,
|
||||
szCmdline,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
&m_si,
|
||||
&m_pi)
|
||||
)
|
||||
{
|
||||
x = GetLastError();
|
||||
return;
|
||||
};
|
||||
dwExitCode = ::WaitForSingleObject(m_pi.hProcess, INFINITE);
|
||||
CloseHandle( m_pi.hProcess );
|
||||
CloseHandle( m_pi.hThread );
|
||||
free( szCmdline );
|
||||
|
||||
//=================================================================================
|
||||
// Copy the UsbSnoopy.Log to a special location.
|
||||
//=================================================================================
|
||||
CString strDestFileName;
|
||||
CString strFilters;
|
||||
CString strExt;
|
||||
strFilters = _T("All Files (*.*)|*.*||");
|
||||
strExt = _T("Log");
|
||||
strDestFileName = "UsbSnoop_Destination.Log";
|
||||
CFileDialog fileDlg(TRUE, strExt, (LPCTSTR) strDestFileName, OFN_HIDEREADONLY, strFilters, this);
|
||||
if ( fileDlg.DoModal ()==IDOK )
|
||||
{
|
||||
strDestFileName = fileDlg.GetPathName();
|
||||
}
|
||||
delete fileDlg;
|
||||
BOOL bFailIfExists = false;
|
||||
CString strSourceFileName = _T("c:\\windows\\usbsnoop.log");
|
||||
CopyFile(strSourceFileName, strDestFileName, bFailIfExists);
|
||||
return;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
void CMv_MainDlg::OnBnClickedRadioDataCaptureMode()
|
||||
{
|
||||
if(((CButton *)GetDlgItem(IDC_RADIO_MACHINE_SevenOcean))->GetCheck())
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_MACHINE_ANIMATICS))->GetCheck())
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
void CMv_MainDlg::OnBnClickedRadioEngineering()
|
||||
{
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MITUTOYO))->GetCheck())
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_DATA_CAPTURE_MODE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_DEMO_MODE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_MACHINE_SevenOcean))->GetCheck())
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_MACHINE_ANIMATICS))->GetCheck())
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_DATA_CAPTURE_MODE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_DEMO_MODE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(true);
|
||||
};
|
||||
};
|
||||
|
||||
//=================================================================================
|
||||
void CMv_MainDlg::OnBnClickedRadioDemoMode()
|
||||
{
|
||||
if(((CButton *)GetDlgItem(IDC_RADIO_MACHINE_SevenOcean))->GetCheck())
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_FILE_UTILITIES))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_MACHINE_ANIMATICS))->GetCheck())
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_AUTO_TEST))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_AUTO_TEST))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_DIAGNOSTICS))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_DIAGNOSTICS))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_REPLAY_STARTUP))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_REPLAY))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_START_CAPTURE))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_COLLECTS_TEXT))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_DATA_CAPTURE_MODE))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_DEMO_MODE))->EnableWindow(true);
|
||||
}
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
void CMv_MainDlg::OnBnClickedButtonFileUtilities()
|
||||
{
|
||||
CFileUtilitiesDlg* pMv_FileUtilitiesDlg = new CFileUtilitiesDlg();
|
||||
pMv_FileUtilitiesDlg->DoModal();
|
||||
delete pMv_FileUtilitiesDlg;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
void CMv_MainDlg::OnBnClickedRadioMachineMicrovu()
|
||||
{
|
||||
if (!m_pMv_Proto)
|
||||
m_pMv_Proto = new CMv_Proto();
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_DATA_CAPTURE_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioDataCaptureMode();
|
||||
} else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioEngineering();
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(true);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(true);
|
||||
} else
|
||||
{ // Demo Mode
|
||||
OnBnClickedRadioDemoMode();
|
||||
}
|
||||
if (m_pMv_Proto)
|
||||
{
|
||||
delete m_pMv_Proto;
|
||||
m_pMv_Proto=nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
void CMv_MainDlg::OnBnClickedRadioMachineMitutoyo()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_DATA_CAPTURE_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioDataCaptureMode();
|
||||
} else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioEngineering();
|
||||
((CButton *)GetDlgItem(IDC_STATIC_MV_CONFIG))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_CREATE_CONFIG))->EnableWindow(false);
|
||||
} else
|
||||
{ // Demo Mode
|
||||
OnBnClickedRadioDemoMode();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
void CMv_MainDlg::OnBnClickedButtonCreateConfig()
|
||||
{
|
||||
CCaptureDataDlg* pCaptureDataDlg = new CCaptureDataDlg();
|
||||
pCaptureDataDlg->DoModal();
|
||||
delete pCaptureDataDlg;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void CMv_MainDlg::OnBnClickedRadioMachineSevenocean()
|
||||
{
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_DATA_CAPTURE_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioDataCaptureMode();
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioEngineering();
|
||||
}
|
||||
else
|
||||
{ // Demo Mode
|
||||
OnBnClickedRadioDemoMode();
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void CMv_MainDlg::OnBnClickedRadioMachineGeneric()
|
||||
{
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_DATA_CAPTURE_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioDataCaptureMode();
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioEngineering();
|
||||
}
|
||||
else
|
||||
{ // Demo Mode
|
||||
OnBnClickedRadioDemoMode();
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CMv_MainDlg::OnBnClickedRadioAnimatics()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_DATA_CAPTURE_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioDataCaptureMode();
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_ENGINEERING_MODE))->GetCheck())
|
||||
{
|
||||
OnBnClickedRadioEngineering();
|
||||
}
|
||||
else
|
||||
{ // Demo Mode
|
||||
OnBnClickedRadioDemoMode();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
#pragma once
|
||||
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
|
||||
// Mv_MainDlg dialog
|
||||
|
||||
class CMv_MainDlg : public CDialogEx
|
||||
{
|
||||
DECLARE_DYNAMIC(CMv_MainDlg)
|
||||
|
||||
public:
|
||||
CMv_MainDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CMv_MainDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_DIALOG_MAIN_MENU };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnBnClickedButtonDiagnostics();
|
||||
afx_msg void OnBnClickedButtonAutoTest();
|
||||
afx_msg void OnBnClickedButtonProtocolAnalyzerDlg();
|
||||
afx_msg void OnBnClickedButtonReplayStartup();
|
||||
CString m_csLogFile;
|
||||
CString m_csReplayFile;
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedButtonStartCapture();
|
||||
afx_msg void OnBnClickedRadioDataCaptureMode();
|
||||
afx_msg void OnBnClickedRadioEngineering();
|
||||
afx_msg void OnBnClickedRadioDemoMode();
|
||||
afx_msg void OnBnClickedButtonFileUtilities();
|
||||
afx_msg void OnBnClickedRadioMachineMicrovu();
|
||||
afx_msg void OnBnClickedRadioMachineMitutoyo();
|
||||
afx_msg void OnBnClickedButtonCreateConfig();
|
||||
afx_msg void OnBnClickedRadioMachineSevenocean();
|
||||
afx_msg void OnBnClickedRadioMachineGeneric();
|
||||
afx_msg void OnBnClickedRadioAnimatics();
|
||||
};
|
||||
@@ -0,0 +1,261 @@
|
||||
// Mv_Move_Location.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
#include "Mv_Move_Location.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
extern CMv_Proto* m_pMv_Proto;
|
||||
|
||||
// CMv_Move_Location dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CMv_Move_Location, CDialog)
|
||||
|
||||
CMv_Move_Location::CMv_Move_Location(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CMv_Move_Location::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
CMv_Move_Location::~CMv_Move_Location()
|
||||
{
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void CMv_Move_Location::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_EDIT_MOVE_TO_X, m_Move_to_X);
|
||||
DDX_Text(pDX, IDC_EDIT_MOVE_TO_Y, m_Move_to_Y);
|
||||
DDX_Text(pDX, IDC_EDIT_MOVE_TO_Z, m_Move_to_Z);
|
||||
DDX_Text(pDX, IDC_EDIT_MOVE_TO_ZM, m_Move_to_ZM);
|
||||
DDX_Text(pDX, IDC_EDIT_SPEED_X, m_Speed_X);
|
||||
DDX_Text(pDX, IDC_EDIT_SPEED_Y, m_Speed_Y);
|
||||
DDX_Text(pDX, IDC_EDIT_SPEED_Z, m_Speed_Z);
|
||||
DDX_Text(pDX, IDC_EDIT_ACC_X, m_Acc_X);
|
||||
DDX_Text(pDX, IDC_EDIT_ACC_Y, m_Acc_Y);
|
||||
DDX_Text(pDX, IDC_EDIT_ACC_Z, m_Acc_Z);
|
||||
DDX_Text(pDX, IDC_EDIT_DEC_X, m_Acc_X);
|
||||
DDX_Text(pDX, IDC_EDIT_DEC_Y, m_Acc_Y);
|
||||
DDX_Text(pDX, IDC_EDIT_DEC_Z, m_Acc_Z);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_SPEED_X, m_Manual_Speed_X);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_SPEED_Y, m_Manual_Speed_Y);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_SPEED_Z, m_Manual_Speed_Z);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_ACC_X, m_Manual_Acc_X);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_ACC_Y, m_Manual_Acc_Y);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_ACC_Z, m_Manual_Acc_Z);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_DEC_X, m_Manual_Dec_X);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_DEC_Y, m_Manual_Dec_X);
|
||||
DDX_Text(pDX, IDC_EDIT_MANUAL_DEC_Z, m_Manual_Dec_X);
|
||||
|
||||
CString m_Acc_X;
|
||||
CString m_Acc_Y;
|
||||
CString m_Acc_z;
|
||||
CString m_Dec_X;
|
||||
CString m_Dec_Y;
|
||||
CString m_Dec_Z;
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CMv_Move_Location, CDialog)
|
||||
ON_BN_CLICKED(IDOK, &CMv_Move_Location::OnBnClickedStart)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_MOVE_TO_X, &CMv_Move_Location::OnEnKillfocusEditMoveToX)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_MOVE_TO_Y, &CMv_Move_Location::OnEnKillfocusEditMoveToY)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_MOVE_TO_Z, &CMv_Move_Location::OnEnKillfocusEditMoveToZ)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_MOVE_TO_ZM, &CMv_Move_Location::OnEnKillfocusEditMoveToZm)
|
||||
ON_BN_CLICKED(IDC_BUTTON_MOVE_W, &CMv_Move_Location::OnBnClickedButtonMoveW)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
//=======================================================================
|
||||
// May use auto parameters or manual parameters.
|
||||
//=======================================================================
|
||||
void CMv_Move_Location::OnBnClickedStart()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
m_move_to_x = _wtof(m_Move_to_X);
|
||||
m_move_to_y = _wtof(m_Move_to_Y);
|
||||
m_move_to_z = _wtof(m_Move_to_Z);
|
||||
m_move_to_zm = _wtof(m_Move_to_ZM);
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SCALE))->GetCheck())
|
||||
{ // scale
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_MM))->GetCheck())
|
||||
{ // mm
|
||||
}
|
||||
else
|
||||
{ // inches
|
||||
};
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SPEED_FAST))->GetCheck())
|
||||
{ // fast
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_SPEED_SLOW))->GetCheck())
|
||||
{ // slow
|
||||
}
|
||||
else
|
||||
{ // user defined
|
||||
};
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
{ // move relative
|
||||
}
|
||||
else
|
||||
{ // move absolute
|
||||
};
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_CHECK_USE_MANUAL_MOTION_PARAMETERS))->GetCheck())
|
||||
{ // use manual parameters
|
||||
}
|
||||
else
|
||||
{ // use automatically generated parameters
|
||||
};
|
||||
|
||||
#pragma message("hard coded speed")
|
||||
m_pMv_Proto->mv_optics_set_scale_position((long)m_move_to_zm);
|
||||
m_pMv_Proto->mv_motion_set_speed_xyz(50.0);
|
||||
m_pMv_Proto->mv_motion_set_position_xyz(m_move_to_x, m_move_to_y, m_move_to_z, true);
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
BOOL CMv_Move_Location::OnInitDialog()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_RADIO_INCH))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MM))->SetCheck(1);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SPEED_FAST))->SetCheck(1);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SPEED_SLOW))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->SetCheck(1);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MOVE_ABSOLUTE))->SetCheck(0);
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SCALE))->GetCheck())
|
||||
{// scale
|
||||
m_Move_to_X.Format(_T("%d"),(m_pMv_Proto->g_machine.x._pos_59));
|
||||
m_Move_to_Y.Format(_T("%d"),(m_pMv_Proto->g_machine.y._pos_59));
|
||||
m_Move_to_Z.Format(_T("%d"),(m_pMv_Proto->g_machine.z._pos_59));
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_MM))->GetCheck())
|
||||
{// mm
|
||||
m_Move_to_X.Format(_T("%f"),(m_pMv_Proto->g_machine.x._pos_59));
|
||||
m_Move_to_Y.Format(_T("%f"),(m_pMv_Proto->g_machine.y._pos_59));
|
||||
m_Move_to_Z.Format(_T("%f"),(m_pMv_Proto->g_machine.z._pos_59));
|
||||
}
|
||||
else
|
||||
{// inches
|
||||
m_Move_to_X.Format(_T("%f"),(m_pMv_Proto->g_machine.x._pos_59/(25.4*1000)));
|
||||
m_Move_to_Y.Format(_T("%f"),(m_pMv_Proto->g_machine.y._pos_59/(25.4*1000)));
|
||||
m_Move_to_Z.Format(_T("%f"),(m_pMv_Proto->g_machine.z._pos_59/(25.4*1000)));
|
||||
};
|
||||
UpdateData(FALSE);
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
//=======================================================================
|
||||
// Calculate the auto parameters and populate the edit boxes
|
||||
//
|
||||
void CMv_Move_Location::OnEnKillfocusEditMoveToX()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SCALE))->GetCheck())
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_x = atof((const char *)(LPCTSTR)(m_Move_to_X)) + m_pMv_Proto->g_machine.x._pos_59;
|
||||
else
|
||||
m_move_to_x = atof((const char *)(LPCTSTR)(m_Move_to_X));
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_MM))->GetCheck())
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_x = atof((const char *)(LPCTSTR)(m_Move_to_X)) + m_pMv_Proto->g_machine.x._pos_59;
|
||||
else
|
||||
m_move_to_x = atof((const char *)(LPCTSTR)(m_Move_to_X));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_x = atof((const char *)(LPCTSTR)(m_Move_to_X)) + m_pMv_Proto->g_machine.x._pos_59/(25.4*1000);
|
||||
else
|
||||
m_move_to_x = atof((const char *)(LPCTSTR)(m_Move_to_X))*25.4*1000;
|
||||
};
|
||||
// m_pMv_Proto->_calc_speed_acc_dec(move_x, move_y, move_z, move_zm);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// Calculate the auto parameters and populate the edit boxes
|
||||
//
|
||||
void CMv_Move_Location::OnEnKillfocusEditMoveToY()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SCALE))->GetCheck())
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_y = atof((const char *)(LPCTSTR)(m_Move_to_Y)) + m_pMv_Proto->g_machine.y._pos_59;
|
||||
else
|
||||
m_move_to_y = atof((const char *)(LPCTSTR)(m_Move_to_Y));
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_MM))->GetCheck())
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_y = atof((const char *)(LPCTSTR)(m_Move_to_Y)) + m_pMv_Proto->g_machine.y._pos_59;
|
||||
else
|
||||
m_move_to_y = atof((const char *)(LPCTSTR)(m_Move_to_Y));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_y = atof((const char *)(LPCTSTR)(m_Move_to_Y)) + m_pMv_Proto->g_machine.y._pos_59/(25.4*1000);
|
||||
else
|
||||
m_move_to_y = atof((const char *)(LPCTSTR)(m_Move_to_Y))*25.4*1000;
|
||||
};
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// Calculate the auto parameters and populate the edit boxes
|
||||
//
|
||||
void CMv_Move_Location::OnEnKillfocusEditMoveToZ()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SCALE))->GetCheck())
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_z = atof((const char *)(LPCTSTR)(m_Move_to_Z)) + m_pMv_Proto->g_machine.z._pos_59;
|
||||
else
|
||||
m_move_to_z = atof((const char *)(LPCTSTR)(m_Move_to_Z));
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_MM))->GetCheck())
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_z = atof((const char *)(LPCTSTR)(m_Move_to_Z)) + m_pMv_Proto->g_machine.z._pos_59;
|
||||
else
|
||||
m_move_to_z = atof((const char *)(LPCTSTR)(m_Move_to_Z));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_z = atof((const char *)(LPCTSTR)(m_Move_to_Y)) + m_pMv_Proto->g_machine.z._pos_59/(25.4*1000);
|
||||
else
|
||||
m_move_to_z = atof((const char *)(LPCTSTR)(m_Move_to_Y))*25.4*1000;
|
||||
};
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// Calculate the auto parameters and populate the edit boxes
|
||||
void CMv_Move_Location::OnEnKillfocusEditMoveToZm()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->GetCheck())
|
||||
m_move_to_zm = atof((const char *)(LPCTSTR)(m_Move_to_ZM)) + m_pMv_Proto->g_machine.zm._pos_59;
|
||||
else
|
||||
m_move_to_zm = atof((const char *)(LPCTSTR)(m_Move_to_ZM));
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
void CMv_Move_Location::OnBnClickedButtonMoveW()
|
||||
{
|
||||
CString str;
|
||||
GetDlgItem(IDC_EDIT_MOVE_W)->GetWindowText(str);
|
||||
swscanf_s((LPCTSTR)str, _T("%d"), &m_pMv_Proto->g_machine.r1._deg);
|
||||
m_pMv_Proto->mv_motion_set_position_r(m_pMv_Proto->g_machine.r1._deg);
|
||||
m_pMv_Proto->mv_motion_get_position_r(m_pMv_Proto->g_machine.r1._deg);
|
||||
str.Format(_T("%8ld"),(m_pMv_Proto->g_machine.r1._deg));
|
||||
GetDlgItem(IDC_EDIT_MOVE_W)->SetWindowText(str);
|
||||
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CMv_Move_Location dialog
|
||||
|
||||
class CMv_Move_Location : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CMv_Move_Location)
|
||||
|
||||
public:
|
||||
CMv_Move_Location(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CMv_Move_Location();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_MV_UTIL_MOVE_LOCATION };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
afx_msg void OnBnClickedStart();
|
||||
double m_move_to_x;
|
||||
double m_move_to_y;
|
||||
double m_move_to_z;
|
||||
double m_move_to_zm;
|
||||
double m_acc_x;
|
||||
double m_acc_y;
|
||||
double m_acc_z;
|
||||
double m_dec_x;
|
||||
double m_dec_y;
|
||||
double m_dec_z;
|
||||
CString m_Move_to_X;
|
||||
CString m_Move_to_Y;
|
||||
CString m_Move_to_Z;
|
||||
CString m_Move_to_ZM;
|
||||
CString m_Speed_X;
|
||||
CString m_Speed_Y;
|
||||
CString m_Speed_Z;
|
||||
CString m_Acc_X;
|
||||
CString m_Acc_Y;
|
||||
CString m_Acc_Z;
|
||||
CString m_Dec_X;
|
||||
CString m_Dec_Y;
|
||||
CString m_Dec_Z;
|
||||
CString m_Manual_Speed_X;
|
||||
CString m_Manual_Speed_Y;
|
||||
CString m_Manual_Speed_Z;
|
||||
CString m_Manual_Acc_X;
|
||||
CString m_Manual_Acc_Y;
|
||||
CString m_Manual_Acc_Z;
|
||||
CString m_Manual_Dec_X;
|
||||
CString m_Manual_Dec_Y;
|
||||
CString m_Manual_Dec_Z;
|
||||
|
||||
AXISMOVE move_x;
|
||||
AXISMOVE move_y;
|
||||
AXISMOVE move_z;
|
||||
AXISMOVE move_zm;
|
||||
|
||||
afx_msg void OnEnKillfocusEditMoveToX();
|
||||
afx_msg void OnEnKillfocusEditMoveToY();
|
||||
afx_msg void OnEnKillfocusEditMoveToZ();
|
||||
afx_msg void OnEnKillfocusEditMoveToZm();
|
||||
afx_msg void OnBnClickedButtonMoveW();
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,88 @@
|
||||
#pragma once
|
||||
|
||||
#define MAX_IN_BUFF_SIZE 1024
|
||||
#define MAX_OUT_BUFF_SIZE 0x1000 // this is the buffer for the bmp file.
|
||||
|
||||
enum _machine_e
|
||||
{
|
||||
MACHINE_MICROVU,
|
||||
MACHINE_MITUTOYO,
|
||||
MACHINE_KEYENCE,
|
||||
MACHINE_GENERIC
|
||||
};
|
||||
|
||||
enum _out_type_e
|
||||
{
|
||||
OUT_DETAIL,
|
||||
OUT_CONDENSED,
|
||||
OUT_REPLAY,
|
||||
OUT_SEGMENT
|
||||
};
|
||||
|
||||
enum _fmt_e
|
||||
{
|
||||
FMT_SNOOPY,
|
||||
FMT_DMS
|
||||
};
|
||||
|
||||
class CMv_Proto_Dump
|
||||
{
|
||||
public:
|
||||
CMv_Proto_Dump(void);
|
||||
~CMv_Proto_Dump(void);
|
||||
|
||||
//======================= First Level ========================================
|
||||
void DoMicroVuReceiveCondensedLine(char *outBuff, char *sendCmd);
|
||||
void DoMicroVuSendCondensedLine(char *outBuff, char *sendCmd);
|
||||
|
||||
void DoMicroVuReceiveDetailLine(char *outBuff, char *sendCmd);
|
||||
void DoMicroVuSendDetailLine(char *outBuff, char *sendCmd);
|
||||
|
||||
void DoSo7SendDetailLine(char *outBuff, char *sendCmd);
|
||||
void DoSo7ReceiveDetailLine(char *outBuff, char *sendCmd);
|
||||
|
||||
int SendToFile(char *outBuff, _out_type_e _out_type, _machine_e _machine);
|
||||
int ConcateSnoopyLine(char *inBuff, char* outBuff);
|
||||
int ConcateDmsLine(char *inBuff, char* outBuff);
|
||||
int DoAppendSnoopyOutputLine(char *inBuff, char* outBuffe);
|
||||
int DoAppendDmsOutputLine(char *inBuff, char* outBuff);
|
||||
int MainSnoopyFunction(LPCTSTR fname, _out_type_e _out_type, _machine_e _machine_e);
|
||||
int MainDmsFunction(LPCTSTR fname, _out_type_e _out_type, _machine_e _machine);
|
||||
int MainSegmentFunction(LPCTSTR fname, _out_type_e _out_type, _machine_e _machine);
|
||||
//======================= Common Functions ====================================
|
||||
void OutputMicroVuReplayLine(char *outBuff); // iCmd = 0 send, iCmd = 1 recv.
|
||||
void OutputReplayGenericLine(char *outBuff); // iCmd = 0 send, iCmd = 1 recv.
|
||||
void OutputSegmentGenericLine(char *outBuff);
|
||||
void OutputMitutoyoReplayLine(char *outBuff); // iCmd = 0 send, iCmd = 1 recv.
|
||||
void OutputMicroVuCondensedLine(char *outBuff);
|
||||
void OutputMitutoyoCondesnedLine(char *outBuff);
|
||||
void OutputMicroVuDetailLine(char *outBuff);
|
||||
void OutputMitutoyoDetailLine(char *outBuff);
|
||||
void OutputSo7DetailLine(char *outBuff);
|
||||
|
||||
void Dump_BYTES(char *cBuff, int iLen);
|
||||
void Dump_Array_BYTE(char *cBuff);
|
||||
void Dump_Array_UINT(char *cBuff, int iLen);
|
||||
void Dump_Array_UINT_TO_INCH(char *cBuff, int iLen);
|
||||
void Dump_Array_LONG(char *cBuff, int iLen);
|
||||
void Dump_Array_Ascii(char *cBuff, char iEP, char *cResult);
|
||||
void Dump_Binary(char *cBuff);
|
||||
void Build_Mitutoyo_Print_Line(char *print_line, char *cBuff);
|
||||
void Build_Mitutoyo_Data_Matrix(char *cBuff, char iEP);
|
||||
void Dump_Lighting(char *cBuff, char iEP);
|
||||
void Dump_Array_LONG_MM(char *cBuff, int iLen);
|
||||
void Print_Line(int iLen, unsigned char *cBuff);
|
||||
char matrix_print_line[MAX_IN_BUFF_SIZE];
|
||||
bool bPrint_Data_Matrix_Ready;
|
||||
const char *byte_to_binary ( int x );
|
||||
void Process_Data();
|
||||
FILE* pInFile;
|
||||
FILE* m_pOutFile;
|
||||
char cSC_Data[MAX_IN_BUFF_SIZE];
|
||||
char cISL_Data[MAX_IN_BUFF_SIZE];
|
||||
char cTSX_Data[MAX_IN_BUFF_SIZE];
|
||||
char cTSY_Data[MAX_IN_BUFF_SIZE];
|
||||
char cTSZ_Data[MAX_IN_BUFF_SIZE];
|
||||
static char cCurr_Cmd[MAX_IN_BUFF_SIZE];
|
||||
void _clear_blanks(char *cBuff);
|
||||
};
|
||||
@@ -0,0 +1,188 @@
|
||||
// ProtocolAnalyzerDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "Mv_ProtocolAnalyzerDlg.h"
|
||||
#include "Mv_Proto_Dump.H"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
// CMv_ProtocolAnalyzerDlg dialog
|
||||
|
||||
extern CMv_Proto* m_pMv_Proto;
|
||||
|
||||
IMPLEMENT_DYNAMIC(CMv_ProtocolAnalyzerDlg, CDialogEx)
|
||||
|
||||
//=========================================================================
|
||||
CMv_ProtocolAnalyzerDlg::CMv_ProtocolAnalyzerDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialogEx(CMv_ProtocolAnalyzerDlg::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
CMv_ProtocolAnalyzerDlg::~CMv_ProtocolAnalyzerDlg()
|
||||
{
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
void CMv_ProtocolAnalyzerDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialogEx::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CMv_ProtocolAnalyzerDlg, CDialogEx)
|
||||
ON_BN_CLICKED(IDOK, &CMv_ProtocolAnalyzerDlg::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDC_BUTTON_BROWSE, &CMv_ProtocolAnalyzerDlg::OnBnClickedButtonBrowse)
|
||||
ON_BN_CLICKED(IDCANCEL, &CMv_ProtocolAnalyzerDlg::OnBnClickedCancel)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
//=========================================================================
|
||||
// CMv_ProtocolAnalyzerDlg message handlers
|
||||
// Pass the g_machine to the MainSnoopyFunction so it can be updated with
|
||||
// the machine signature.
|
||||
//=========================================================================
|
||||
void CMv_ProtocolAnalyzerDlg::OnBnClickedOk()
|
||||
{
|
||||
_machine_e _machine;
|
||||
|
||||
CString cMsg;
|
||||
UpdateData();
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->GetCheck())
|
||||
_machine = MACHINE_MICROVU; // MicroVu
|
||||
else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MITUTOYO))->GetCheck())
|
||||
_machine = MACHINE_MITUTOYO; // Mitutoyo
|
||||
else
|
||||
_machine = MACHINE_GENERIC; // Generic
|
||||
|
||||
_out_type_e _out_type;
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_FULL))->GetCheck())
|
||||
_out_type = OUT_DETAIL;
|
||||
else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_EXTRACT))->GetCheck())
|
||||
_out_type = OUT_CONDENSED;
|
||||
else
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_REPLAY_FILE))->GetCheck())
|
||||
_out_type = OUT_REPLAY; // Replay
|
||||
else
|
||||
_out_type=OUT_SEGMENT;
|
||||
|
||||
CMv_Proto_Dump* mv_proto_dump = new CMv_Proto_Dump;
|
||||
cMsg = _T("Sytem Ready.");
|
||||
|
||||
_fmt_e _fmt;
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_FORMAT_SNOOPY))->GetCheck())
|
||||
_fmt = FMT_SNOOPY;
|
||||
else
|
||||
_fmt = FMT_DMS;
|
||||
|
||||
if (_out_type == OUT_SEGMENT)
|
||||
{
|
||||
if (mv_proto_dump->MainSegmentFunction(m_csLogFile, _out_type, _machine))
|
||||
{
|
||||
cMsg += _T("\r\nSnoopy Input File not found.");
|
||||
} else {
|
||||
cMsg += _T("\r\nInput File :") + m_csLogFile;
|
||||
cMsg += _T("\r\nMachine Signature : ");
|
||||
cMsg += m_pMv_Proto->g_machine.s_machine_config._str_6f00_signature;
|
||||
cMsg += _T("\r\n7000 Lighting Signature : ");
|
||||
cMsg += m_pMv_Proto->g_machine.s_machine_config._str_7000_signature;
|
||||
cMsg += _T("\r\n ");
|
||||
cMsg += m_csLogFile;
|
||||
cMsg += _T("\r\nProcessing Completed.");
|
||||
};
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (_fmt)
|
||||
{
|
||||
case FMT_SNOOPY:
|
||||
if (mv_proto_dump->MainSnoopyFunction(m_csLogFile, _out_type, _machine))
|
||||
{
|
||||
cMsg += _T("\r\nSnoopy Input File not found.");
|
||||
} else {
|
||||
cMsg += _T("\r\nInput File :") + m_csLogFile;
|
||||
cMsg += _T("\r\nMachine Signature : ");
|
||||
cMsg += m_pMv_Proto->g_machine.s_machine_config._str_6f00_signature;
|
||||
cMsg += _T("\r\n7000 Lighting Signature : ");
|
||||
cMsg += m_pMv_Proto->g_machine.s_machine_config._str_7000_signature;
|
||||
cMsg += _T("\r\n ");
|
||||
cMsg += m_csLogFile;
|
||||
cMsg += _T("\r\nProcessing Completed.");
|
||||
};
|
||||
break;
|
||||
case FMT_DMS:
|
||||
if (mv_proto_dump->MainDmsFunction(m_csLogFile, _out_type, _machine))
|
||||
{
|
||||
cMsg += _T("\r\nDms Input File not found.");
|
||||
} else {
|
||||
cMsg += _T("\r\n");
|
||||
cMsg += m_csLogFile;
|
||||
cMsg += _T("\r\nProcessing Completed.");
|
||||
};
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
}
|
||||
delete mv_proto_dump;
|
||||
GetDlgItem(IDC_EDIT_MESSAGE)->SetWindowText(cMsg);
|
||||
MessageBox( _T("Processing Completed."), _T("Message"), MB_OK);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
BOOL CMv_ProtocolAnalyzerDlg::OnInitDialog()
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_RADIO_FORMAT_SNOOPY))->SetCheck(1);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_FORMAT_DMS))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_EXTRACT))->SetCheck(1);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_FULL))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MITUTOYO))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->SetCheck(0);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_GENERIC))->SetCheck(0);
|
||||
switch (m_machine)
|
||||
{
|
||||
case 0:
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_GENERIC))->SetCheck(1);
|
||||
break;
|
||||
case 1:
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->SetCheck(1);
|
||||
break;
|
||||
case 2:
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MITUTOYO))->SetCheck(1);
|
||||
break;
|
||||
default:
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MACHINE_GENERIC))->SetCheck(1);
|
||||
break;
|
||||
};
|
||||
GetDlgItem(IDC_EDIT_MESSAGE)->SetWindowText(_T("System Ready."));
|
||||
return TRUE;
|
||||
};
|
||||
|
||||
//===========================================================================
|
||||
void CMv_ProtocolAnalyzerDlg::OnBnClickedButtonBrowse()
|
||||
{
|
||||
CString strFilters;
|
||||
CString strExt;
|
||||
strFilters = _T("All Files (*.*)|*.*||");
|
||||
strExt = _T("Log");
|
||||
m_csLogFile = "UsbSnoop.Log";
|
||||
CFileDialog fileDlg(TRUE, strExt, (LPCTSTR) m_csLogFile, OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, strFilters, this);
|
||||
|
||||
if ( fileDlg.DoModal ()==IDOK )
|
||||
{
|
||||
m_csLogFile = fileDlg.GetPathName();
|
||||
GetDlgItem(IDC_EDIT_INPUT_FILE)->SetWindowText(m_csLogFile);
|
||||
}
|
||||
delete fileDlg;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
void CMv_ProtocolAnalyzerDlg::OnBnClickedCancel()
|
||||
{
|
||||
CDialogEx::OnCancel();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
|
||||
// CMv_ProtocolAnalyzerDlg dialog
|
||||
|
||||
class CMv_ProtocolAnalyzerDlg : public CDialogEx
|
||||
{
|
||||
DECLARE_DYNAMIC(CMv_ProtocolAnalyzerDlg)
|
||||
|
||||
public:
|
||||
CMv_ProtocolAnalyzerDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CMv_ProtocolAnalyzerDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_DIALOG_PROTOCOL_ANALYZER };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedOk();
|
||||
CString m_csLogFile;
|
||||
afx_msg void OnBnClickedButtonBrowse();
|
||||
int m_machine;
|
||||
afx_msg void OnBnClickedCancel();
|
||||
};
|
||||
@@ -0,0 +1,106 @@
|
||||
// Mv_SetLights.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "Mv_SetLights.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
|
||||
extern CMv_Proto* m_pMv_Proto;
|
||||
|
||||
// CMv_SetLights dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CMv_SetLights, CDialog)
|
||||
|
||||
CMv_SetLights::CMv_SetLights(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CMv_SetLights::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CMv_SetLights::~CMv_SetLights()
|
||||
{
|
||||
}
|
||||
|
||||
void CMv_SetLights::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CMv_SetLights, CDialog)
|
||||
ON_BN_CLICKED(IDC_BUTTON_ALL_ON, &CMv_SetLights::OnBnClickedButtonAllOn)
|
||||
ON_BN_CLICKED(IDOK, &CMv_SetLights::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDC_BUTTON_ALL_OFF, &CMv_SetLights::OnBnClickedButtonAllOff)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
//=========================================================================
|
||||
// CMv_SetLights message handlers
|
||||
//=========================================================================
|
||||
// Set the lighting values
|
||||
void CMv_SetLights::OnBnClickedButtonAllOn()
|
||||
{
|
||||
if (m_pMv_Proto->g_machine.s_machine_config._vector_light_model == 3)
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_lights_300._axial_light = 150;
|
||||
m_pMv_Proto->g_machine.s_lights_300._bottom_light = 150;
|
||||
}
|
||||
else
|
||||
// if (g_machine.s_machine_config._vector_light_model == 2)
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_lights_200._axial_light = 150;
|
||||
m_pMv_Proto->g_machine.s_lights_200._bottom_light = 150;
|
||||
};
|
||||
m_pMv_Proto->mv_set_full_ringlight_data(150);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
// Set the lighting values (6e)
|
||||
//=========================================================================
|
||||
void CMv_SetLights::OnBnClickedOk()
|
||||
{
|
||||
CString str;
|
||||
UINT val;
|
||||
|
||||
OnBnClickedButtonAllOff();
|
||||
if (m_pMv_Proto->g_machine.s_machine_config._vector_light_model == 3)
|
||||
{
|
||||
GetDlgItem(IDC_EDIT_AXIAL_LIGHT)->GetWindowText(str);
|
||||
val = _wtoi(str);
|
||||
m_pMv_Proto->g_machine.s_lights_300._axial_light = val;
|
||||
|
||||
GetDlgItem(IDC_EDIT_BOTTOM_LIGHT)->GetWindowText(str);
|
||||
val = _wtoi(str);
|
||||
m_pMv_Proto->g_machine.s_lights_300._bottom_light = val;
|
||||
}
|
||||
else
|
||||
{
|
||||
GetDlgItem(IDC_EDIT_AXIAL_LIGHT)->GetWindowText(str);
|
||||
val = _wtoi(str);
|
||||
m_pMv_Proto->g_machine.s_lights_200._axial_light = val;
|
||||
|
||||
GetDlgItem(IDC_EDIT_BOTTOM_LIGHT)->GetWindowText(str);
|
||||
val = _wtoi(str);
|
||||
m_pMv_Proto->g_machine.s_lights_200._bottom_light = val;
|
||||
};
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
|
||||
// CDialog::OnOK();
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
// Set the lighting values (6e)
|
||||
//=========================================================================
|
||||
void CMv_SetLights::OnBnClickedButtonAllOff()
|
||||
{
|
||||
m_pMv_Proto->mv_light_set_light_off();
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
BOOL CMv_SetLights::OnInitDialog()
|
||||
{
|
||||
UpdateData(FALSE);
|
||||
return TRUE;
|
||||
};
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CMv_SetLights dialog
|
||||
|
||||
class CMv_SetLights : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CMv_SetLights)
|
||||
|
||||
public:
|
||||
CMv_SetLights(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CMv_SetLights();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_DIALOG_SET_LIGHTS };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedButtonAllOn();
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedButtonAllOff();
|
||||
};
|
||||
@@ -0,0 +1,103 @@
|
||||
|
||||
// Mv_Util.cpp : Defines the class behaviors for the application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "Mv_MainDlg.h"
|
||||
|
||||
|
||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||
#include "ProcessButton.h"
|
||||
#include "VideoCardDefine.h"
|
||||
#include "..\..\..\Videocard\SDK3000\sdk3000_7130.h"
|
||||
#include "Videocard_SDK3000.h"
|
||||
#include "..\..\..\Videocard\SV2000E\datastru.h"
|
||||
#include "..\..\..\Videocard\SV2000E\DXMediaCap.h"
|
||||
#include "..\..\..\Videocard\SV2000E\dataAcq.h"
|
||||
#include "Videocard_SV2000E.h"
|
||||
#include "SO7_UtilDlg.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "So7_Option.h"
|
||||
|
||||
|
||||
//#define _ONLY_USE_FOR_SO7
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
// CMv_UtilApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CMv_UtilApp, CWinAppEx)
|
||||
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
// CMv_UtilApp construction
|
||||
|
||||
CMv_UtilApp::CMv_UtilApp()
|
||||
{
|
||||
// TODO: add construction code here,
|
||||
// Place all significant initialization in InitInstance
|
||||
}
|
||||
|
||||
|
||||
// The one and only CMv_UtilApp object
|
||||
|
||||
CMv_UtilApp theApp;
|
||||
|
||||
// CMv_UtilApp initialization
|
||||
|
||||
BOOL CMv_UtilApp::InitInstance()
|
||||
{
|
||||
// InitCommonControlsEx() is required on Windows XP if an application
|
||||
// manifest specifies use of ComCtl32.dll version 6 or later to enable
|
||||
// visual styles. Otherwise, any window creation will fail.
|
||||
INITCOMMONCONTROLSEX InitCtrls;
|
||||
InitCtrls.dwSize = sizeof(InitCtrls);
|
||||
// Set this to include all the common control classes you want to use
|
||||
// in your application.
|
||||
InitCtrls.dwICC = ICC_WIN95_CLASSES;
|
||||
InitCommonControlsEx(&InitCtrls);
|
||||
|
||||
CWinAppEx::InitInstance();
|
||||
|
||||
AfxEnableControlContainer();
|
||||
|
||||
// Standard initialization
|
||||
// If you are not using these features and wish to reduce the size
|
||||
// of your final executable, you should remove from the following
|
||||
// the specific initialization routines you do not need
|
||||
// Change the registry key under which our settings are stored
|
||||
// TODO: You should modify this string to be something appropriate
|
||||
// such as the name of your company or organization
|
||||
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
|
||||
|
||||
#ifdef _ONLY_USE_FOR_SO7
|
||||
CSo7_Option pSo7_Option;
|
||||
m_pMainWnd = &pSo7_Option;
|
||||
INT_PTR nResponse = pSo7_Option.DoModal();
|
||||
#else
|
||||
CMv_MainDlg dlg;
|
||||
m_pMainWnd = &dlg;
|
||||
INT_PTR nResponse = dlg.DoModal();
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
if (nResponse == IDOK)
|
||||
{
|
||||
// TODO: Place code here to handle when the dialog is
|
||||
// dismissed with OK
|
||||
}
|
||||
else if (nResponse == IDCANCEL)
|
||||
{
|
||||
// TODO: Place code here to handle when the dialog is
|
||||
// dismissed with Cancel
|
||||
}
|
||||
|
||||
// Since the dialog has been closed, return FALSE so that we exit the
|
||||
// application, rather than start the application's message pump.
|
||||
return FALSE;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
|
||||
// Mv_Util.h : main header file for the PROJECT_NAME application
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error "include 'stdafx.h' before including this file for PCH"
|
||||
#endif
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
|
||||
// CMv_UtilApp:
|
||||
// See Mv_Util.cpp for the implementation of this class
|
||||
//
|
||||
|
||||
class CMv_UtilApp : public CWinAppEx
|
||||
{
|
||||
public:
|
||||
CMv_UtilApp();
|
||||
|
||||
// Overrides
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
|
||||
// Implementation
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
extern CMv_UtilApp theApp;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mv_Util", "Mv_Util\Mv_Util.vcproj", "{50B21A79-C887-4F7E-8911-7E3A685BFA25}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,158 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Mv_Proto_Dump.CPP">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_Util.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_UtilDlg.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_Move_Location.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_SetLights.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_MainDlg.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_AutoTestDlg.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_ProtocolAnalyzerDlg.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CaptureDataDlg.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DirDialog.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\Proto_Util.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="FileUtilitiesDlg.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_File_Utilities.Cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MitotoyoAutoTestDlg.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mitu_Util.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\Mitutoyo\Mitu_Proto.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\MicroVu\Mv_Proto.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\LOGGER.CPP">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Mv_Proto_Dump.H">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_Util.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_UtilDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_Move_Location.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\SsiStatus.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_SetLights.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_MainDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_AutoTestDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_ProtocolAnalyzerDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CaptureDataDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="DirDialog.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Proto_Util.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FileUtilitiesDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_File_Utilities.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MitotoyoAutoTestDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mitu_Util.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\MicroVu\logger.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\MicroVu\Mv_Proto.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Mitutoyo\Mitu_Proto.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="res\Mv_Util.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\Mv_Util.rc2">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="Mv_Util.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
</Project>
|
||||
@@ -0,0 +1,827 @@
|
||||
// Mv_UtilDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Mv_Util.h"
|
||||
#include "Mv_UtilDlg.h"
|
||||
#include "Mv_Move_Location.h"
|
||||
#include "Mv_SetLights.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
char *str_limits_x = "\r\nStage Limits X: ";
|
||||
char *str_limits_y = "\r\nStage Limits Y: ";
|
||||
char *str_limits_z = "\r\nStage Limits Z: ";
|
||||
char *str_scale_range_x = "\r\nScale Range X : ";
|
||||
char *str_scale_range_y = "\r\nScale Range Y : ";
|
||||
char *str_scale_range_z = "\r\nScale Range Z : ";
|
||||
char *str_max_speed_x = "\r\nMax Speed X : ";
|
||||
char *str_max_speed_y = "\r\nMax Speed Y : ";
|
||||
char *str_max_speed_z = "\r\nMax Speed Z : ";
|
||||
char *str_max_accel_x = "\r\nMax Accel X : ";
|
||||
char *str_max_accel_y = "\r\nMax Accel Y : ";
|
||||
char *str_max_accel_z = "\r\nMax Accel Z : ";
|
||||
char *str_max_decel_x = "\r\nMax Decel X : ";
|
||||
char *str_max_decel_y = "\r\nMax Decel Y : ";
|
||||
char *str_max_decel_z = "\r\nMax Decel Z : ";
|
||||
char *str_index_x = "\r\nIndex Positions X: ";
|
||||
char *str_index_y = "\r\nIndex Positions Y: ";
|
||||
char *str_index_z = "\r\nIndex Positions Z: ";
|
||||
char *str_model = "\r\nModel : ";
|
||||
char *str_serial_no = "\r\nSerial No : ";
|
||||
|
||||
// CAboutDlg dialog used for App About
|
||||
|
||||
class CAboutDlg : public CDialog
|
||||
{
|
||||
public:
|
||||
CAboutDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_ABOUTBOX };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
|
||||
{
|
||||
}
|
||||
|
||||
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
// CMv_UtilDlg dialog
|
||||
|
||||
CMv_UtilDlg::CMv_UtilDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CMv_UtilDlg::IDD, pParent)
|
||||
, m_lPositionSpeedTestPerSec(0)
|
||||
, m_Mode(0) // set to Auto Test Mode
|
||||
{
|
||||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
||||
}
|
||||
|
||||
void CMv_UtilDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_EDIT_X_POSITION_58, m_X_Pos_58);
|
||||
DDX_Text(pDX, IDC_EDIT_Y_POSITION_58, m_Y_Pos_58);
|
||||
DDX_Text(pDX, IDC_EDIT_Z_POSITION_58, m_Z_Pos_58);
|
||||
DDX_Text(pDX, IDC_EDIT_X_POSITION_59, m_X_Pos_59);
|
||||
DDX_Text(pDX, IDC_EDIT_Y_POSITION_59, m_Y_Pos_59);
|
||||
DDX_Text(pDX, IDC_EDIT_Z_POSITION_59, m_Z_Pos_59);
|
||||
DDX_Text(pDX, IDC_EDIT1, m_lPositionSpeedTestPerSec);
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CMv_UtilDlg, CDialog)
|
||||
ON_WM_SYSCOMMAND()
|
||||
ON_WM_PAINT()
|
||||
ON_WM_QUERYDRAGICON()
|
||||
//}}AFX_MSG_MAP
|
||||
ON_BN_CLICKED(IDC_BUTTON_INIT_MVUSB, &CMv_UtilDlg::OnBnClickedButtonInitMvusb)
|
||||
ON_BN_CLICKED(IDC_BUTTON_TERM_MVUSB, &CMv_UtilDlg::OnBnClickedButtonTermMvusb)
|
||||
ON_BN_CLICKED(IDC_BUTTON_STOP_MACHINE, &CMv_UtilDlg::OnBnClickedButtonStopMachine)
|
||||
ON_BN_CLICKED(IDC_BUTTON_START_MACHINE, &CMv_UtilDlg::OnBnClickedButtonStartMachine)
|
||||
ON_BN_CLICKED(IDC_BUTTON_START_POLL_59, &CMv_UtilDlg::OnBnClickedButtonStartPoll59)
|
||||
ON_BN_CLICKED(IDC_BUTTON_CYCLE_RING, &CMv_UtilDlg::OnBnClickedButtonCycleRing)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDC_BUTTON_START_POLL_58, &CMv_UtilDlg::OnBnClickedButtonStartPoll58)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SEEK_HOME, &CMv_UtilDlg::OnBnClickedButtonDccSeekHome)
|
||||
ON_BN_CLICKED(IDC_BUTTON_MOVE_TO, &CMv_UtilDlg::OnBnClickedButtonMoveTo)
|
||||
ON_BN_CLICKED(IDCANCEL, &CMv_UtilDlg::OnBnClickedExit)
|
||||
ON_BN_CLICKED(IDC_BUTTON_START_POLL_2B, &CMv_UtilDlg::OnBnClickedButtonStartPoll2b)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SET_LIGHT, &CMv_UtilDlg::OnBnClickedButtonSetLight)
|
||||
ON_BN_CLICKED(IDC_BUTTON_LOAD_CONFIG, &CMv_UtilDlg::OnBnClickedButtonLoadConfig)
|
||||
ON_BN_CLICKED(IDC_BUTTON_GET_CONFIG, &CMv_UtilDlg::OnBnClickedButtonGetConfig)
|
||||
ON_BN_CLICKED(IDC_POLLING_SPEEDTEST, &CMv_UtilDlg::OnBnClickedPollingSpeedtest)
|
||||
ON_BN_CLICKED(IDC_BUTTON_GET_INDEX, &CMv_UtilDlg::OnBnClickedButtonGetIndex)
|
||||
ON_BN_CLICKED(IDC_BUTTON_DISABLE_JOYSTICK, &CMv_UtilDlg::OnBnClickedButtonDisableJoystick)
|
||||
ON_BN_CLICKED(IDC_BUTTON_ENABLE_JOYSTICK, &CMv_UtilDlg::OnBnClickedButtonEnableJoystick)
|
||||
ON_BN_CLICKED(IDC_BUTTON_POLL_EP_02, &CMv_UtilDlg::OnBnClickedButtonPollEp02)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
// CMv_UtilDlg message handlers
|
||||
|
||||
BOOL CMv_UtilDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
|
||||
// Set the icon for this dialog. The framework does this automatically
|
||||
// when the application's main window is not a dialog
|
||||
SetIcon(m_hIcon, TRUE); // Set big icon
|
||||
SetIcon(m_hIcon, FALSE); // Set small icon
|
||||
|
||||
GetDlgItem(IDC_BUTTON_INIT_MVUSB)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_START_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_2B)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SEEK_HOME)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_MOVE_TO)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_AXIAL_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_BOTTOM_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_AXIAL_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_CYCLE_RING)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SET_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_STOP_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_TERM_MVUSB)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_LOAD_CONFIG)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_GET_CONFIG)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_DISABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_ENABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_POLL_EP_02)->EnableWindow(false);
|
||||
|
||||
m_OutMessage = _T("System Ready.\r\nPress 'Init_MvUSB' to start.");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
|
||||
((CButton *)GetDlgItem(IDC_POLLING_SPEEDTEST))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_STATIC_SEC))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_EDIT_SAMPLING))->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_BUTTON_GET_INDEX))->EnableWindow(false);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
||||
{
|
||||
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
|
||||
{
|
||||
CAboutDlg dlgAbout;
|
||||
dlgAbout.DoModal();
|
||||
}
|
||||
else
|
||||
{
|
||||
CDialog::OnSysCommand(nID, lParam);
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
// If you add a minimize button to your dialog, you will need the code below
|
||||
// to draw the icon. For MFC applications using the document/view model,
|
||||
// this is automatically done for you by the framework.
|
||||
|
||||
void CMv_UtilDlg::OnPaint()
|
||||
{
|
||||
if (IsIconic())
|
||||
{
|
||||
CPaintDC dc(this); // device context for painting
|
||||
|
||||
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
|
||||
|
||||
// Center icon in client rectangle
|
||||
int cxIcon = GetSystemMetrics(SM_CXICON);
|
||||
int cyIcon = GetSystemMetrics(SM_CYICON);
|
||||
CRect rect;
|
||||
GetClientRect(&rect);
|
||||
int x = (rect.Width() - cxIcon + 1) / 2;
|
||||
int y = (rect.Height() - cyIcon + 1) / 2;
|
||||
|
||||
// Draw the icon
|
||||
dc.DrawIcon(x, y, m_hIcon);
|
||||
}
|
||||
else
|
||||
{
|
||||
CDialog::OnPaint();
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
// The system calls this function to obtain the cursor to display while the user drags
|
||||
// the minimized window.
|
||||
HCURSOR CMv_UtilDlg::OnQueryDragIcon()
|
||||
{
|
||||
return static_cast<HCURSOR>(m_hIcon);
|
||||
}
|
||||
|
||||
//=============================================================================================
|
||||
//
|
||||
//=============================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonInitMvusb()
|
||||
{
|
||||
if (0)
|
||||
{
|
||||
AXISMOVE X;
|
||||
AXISMOVE Y;
|
||||
AXISMOVE Z;
|
||||
X.dFromMM = 0.0;
|
||||
X.dToMM = 100.0;
|
||||
Y.dFromMM = 0.0;
|
||||
Y.dToMM = 100.0;
|
||||
Z.dFromMM = 0.0;
|
||||
Z.dToMM = 10.0;
|
||||
m_pMv_Proto->g_machine.s_machine_config.x_axis._max_speed = 100000;
|
||||
m_pMv_Proto->g_machine.s_machine_config.x_axis._scale_resolution = 0.001;
|
||||
m_pMv_Proto->g_machine.s_machine_config.y_axis._max_speed = 100000;
|
||||
m_pMv_Proto->g_machine.s_machine_config.y_axis._scale_resolution = 0.001;
|
||||
m_pMv_Proto->g_machine.s_machine_config.z_axis._max_speed = 100000;
|
||||
m_pMv_Proto->g_machine.s_machine_config.z_axis._scale_resolution = 0.001;
|
||||
|
||||
m_pMv_Proto->_calculate_straightline_motion(X, Y, Z, 20.0);
|
||||
m_pMv_Proto->_set_position_xyz(X, Y, Z);
|
||||
ASSERT(0);
|
||||
}
|
||||
|
||||
if (m_pMv_Proto)
|
||||
{
|
||||
if (m_pMv_Proto->Init_MvUsb())
|
||||
{
|
||||
((CButton *)GetDlgItem(IDC_RADIO_FORMAT_SNOOPY))->SetCheck(1);
|
||||
m_OutMessage = _T("Usb Port Error");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
return;
|
||||
};
|
||||
};
|
||||
|
||||
GetDlgItem(IDC_BUTTON_INIT_MVUSB)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_MACHINE)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_2B)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SEEK_HOME)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_MOVE_TO)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_CYCLE_RING)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_STOP_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_TERM_MVUSB)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_LOAD_CONFIG)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_SET_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_GET_CONFIG)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_DISABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_ENABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_POLL_EP_02)->EnableWindow(false);
|
||||
m_OutMessage = _T("Usb Port Initialized.\r\n");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
GetDlgItem(IDCANCEL)->EnableWindow(false);
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
//==================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonTermMvusb()
|
||||
{
|
||||
m_pMv_Proto->Exit_MvUsb();
|
||||
m_OutMessage = _T("Ready - Usb Port Released");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
GetDlgItem(IDC_BUTTON_INIT_MVUSB)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_START_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_2B)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SEEK_HOME)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_MOVE_TO)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_CYCLE_RING)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_STOP_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_TERM_MVUSB)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_LOAD_CONFIG)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SET_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_GET_CONFIG)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_GET_INDEX)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_DISABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_ENABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_POLL_EP_02)->EnableWindow(false);
|
||||
GetDlgItem(IDCANCEL)->EnableWindow(true);
|
||||
KillTimer(1);
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonStopMachine()
|
||||
{
|
||||
GetDlgItem(IDC_BUTTON_INIT_MVUSB)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_MACHINE)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_2B)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SEEK_HOME)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_MOVE_TO)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_CYCLE_RING)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_STOP_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_TERM_MVUSB)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_GET_CONFIG)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_GET_INDEX)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SET_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_DISABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_ENABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_POLL_EP_02)->EnableWindow(false);
|
||||
KillTimer(1);
|
||||
m_pMv_Proto->g_machine.s_status._poll_59_active = false;
|
||||
m_pMv_Proto->g_machine.s_status._poll_58_active = false;
|
||||
m_pMv_Proto->g_machine.s_status._poll_2b_active = false;
|
||||
m_pMv_Proto->_shutdown_machine();
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
// Start Machine is actually getting configuration data.
|
||||
// If Index is not found, do homing initialization automatically.
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonStartMachine()
|
||||
{
|
||||
m_pMv_Proto->_start_machine();
|
||||
OnBnClickedButtonGetIndex();
|
||||
GetDlgItem(IDC_BUTTON_INIT_MVUSB)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_2B)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_59)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_58)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_SEEK_HOME)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_MOVE_TO)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_59)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_58)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_CYCLE_RING)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_STOP_MACHINE)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_TERM_MVUSB)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_GET_CONFIG)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_LOAD_CONFIG)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_SET_LIGHT)->EnableWindow(true);
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
GetDlgItem(IDC_BUTTON_GET_INDEX)->EnableWindow(true);
|
||||
GetDlgItem(IDCANCEL)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_TERM_MVUSB)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_DISABLE_JOYSTICK)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_ENABLE_JOYSTICK)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_POLL_EP_02)->EnableWindow(true);
|
||||
SetTimer(1, 20, 0);
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonStartPoll59()
|
||||
{
|
||||
if (m_pMv_Proto->g_machine.s_status._poll_59_active)
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_status._poll_59_active = false;
|
||||
m_pMv_Proto->g_machine.s_status._poll_2b_active = false;
|
||||
m_pMv_Proto->_poll_machine_59();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_status._poll_59_active = true;
|
||||
m_pMv_Proto->g_machine.s_status._poll_2b_active = true;
|
||||
m_pMv_Proto->_poll_machine_59();
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonCycleRing()
|
||||
{
|
||||
if (m_pMv_Proto->g_machine.s_machine_config._vector_light_model == 2)
|
||||
{
|
||||
for (int ii=0 ; ii<TWO_RINGS; ii++ )
|
||||
{
|
||||
for (int jj=0 ; jj<EIGHT_SEGS ; jj++)
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_lights_200._segment[ii][jj] = 256;
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
m_pMv_Proto->g_machine.s_lights_200._segment[ii][jj] = 0;
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
// if (m_pMv_Proto->g_machine.s_machine_config._vector_light_model == 3)
|
||||
{
|
||||
for (int ii=0 ; ii<FIVE_RINGS; ii++ )
|
||||
{
|
||||
for (int jj=0 ; jj<EIGHT_SEGS ; jj++)
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_lights_300._segment[ii][jj] = 256;
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
m_pMv_Proto->g_machine.s_lights_300._segment[ii][jj] = 0;
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
}
|
||||
}
|
||||
}
|
||||
MessageBeep(MB_ICONINFORMATION);
|
||||
|
||||
for (int lIntensity = 0 ; lIntensity < MAXINTENSITY ; lIntensity += (long)(MAXINTENSITY*0.05))
|
||||
{
|
||||
m_pMv_Proto->mv_set_full_ringlight_data(lIntensity);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
}
|
||||
|
||||
MessageBeep(MB_ICONINFORMATION);
|
||||
|
||||
for (int lIntensity = MAXINTENSITY ; lIntensity > 0 ; lIntensity -= (long)(MAXINTENSITY*0.05))
|
||||
{
|
||||
m_pMv_Proto->mv_set_full_ringlight_data(lIntensity);
|
||||
m_pMv_Proto->mv_light_set_light();
|
||||
Sleep(100);
|
||||
}
|
||||
MessageBeep(MB_ICONINFORMATION);
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
static long lCount=0;
|
||||
if (m_pMv_Proto)
|
||||
{
|
||||
static bool bOld = false;
|
||||
if (bOld)
|
||||
{
|
||||
m_X_Pos_59.Format(_T("%8ld"),(m_pMv_Proto->g_machine.x._pos_59));
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->SetWindowText(m_X_Pos_59);
|
||||
m_Y_Pos_59.Format(_T("%8ld"),(m_pMv_Proto->g_machine.y._pos_59));
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->SetWindowText(m_Y_Pos_59);
|
||||
m_Z_Pos_59.Format(_T("%8ld"),(m_pMv_Proto->g_machine.z._pos_59));
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->SetWindowText(m_Z_Pos_59);
|
||||
|
||||
m_X_Pos_58.Format(_T("%8ld"), m_pMv_Proto->g_machine.x._pos_58);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->SetWindowText(m_X_Pos_58);
|
||||
m_Y_Pos_58.Format(_T("%8ld"), m_pMv_Proto->g_machine.y._pos_58);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->SetWindowText(m_Y_Pos_58);
|
||||
m_Z_Pos_58.Format(_T("%8ld"), m_pMv_Proto->g_machine.z._pos_58);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->SetWindowText(m_Z_Pos_58);
|
||||
}
|
||||
else
|
||||
{
|
||||
++lCount;
|
||||
if (m_pMv_Proto->g_machine.s_status._machine_running)
|
||||
{
|
||||
if (lCount%10 == 0 && m_pMv_Proto->g_machine.s_status._poll_58_active)
|
||||
{
|
||||
long lX=0, lY=0, lZ=0;
|
||||
m_pMv_Proto->_send_cmd_MV_CMD_GET_SCALE_58(lX, lY, lZ);
|
||||
double dX, dY, dZ;
|
||||
dX = m_pMv_Proto->ScaleToMM(lX, m_pMv_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
|
||||
dY = m_pMv_Proto->ScaleToMM(lY, m_pMv_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
|
||||
dZ = m_pMv_Proto->ScaleToMM(lZ, m_pMv_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
|
||||
|
||||
|
||||
m_X_Pos_58.Format(_T("%8.4lf"), dX);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->SetWindowText(m_X_Pos_58);
|
||||
m_Y_Pos_58.Format(_T("%8.4lf"), dY);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->SetWindowText(m_Y_Pos_58);
|
||||
m_Z_Pos_58.Format(_T("%8.4lf"), dZ);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->SetWindowText(m_Z_Pos_58);
|
||||
m_ZM_Pos_58.Format(_T("%8ld"), m_pMv_Proto->g_machine.zm._pos_58);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_58)->SetWindowText(m_ZM_Pos_58);
|
||||
}
|
||||
|
||||
if (m_pMv_Proto->g_machine.s_status._poll_59_active)
|
||||
{
|
||||
double dX=0.0, dY=0.0, dZ=0.0;
|
||||
m_pMv_Proto->mv_motion_get_position_xyz(dX, dY, dZ);
|
||||
m_X_Pos_59.Format(_T("%8.4lf"), dX);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->SetWindowText(m_X_Pos_59);
|
||||
m_Y_Pos_59.Format(_T("%8.4lf"), dY);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->SetWindowText(m_Y_Pos_59);
|
||||
m_Z_Pos_59.Format(_T("%8.4lf"), dZ);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->SetWindowText(m_Z_Pos_59);
|
||||
m_ZM_Pos_59.Format(_T("%8ld"), m_pMv_Proto->g_machine.zm._pos_59);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_59)->SetWindowText(m_ZM_Pos_59);
|
||||
}
|
||||
|
||||
if (lCount%20 == 0 && m_pMv_Proto->g_machine.s_status._poll_2b_active)
|
||||
m_pMv_Proto->_poll_machine_2b();
|
||||
}
|
||||
}
|
||||
}
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonStartPoll58()
|
||||
{
|
||||
// GetDlgItem(IDC_BUTTON_START_POLL_58)->EnableWindow(false);
|
||||
#pragma message("why do we set something twice")
|
||||
if (m_pMv_Proto->g_machine.s_status._poll_58_active)
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_status._poll_58_active = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pMv_Proto->g_machine.s_status._poll_58_active = true;
|
||||
}
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
// 530001010000000000000000000000000000000000000003d08f0003d08f0000000000000000000f423b000f423b0000000000000000003d08ee003d08ee00000000000000000000000000000000000000000000000000000000000000000000
|
||||
// *Speed : 00249999 00249999 00000000 00000000
|
||||
// *Unk1 : 00999995 00999995 00000000 00000000
|
||||
// *Unk2 : 03999982 03999982 00000000 00000000
|
||||
//================================================================================================
|
||||
// Set to slow speed, find the homing marks.
|
||||
// There is one standard homing mark where we keep it from manual homing.
|
||||
// Duplicate from Cold Start 2.91 InSpec
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonDccSeekHome()
|
||||
{
|
||||
m_pMv_Proto->mv_motion_Dcc_Home();
|
||||
return;
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
/*
|
||||
> [endpoint 0x00000001] 00000060 : 530001010100000170d30000b52d0000cd2f000000000000a796000064510000003200000000000f423b000922390000138800000000003d08ef002488e500030d40000000000000000000000000000000000000000000000000000000000000
|
||||
[317683 ms] *Command : 53 Move To -- X Y Z ZM Scale00094419 00046381 00052527 00000000
|
||||
*Speed : 00042902 00025681 00000050 00000000
|
||||
*Unk1 : 00999995 00598585 00005000 00000000
|
||||
*Unk2 : 03999983 02394341 00200000 00000000
|
||||
*/
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonMoveTo()
|
||||
{
|
||||
CMv_Move_Location* pMove_Location = new CMv_Move_Location();
|
||||
pMove_Location->DoModal();
|
||||
delete pMove_Location;
|
||||
return;
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedExit()
|
||||
{
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonStartPoll2b()
|
||||
{
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_2B)->EnableWindow(false);
|
||||
m_pMv_Proto->g_machine.s_status._poll_2b_active = true;
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonSetLight()
|
||||
{
|
||||
CMv_SetLights* pSetLights = new CMv_SetLights();
|
||||
pSetLights->DoModal();
|
||||
delete pSetLights;
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonLoadConfig()
|
||||
{
|
||||
GetDlgItem(IDC_BUTTON_INIT_MVUSB)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_MACHINE)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_2B)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SEEK_HOME)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_MOVE_TO)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_AXIAL_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_BOTTOM_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_AXIAL_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_CYCLE_RING)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SET_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_STOP_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_TERM_MVUSB)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_LOAD_CONFIG)->EnableWindow(false);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_FORMAT_SNOOPY))->SetCheck(1);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_ANNOTATED))->SetCheck(1);
|
||||
((CButton *)GetDlgItem(IDC_CHECK_CONDENSED))->SetCheck(0);
|
||||
m_pMv_Proto->Load_MicroVu_Config();
|
||||
m_OutMessage += _T("\r\nConfiguration Retrieved. Ready to start the machine.");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
}
|
||||
|
||||
//================================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonGetConfig()
|
||||
{
|
||||
m_pMv_Proto->_get_config();
|
||||
m_OutMessage += _T("\r\n Get config done");
|
||||
ShowConfig();
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
void CMv_UtilDlg::ShowConfig()
|
||||
{
|
||||
|
||||
#pragma message("Expand and clean up the ShowConfig code to show parameters in the UI after a get config")
|
||||
|
||||
CString strTemp;
|
||||
m_OutMessage += str_limits_x;
|
||||
strTemp.Format(_T("%d"), m_pMv_Proto->g_machine.s_machine_config.x_axis._neg_working_limit);
|
||||
m_OutMessage += _T(" : ");
|
||||
m_OutMessage += strTemp;
|
||||
m_OutMessage += _T(" : ");
|
||||
strTemp.Format(_T("%d"), m_pMv_Proto->g_machine.s_machine_config.x_axis._pos_working_limit);
|
||||
m_OutMessage += strTemp;
|
||||
|
||||
m_OutMessage += str_scale_range_x;
|
||||
strTemp.Format(_T("%d"), m_pMv_Proto->g_machine.s_machine_config.x_axis._scale_range);
|
||||
m_OutMessage += _T(" : ");
|
||||
m_OutMessage += strTemp;
|
||||
|
||||
m_OutMessage += str_max_speed_x;
|
||||
strTemp.Format(_T("%d"), m_pMv_Proto->g_machine.s_machine_config.x_axis._max_speed);
|
||||
m_OutMessage += _T(" : ");
|
||||
m_OutMessage += strTemp;
|
||||
|
||||
m_OutMessage += str_max_accel_x;
|
||||
m_OutMessage += _T(" : ");
|
||||
strTemp.Format(_T("%d"), m_pMv_Proto->g_machine.s_machine_config.x_axis._max_accel);
|
||||
m_OutMessage += strTemp;
|
||||
|
||||
m_OutMessage += str_max_decel_x;
|
||||
m_OutMessage += _T(" : ");
|
||||
strTemp.Format(_T("%d"), m_pMv_Proto->g_machine.s_machine_config.x_axis._max_decel);
|
||||
m_OutMessage += strTemp;
|
||||
|
||||
m_OutMessage += str_index_x;
|
||||
m_OutMessage += _T(" : ");
|
||||
strTemp.Format(_T("%d"), m_pMv_Proto->g_machine.s_machine_config.x_axis._index_03);
|
||||
m_OutMessage += strTemp;
|
||||
|
||||
m_OutMessage += str_model;
|
||||
m_OutMessage += m_pMv_Proto->g_machine.s_machine_config._str_model;
|
||||
m_OutMessage += str_serial_no;
|
||||
m_OutMessage += m_pMv_Proto->g_machine.s_machine_config._str_serial_no;
|
||||
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage); //
|
||||
|
||||
// update index postion
|
||||
CString _Index;
|
||||
_Index.Format(_T("%f"),(m_pMv_Proto->g_machine.s_machine_config.x_axis._index_03));
|
||||
GetDlgItem(IDC_EDIT_X_INDEX)->SetWindowText(_Index);
|
||||
_Index.Format(_T("%f"),(m_pMv_Proto->g_machine.s_machine_config.y_axis._index_03));
|
||||
GetDlgItem(IDC_EDIT_Y_INDEX)->SetWindowText(_Index);
|
||||
_Index.Format(_T("%f"),(m_pMv_Proto->g_machine.s_machine_config.z_axis._index_03));
|
||||
GetDlgItem(IDC_EDIT_Z_INDEX)->SetWindowText(_Index);
|
||||
};
|
||||
|
||||
void CMv_UtilDlg::OnBnClickedPollingSpeedtest()
|
||||
{
|
||||
double dX, dY, dZ;
|
||||
double dStartTime = m_pMv_Proto->TimeInSecs();
|
||||
long lCount = 0;
|
||||
double dSeconds = 3.0;
|
||||
while (m_pMv_Proto->TimeInSecs() - dStartTime < dSeconds)
|
||||
{
|
||||
m_pMv_Proto->mv_motion_get_position_xyz( dX, dY, dZ );
|
||||
++lCount;
|
||||
}
|
||||
m_lPositionSpeedTestPerSec = (long)(lCount / dSeconds);
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
//========================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonGetIndex()
|
||||
{
|
||||
m_pMv_Proto->_get_xyz_index();
|
||||
CString _Index;
|
||||
_Index.Format(_T("%8d"),(m_pMv_Proto->g_machine.s_machine_config.x_axis._index_03));
|
||||
GetDlgItem(IDC_EDIT_X_INDEX)->SetWindowText(_Index);
|
||||
_Index.Format(_T("%8d"),(m_pMv_Proto->g_machine.s_machine_config.y_axis._index_03));
|
||||
GetDlgItem(IDC_EDIT_Y_INDEX)->SetWindowText(_Index);
|
||||
_Index.Format(_T("%8d"),(m_pMv_Proto->g_machine.s_machine_config.z_axis._index_03));
|
||||
GetDlgItem(IDC_EDIT_Z_INDEX)->SetWindowText(_Index);
|
||||
}
|
||||
|
||||
//========================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonDiagnostic()
|
||||
{
|
||||
GetDlgItem(IDC_BUTTON_INIT_MVUSB)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_START_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_START_POLL_2B)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SEEK_HOME)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_MOVE_TO)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_59)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_ZM_POSITION_58)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_AXIAL_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_BOTTOM_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_AXIAL_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_CYCLE_RING)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SET_LIGHT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_STOP_MACHINE)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_TERM_MVUSB)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_LOAD_CONFIG)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_GET_CONFIG)->EnableWindow(false);
|
||||
m_OutMessage = _T("Diagnostics Mode Active.\r\nPress 'InitUsb' to start.");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
GetDlgItem(IDC_POLLING_SPEEDTEST)->EnableWindow(false);
|
||||
GetDlgItem(IDC_STATIC_SEC)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_SAMPLING)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_GET_INDEX)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_X_INDEX)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Y_INDEX)->EnableWindow(false);
|
||||
GetDlgItem(IDC_EDIT_Z_INDEX)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_DISABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_ENABLE_JOYSTICK)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_POLL_EP_02)->EnableWindow(false);
|
||||
}
|
||||
|
||||
//========================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonDisableJoystick()
|
||||
{
|
||||
m_pMv_Proto->_send_cmd_MV_CMD_SET_JOYSTICK_MODE_47(false);
|
||||
}
|
||||
|
||||
//========================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonEnableJoystick()
|
||||
{
|
||||
m_pMv_Proto->_send_cmd_MV_CMD_SET_JOYSTICK_MODE_47(true);
|
||||
}
|
||||
|
||||
//========================================================
|
||||
void CMv_UtilDlg::OnBnClickedButtonPollEp02()
|
||||
{
|
||||
long lX;
|
||||
long lY;
|
||||
long lZ;
|
||||
long lZM;
|
||||
m_OutMessage += _T("\r\nGet Fine Scale :");
|
||||
m_pMv_Proto->_send_cmd_MV_CMD_GET_FINE_SCALE(lX, lY, lZ, lZM);
|
||||
// update index postion
|
||||
CString _Index;
|
||||
_Index.Format(_T("%d "),lX);
|
||||
m_OutMessage += _Index;
|
||||
_Index.Format(_T("%d "),(lY));
|
||||
m_OutMessage += _Index;
|
||||
_Index.Format(_T("%d "),(lZ));
|
||||
m_OutMessage += _Index;
|
||||
_Index.Format(_T("%d "),(lZM));
|
||||
m_OutMessage += _Index;
|
||||
m_OutMessage += _T("\r\n");
|
||||
GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage);
|
||||
UpdateData(TRUE);
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
#include "..\..\..\MicroVu\Mv_Proto.h"
|
||||
|
||||
|
||||
extern CMv_Proto* m_pMv_Proto;
|
||||
|
||||
#pragma once
|
||||
|
||||
// CMv_UtilDlg dialog
|
||||
class CMv_UtilDlg : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CMv_UtilDlg(CWnd* pParent = NULL); // standard constructor
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_MV_UTIL_DIALOG };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
HICON m_hIcon;
|
||||
// Generated message map functions
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
|
||||
afx_msg void OnPaint();
|
||||
afx_msg HCURSOR OnQueryDragIcon();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
BOOL m_Mode; // 0 - Auto Mode, 1 - Diagnostics
|
||||
CString m_X_Pos_58;
|
||||
CString m_Y_Pos_58;
|
||||
CString m_Z_Pos_58;
|
||||
CString m_ZM_Pos_58;
|
||||
CString m_X_Pos_59;
|
||||
CString m_Y_Pos_59;
|
||||
CString m_Z_Pos_59;
|
||||
CString m_ZM_Pos_59;
|
||||
CString m_OutMessage;
|
||||
afx_msg void OnBnClickedButtonInitMvusb();
|
||||
afx_msg void OnBnClickedButtonTermMvusb();
|
||||
afx_msg void OnBnClickedButtonStopMachine();
|
||||
afx_msg void OnBnClickedButtonStartMachine();
|
||||
afx_msg void OnBnClickedButtonStartPoll59();
|
||||
afx_msg void OnEnSetfocusEditBottomLight();
|
||||
afx_msg void OnEnSetfocusEditAxial();
|
||||
afx_msg void OnBnClickedButtonCycleRing();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnBnClickedButtonStartPoll58();
|
||||
afx_msg void OnBnClickedButtonDccSeekHome();
|
||||
afx_msg void OnBnClickedButtonMoveTo();
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedExit();
|
||||
afx_msg void OnBnClickedButtonStartPoll2b();
|
||||
afx_msg void OnBnClickedButtonSetLight();
|
||||
afx_msg void OnBnClickedButtonReplugUsb();
|
||||
afx_msg void OnBnClickedButtonLoadConfig();
|
||||
afx_msg void OnBnClickedButtonGetConfig();
|
||||
void ShowConfig();
|
||||
afx_msg void OnBnClickedPollingSpeedtest();
|
||||
long m_lPositionSpeedTestPerSec;
|
||||
afx_msg void OnBnClickedButtonGetIndex();
|
||||
afx_msg void OnBnClickedButtonDiagnostic();
|
||||
afx_msg void OnBnClickedButtonDisableJoystick();
|
||||
afx_msg void OnBnClickedButtonEnableJoystick();
|
||||
afx_msg void OnBnClickedButtonPollEp02();
|
||||
afx_msg void OnEnChangeEditXPosition59();
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mv_Util", "Mv_Util\Mv_Util.vcproj", "{50B21A79-C887-4F7E-8911-7E3A685BFA25}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,39 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mv_Util", "Mv_Util\Mv_Util.vcxproj", "{50B21A79-C887-4F7E-8911-7E3A685BFA25}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4} = {C52E6FA6-AFF5-468D-A82F-E9932E8203D4}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libusb0", "..\libusb-win32-src-1.2.4.0\projects\libusb-dll.vcxproj", "{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Debug|x64.Build.0 = Debug|x64
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Release|Win32.Build.0 = Release|Win32
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Release|x64.ActiveCfg = Release|x64
|
||||
{50B21A79-C887-4F7E-8911-7E3A685BFA25}.Release|x64.Build.0 = Release|x64
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}.Debug|x64.Build.0 = Debug|x64
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}.Release|Win32.Build.0 = Release|Win32
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}.Release|x64.ActiveCfg = Release|x64
|
||||
{C52E6FA6-AFF5-468D-A82F-E9932E8203D4}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
@@ -0,0 +1,223 @@
|
||||
// ProcessButton.cpp : ʵÏÖÎļþ
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "afxwin.h"
|
||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||
#include "..\..\..\SevenOcean\CMMIO_SERIAL.H"
|
||||
#include "..\..\..\Animatics\Animatics_Proto.h"
|
||||
|
||||
#include "ProcessButton.h"
|
||||
|
||||
extern CSO7_Proto* m_pSO7_Proto;
|
||||
extern SmartMotor_Proto* pSmartMotor_Proto;
|
||||
//#include "SO7_Move_Location.h"
|
||||
|
||||
// CProcessButton
|
||||
|
||||
IMPLEMENT_DYNAMIC(CProcessButton, CButton)
|
||||
|
||||
CProcessButton::CProcessButton()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CProcessButton::~CProcessButton()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CProcessButton, CButton)
|
||||
ON_WM_LBUTTONDOWN()
|
||||
ON_WM_LBUTTONUP()
|
||||
ON_WM_LBUTTONDBLCLK()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CProcessButton ÏûÏ¢´¦Àí³ÌÐò
|
||||
|
||||
|
||||
//====================================
|
||||
void CProcessButton::OnLButtonDown(UINT nFlags, CPoint point)
|
||||
{
|
||||
if ( point.x>0 )
|
||||
{
|
||||
if (nFlags == MK_LBUTTON)
|
||||
{
|
||||
int iCtrlID;
|
||||
iCtrlID=GetDlgCtrlID();
|
||||
|
||||
switch (iCtrlID)
|
||||
{
|
||||
//======================================================================================
|
||||
case IDC_BUTTON_SO7_MOVE_X_LEFT:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X(-m_pSO7_Proto->g_machine.x._Move_Speed_Gear);
|
||||
/* if(m_pSO7_Proto->g_machine.x._Move_Speed_Gear==4)
|
||||
{
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=m_pSO7_Proto->MMtoScale((m_pSO7_Proto->g_machine.s_machine_config.x_axis._neg_working_limit-m_pSO7_Proto->g_machine.x._d_cur_pos_),m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=0;
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=0;
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
}*/
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_SO7_MOVE_X_RIGHT:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X(m_pSO7_Proto->g_machine.x._Move_Speed_Gear);
|
||||
/* if(m_pSO7_Proto->g_machine.x._Move_Speed_Gear==4)
|
||||
{
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=m_pSO7_Proto->MMtoScale((m_pSO7_Proto->g_machine.s_machine_config.x_axis._pos_working_limit-m_pSO7_Proto->g_machine.x._d_cur_pos_),m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=0;
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=0;
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
}*/
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_SO7_MOVE_Y_FRONT:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Y(m_pSO7_Proto->g_machine.y._Move_Speed_Gear);
|
||||
/* if(m_pSO7_Proto->g_machine.y._Move_Speed_Gear==4)
|
||||
{
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=m_pSO7_Proto->MMtoScale((m_pSO7_Proto->g_machine.s_machine_config.y_axis._pos_working_limit-m_pSO7_Proto->g_machine.y._d_cur_pos_),m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=0;
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=0;
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
}*/
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_SO7_MOVE_Y_BACK:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Y(-m_pSO7_Proto->g_machine.y._Move_Speed_Gear);
|
||||
//if(m_pSO7_Proto->g_machine.y._Move_Speed_Gear==4)
|
||||
//{
|
||||
// m_pSO7_Proto->g_machine.y._pos_fixed._long_=m_pSO7_Proto->MMtoScale((m_pSO7_Proto->g_machine.s_machine_config.y_axis._neg_working_limit-m_pSO7_Proto->g_machine.y._d_cur_pos_),m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
|
||||
// m_pSO7_Proto->g_machine.x._pos_fixed._long_=0;
|
||||
// m_pSO7_Proto->g_machine.z._pos_fixed._long_=0;
|
||||
|
||||
// m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
//}
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_SO7_MOVE_Z_UP:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z(m_pSO7_Proto->g_machine.z._Move_Speed_Gear);
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_SO7_MOVE_Z_DOWN:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z(-m_pSO7_Proto->g_machine.z._Move_Speed_Gear);
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_SO7_MOVE_ZOOM_IN:
|
||||
case IDC_BUTTON_MOVEV_IN:
|
||||
case IDC_BTN_CONFIGURE_MOVEVIN:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_ZM(m_pSO7_Proto->g_machine.zm._Move_Speed_Gear);
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_SO7_MOVE_ZOOM_OUT:
|
||||
case IDC_BUTTON_MOVEV_OUT:
|
||||
case IDC_BTN_CONFIGURE_MOVEVOUT:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_ZM(-m_pSO7_Proto->g_machine.zm._Move_Speed_Gear);
|
||||
break;
|
||||
}
|
||||
//========================================================================
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_X_LEFT:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVEX(FALSE);
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_X_RIGHT:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVEX(TRUE);
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_Y_BACK:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVEY(FALSE);
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_Y_FRONT:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVEY(TRUE);
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_Z_DOWN:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVEZ(FALSE);
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_Z_UP:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_MOVEZ(TRUE);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//====================================
|
||||
void CProcessButton::OnLButtonUp(UINT /*nFlags*/, CPoint/* point*/)
|
||||
{
|
||||
int iCtrlID;
|
||||
iCtrlID=GetDlgCtrlID();
|
||||
switch (iCtrlID)
|
||||
{
|
||||
case IDC_BUTTON_SO7_MOVE_X_LEFT:
|
||||
case IDC_BUTTON_SO7_MOVE_X_RIGHT:
|
||||
case IDC_BUTTON_SO7_MOVE_Y_FRONT:
|
||||
case IDC_BUTTON_SO7_MOVE_Y_BACK:
|
||||
case IDC_BUTTON_SO7_MOVE_Z_UP:
|
||||
case IDC_BUTTON_SO7_MOVE_Z_DOWN:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ();
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_SO7_MOVE_ZOOM_IN:
|
||||
case IDC_BUTTON_SO7_MOVE_ZOOM_OUT:
|
||||
case IDC_BUTTON_MOVEV_OUT:
|
||||
case IDC_BUTTON_MOVEV_IN:
|
||||
case IDC_BTN_CONFIGURE_MOVEVOUT:
|
||||
case IDC_BTN_CONFIGURE_MOVEVIN:
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_V();
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_X_LEFT:
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_X_RIGHT:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_DECEL_STOPX();
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_Y_BACK:
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_Y_FRONT:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_DECEL_STOPY();
|
||||
break;
|
||||
}
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_Z_DOWN:
|
||||
case IDC_BUTTON_ANIMATICS_MOVE_Z_UP:
|
||||
{
|
||||
pSmartMotor_Proto->_send_cmd_SMARTMOTOR_DECEL_STOPZ();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void CProcessButton::OnLButtonDblClk(UINT nFlags, CPoint point)
|
||||
{
|
||||
OnLButtonUp(nFlags, point);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
// CProcessButton
|
||||
|
||||
class CProcessButton : public CButton
|
||||
{
|
||||
DECLARE_DYNAMIC(CProcessButton)
|
||||
|
||||
public:
|
||||
CProcessButton();
|
||||
virtual ~CProcessButton();
|
||||
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
||||
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
||||
|
||||
protected:
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,86 @@
|
||||
#pragma once
|
||||
|
||||
// CSO7_Automatic_Zoom 对话框
|
||||
|
||||
class CSO7_Automatic_Zoom : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CSO7_Automatic_Zoom)
|
||||
|
||||
public:
|
||||
CSO7_Automatic_Zoom(CWnd* pParent = NULL); // 标准构造函数
|
||||
virtual ~CSO7_Automatic_Zoom();
|
||||
|
||||
// 对话框数据
|
||||
enum { IDD = IDD_SO7_UTIL_AUTO_ZOOM };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
CStatusBarCtrl m_StatusBar;
|
||||
CEdit m_edit_Log;
|
||||
int Port;
|
||||
int Baud;
|
||||
char Parity;
|
||||
int Bits;
|
||||
int StopBits;
|
||||
int HandShake;
|
||||
INT iCnt;
|
||||
INT iRepeTestCnt;
|
||||
|
||||
CProcessButton m_Button_MoveV_Zoom_In;
|
||||
CProcessButton m_Button_MoveV_Zoom_Out;
|
||||
CComboBox m_cmbRepeTestFrom,m_cmbRepeTestTo;
|
||||
CString m_Move_to_V;
|
||||
CString m_Set_Speed;
|
||||
CString m_Zoom_Deadband;
|
||||
CString m_Zoom_RepeTime;
|
||||
CString m_OutMessage;
|
||||
|
||||
CString m_Zoom_Pause_Time;
|
||||
CString m_Zoom_Repe_Times;
|
||||
int m_iZoom_Pause_Time;
|
||||
int m_iZoom_Repe_Times;
|
||||
BOOL bBeginFlag;
|
||||
BOOL bRepeTestDone;
|
||||
double m_dMove_to_V_Dis;
|
||||
double m_dZoom_Deadband;
|
||||
double m_dRepeTest_Ang;
|
||||
double m_dRepeTest_Record_Dis;
|
||||
double RecordFromDis,RecordToDis;
|
||||
double m_dZoomMultiple[12];
|
||||
int m_iRepeTime;
|
||||
INT iRetryCnt,iRetryCntTo,iRetryCntFrom;
|
||||
INT iFrom,iTo;
|
||||
BOOL m_bZMHoming;
|
||||
double ReadZoomAngle();
|
||||
BOOL CalibrateEncoder();
|
||||
double GetZoomCurPos();
|
||||
BOOL RepeTest();
|
||||
void OutputWithScroll(const CString &strText,CEdit &edtOutput);
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedButtonSendData();
|
||||
afx_msg void OnBnClickedButtonClearmessage();
|
||||
afx_msg void OnBnClickedButtonHomeV();
|
||||
afx_msg void OnBnClickedRadioMovetest();
|
||||
afx_msg void OnBnClickedRadioSendcmd();
|
||||
afx_msg void OnBnClickedButtonZoomMoveto();
|
||||
afx_msg void OnEnKillfocusEditZoomMoveto();
|
||||
afx_msg void OnEnKillfocusEditZoomDeadband();
|
||||
afx_msg void OnBnClickedButtonZoomSetzero();
|
||||
afx_msg void OnBnClickedRadioZoomGear1();
|
||||
afx_msg void OnBnClickedRadioZoomGear2();
|
||||
afx_msg void OnBnClickedRadioZoomGear3();
|
||||
afx_msg void OnBnClickedRadioZoomGear4();
|
||||
afx_msg void OnBnClickedButtonZoomSetspeed();
|
||||
afx_msg void OnEnKillfocusEditZoomRepeTime();
|
||||
afx_msg void OnBnClickedButtonSavelog();
|
||||
afx_msg void OnBnClickedButtonCalibrateEncoder();
|
||||
afx_msg void OnEnKillfocusEditRepetestPause();
|
||||
afx_msg void OnEnKillfocusEditRepetestTimes();
|
||||
afx_msg void OnBnClickedButtonRepetestBegin();
|
||||
afx_msg void OnEnSetfocusEditZoomAngle();
|
||||
afx_msg void OnBnClickedCheckAutozoomContinueRead();
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,91 @@
|
||||
#pragma once
|
||||
|
||||
// CSO7_Move_Location 对话框
|
||||
|
||||
class CSO7_Move_Location : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CSO7_Move_Location)
|
||||
|
||||
public:
|
||||
CSO7_Move_Location(CWnd* pParent = NULL); // 标准构造函数
|
||||
virtual ~CSO7_Move_Location();
|
||||
|
||||
// 对话框数据
|
||||
enum { IDD = IDD_SO7_UTIL_MOVE_LOCATION };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
double m_move_to_x;
|
||||
double m_move_to_y;
|
||||
double m_move_to_z;
|
||||
double m_move_to_zm;
|
||||
CString m_X_Position;
|
||||
CString m_Y_Position;
|
||||
CString m_Z_Position;
|
||||
CString m_Zm_Position;
|
||||
CString m_Move_to_X;
|
||||
CString m_Move_to_Y;
|
||||
CString m_Move_to_Z;
|
||||
CString m_Move_to_ZM;
|
||||
CString m_RepeTest_Dis;
|
||||
CString m_RepeTest_Times;
|
||||
CString m_RepeTest_Interval;
|
||||
CString m_RepeTest_ErrRange;
|
||||
|
||||
CString m_OutMessage;
|
||||
CString m_OutMessageX;
|
||||
CString m_OutMessageY;
|
||||
CString m_OutMessageZ;
|
||||
CString m_OutMessageV;
|
||||
|
||||
CEdit m_edit_RepeTest;
|
||||
double m_dRepeTest_Dis;
|
||||
long m_lRepeTest_Dis;
|
||||
double m_dRepeTest_Record_Dis[4];
|
||||
long m_lRepeTest_Record_Dis[4];
|
||||
int m_iRepeTest_Times;
|
||||
int m_iRepeTest_Interval;
|
||||
double m_dRepeTest_ErrRange;
|
||||
long m_lRepeTest_ErrRange;
|
||||
|
||||
bool bRepeTestDone;
|
||||
BOOL m_bRepeTestAxisX;
|
||||
BOOL m_bRepeTestAxisY;
|
||||
BOOL m_bRepeTestAxisZ;
|
||||
BOOL m_bRepeTestAxisV;
|
||||
BOOL m_bRepeTestAbsolute;
|
||||
|
||||
SO7AXISMOVE move_x;
|
||||
SO7AXISMOVE move_y;
|
||||
SO7AXISMOVE move_z;
|
||||
SO7AXISMOVE move_zm;
|
||||
|
||||
void RepeTestMoveTo(char type,char axis,double dis);
|
||||
BOOL RepeTestmmRel();
|
||||
BOOL RepeTestmmAbs();
|
||||
BOOL RepeTestpulse();
|
||||
BOOL RepeTestVolComp();
|
||||
BOOL RepeTestZoom();
|
||||
|
||||
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedOkStart();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnBnClickedButtonMoveToZoom();
|
||||
afx_msg void OnBnClickedButtonMoveToXyzLaser();
|
||||
afx_msg void OnBnClickedButtonMoveToXyzJm();
|
||||
afx_msg void OnBnClickedButtonMoveToXyzv();
|
||||
afx_msg void OnBnClickedButtonZeroSet();
|
||||
afx_msg void OnEnKillfocusEditRepetestDis();
|
||||
afx_msg void OnEnKillfocusEditRepetestTimes();
|
||||
afx_msg void OnBnClickedButtonBeginRepeTest();
|
||||
afx_msg void OnBnClickedButtonSaveRepetest();
|
||||
afx_msg void OnEnKillfocusEditRepetestInterval();
|
||||
afx_msg void OnEnKillfocusEditRepetestRrorrange();
|
||||
afx_msg void OnBnClickedCheckRepetestAbsolute();
|
||||
afx_msg void OnBnClickedRadioScale();
|
||||
afx_msg void OnBnClickedRadioMm();
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,420 @@
|
||||
// protocol for control SevenOcean's Machine
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
#ifndef AFX_SO7_Proto_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_
|
||||
#define AFX_SO7_Proto_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_
|
||||
|
||||
#define SO7_TRACE if ( g_pLogger && g_pLogger->m_lLogMask & LOGACTIONS ) g_pLogger->SendAndFlushPerMode
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#include "..\logger.h"
|
||||
#include "CMD_H.h"
|
||||
#include "..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Include\lusb0_usb.h"
|
||||
#include "..\..\..\MicroVu\SsiStatus.h"
|
||||
|
||||
#define MAX_BUFF_SIZE 0x200
|
||||
|
||||
#define USB_ENDPOINT_TYPE_CONTROL 0
|
||||
#define USB_ENDPOINT_TYPE_ISOCHRONOUS 1
|
||||
#define USB_ENDPOINT_TYPE_BULK 2
|
||||
#define USB_ENDPOINT_TYPE_INTERRUPT 3
|
||||
|
||||
#define USB_DEVICE_DESCRIPTOR_TYPE 1
|
||||
#define USB_CONFIGURATION_DESCRIPTOR_TYPE 2
|
||||
|
||||
#define THREAD_RUNNING 0
|
||||
#define THREAD_PAUSED 1
|
||||
#define THREAD_EXIT -1
|
||||
|
||||
// Device configuration and interface id.
|
||||
#define SO7_USB_CONFIG 1
|
||||
#define SO7_USB_INTF 0
|
||||
|
||||
#define EP_01 0x01
|
||||
#define EP_02 0x02
|
||||
#define EP_03 0x03
|
||||
#define EP_81 0x81
|
||||
#define EP_82 0x82
|
||||
#define EP_84 0x84
|
||||
|
||||
#define EP_01_CMD_IDX 0 // index to usb buffers
|
||||
#define EP_81_DATA_IDX 1 //
|
||||
#define EP_02_CMD_IDX 2 //
|
||||
#define EP_82_DATA_IDX 3 //
|
||||
#define EP_03_CMD_IDX 4 //
|
||||
#define EP_84_DATA_IDX 5 //
|
||||
|
||||
#define lEPSIZE 6
|
||||
#define MAXRINGS 5 // for MicroVu Vertex 220
|
||||
#define MAXSEGS 8
|
||||
|
||||
#define TWO_RINGS 2
|
||||
#define EIGHT_SEGS 8
|
||||
#define FIVE_RINGS 5
|
||||
|
||||
const long MAX_INTENSITY = 0x3FF;
|
||||
#define MAXLIGHTVALUE 1024
|
||||
|
||||
#define TWO_RINGS 2
|
||||
#define EIGHT_SEGS 8
|
||||
#define FIVE_RINGS 5
|
||||
#define MAXLIGHTVALUE 1024
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1)
|
||||
//****************************************************************************************************
|
||||
// Set the _status to Idle after reply data has been received.
|
||||
// How to recover? In order to send data, _status must be Idle. If the system is not available
|
||||
// for 1 second, assume something wrong and treat it as "TimeOut".
|
||||
// Another way to do this is to lock this structure is to use a mutex to ensure single-threaded
|
||||
// access.
|
||||
//****************************************************************************************************
|
||||
//====================================================================================================
|
||||
|
||||
typedef struct s_so7_axis // axis parameters
|
||||
{
|
||||
int _pos_once;
|
||||
union
|
||||
{
|
||||
long _long_;
|
||||
char _char_[4];
|
||||
}_pos_fixed;
|
||||
|
||||
long _scale_pos;
|
||||
long _speed;
|
||||
long _acceleration;
|
||||
long _deceleration;
|
||||
double _deg;
|
||||
} SO7AXIS;
|
||||
struct s_so7_axis_config // axis configuration
|
||||
{
|
||||
double _scale_resolution;
|
||||
long _scale_range;
|
||||
long _neg_working_limit;
|
||||
long _pos_working_limit;
|
||||
long _scale_count;
|
||||
long _max_speed;
|
||||
long _max_accel;
|
||||
long _max_decel;
|
||||
long _index_10;
|
||||
long _index_03;
|
||||
bool _bhomed;
|
||||
};
|
||||
struct s_so7_zm_axis_config // zm configuration
|
||||
{
|
||||
int _mag_step; // number of steps
|
||||
long _max_speed;
|
||||
long _scale_count; // total scale count
|
||||
long _neg_working_limit; // within the limits
|
||||
long _pos_working_limit;
|
||||
long _max_accel;
|
||||
long _max_decel;
|
||||
long _index_03;
|
||||
long _index_10;
|
||||
int _slack;
|
||||
};
|
||||
|
||||
struct s_so7_r_axis_config
|
||||
{
|
||||
double _scale_resolution;
|
||||
long _scale_count; // total scale count
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
struct struct_so7_machine
|
||||
{ // g_machine structure
|
||||
struct s_machine_config
|
||||
{
|
||||
wchar_t _str_servo_Id[16];
|
||||
wchar_t _str_model[16];
|
||||
wchar_t _str_model_nbr[16];
|
||||
wchar_t _str_serial_no[16];
|
||||
int _vector_light_model;
|
||||
char _str_2b[64];
|
||||
BYTE _str_bin_2b[64];
|
||||
char _str_4c02_signature[64];
|
||||
BYTE _str_bin_4c02[64];
|
||||
char _str_6f00_signature[64];
|
||||
BYTE _str_bin_6f00[64];
|
||||
char _str_7000_signature[64];
|
||||
BYTE _str_bin_7000[64];
|
||||
int _usb_command_wait;
|
||||
int _usb_command_timeout;
|
||||
struct s_so7_axis_config x_axis;
|
||||
struct s_so7_axis_config y_axis;
|
||||
struct s_so7_axis_config z_axis;
|
||||
struct s_so7_zm_axis_config zm_axis;
|
||||
struct s_so7_r_axis_config r1_axis;
|
||||
struct s_so7_r_axis_config r2_axis;
|
||||
int _nbr_lamps;
|
||||
double _dXYZSpeed; // this is not part of the MV original config data
|
||||
} s_machine_config;
|
||||
struct s_status
|
||||
{
|
||||
bool _homed;
|
||||
bool _machine_running;
|
||||
bool _poll_58_active;
|
||||
bool _poll_59_active;
|
||||
bool _poll_2b_active;
|
||||
bool _bXMoving;
|
||||
bool _bYMoving;
|
||||
bool _bZMoving;
|
||||
bool _bZMMoving;
|
||||
bool _bXYZZMIdle;
|
||||
} s_status;
|
||||
union {
|
||||
struct s_lights_300 // special data structure for 5x8 ring configuration
|
||||
{
|
||||
int _segment[FIVE_RINGS][EIGHT_SEGS];
|
||||
int _bottom_light;
|
||||
int _axial_light;
|
||||
} s_lights_300;
|
||||
struct s_lights_200 // special data structure for 2x8 ring configuration
|
||||
{
|
||||
int _segment[TWO_RINGS][EIGHT_SEGS];
|
||||
int _bottom_light;
|
||||
int _axial_light;
|
||||
} s_lights_200;
|
||||
};
|
||||
long _hit_pos_x; // touch probe
|
||||
long _hit_pos_y; // touch probe
|
||||
struct s_so7_axis x;
|
||||
struct s_so7_axis y;
|
||||
struct s_so7_axis z;
|
||||
struct s_so7_axis zm;
|
||||
struct s_so7_axis r1;
|
||||
struct s_so7_axis r2;
|
||||
};
|
||||
|
||||
#define SEVENOCEAN_VID 0x0d26
|
||||
#define SEVENOCEAN_PID 0x1001
|
||||
|
||||
//****************************************************************************************************
|
||||
// Binary SevenOcean command structure, out going
|
||||
//
|
||||
//****************************************************************************************************
|
||||
#define pSO7_CMD_01 ((s_SO7_CMD_BUFF_01 *) ep_buff[EP_01_CMD_IDX]._buffer)
|
||||
|
||||
struct s_SO7_CMD_BUFF_01
|
||||
{
|
||||
UCHAR uCmdByte;
|
||||
//----------------------------------------------------------------------
|
||||
// [endpoint 0x00000001] 00000060 : 530001010100fffe1d89ffff4d37fffebeee000000000000c34e0000021a0000003200000000000f423b000029fb0000138800000000003d08ee00030d4000030d40000000000000000000000000000000000000000000000000000000000000
|
||||
// *Command : 53 Move To -- X Y Z ZM Scale-0123511 -0045769 -0082194 00000000
|
||||
// *Speed : 00049998 00000538 00000050 00000000
|
||||
// *Unk1 : 00999995 00010747 00005000 00000000
|
||||
// *Unk2 : 03999982 00200000 00200000 00000000
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
BYTE uSubCmdByte;
|
||||
char data[9];
|
||||
}S_SO7_CMD_MOVE_XYZ;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
//======================
|
||||
typedef struct s_so7_xyzzm
|
||||
{
|
||||
bool bFast;
|
||||
long from;
|
||||
long to;
|
||||
long speed;
|
||||
long acc;
|
||||
long dec;
|
||||
double dFromMM;
|
||||
double dToMM;
|
||||
} SO7AXISMOVE;
|
||||
#pragma pack(pop)
|
||||
|
||||
//======================
|
||||
struct struct_so7_ep_buff
|
||||
{
|
||||
int _ep;
|
||||
BYTE _save_send_cmd;
|
||||
BYTE _save_send_cmd0;
|
||||
BYTE _save_send_cmd1;
|
||||
char *_buffer; // MAX_BUFF_SIZE
|
||||
int _size;
|
||||
void *_async_context;
|
||||
BOOL _hProtoPending;
|
||||
HANDLE _event;
|
||||
};
|
||||
|
||||
//======================================================================================
|
||||
class CSO7_Proto
|
||||
{
|
||||
public:
|
||||
// EP 01/81 channel threads.
|
||||
static int g_hEP81_Thread_State;
|
||||
static unsigned __stdcall g_EP81_Thread(LPVOID pThis);
|
||||
static HANDLE g_hEP81_Thread_Id;
|
||||
|
||||
// EP 02/82 channel threads.
|
||||
static int g_hEP82_Thread_State;
|
||||
static unsigned __stdcall g_EP82_Thread(LPVOID pThis);
|
||||
static HANDLE g_hEP82_Thread_Id;
|
||||
//
|
||||
// g_hEP01_Thread_Event is used to kick a command
|
||||
//
|
||||
static int g_hEP01_Thread_State;
|
||||
static unsigned __stdcall g_EP01_Thread(LPVOID pThis);
|
||||
static HANDLE g_hEP01_Thread_Id;
|
||||
static HANDLE g_hEP01_Serial_Mutex; // EP01
|
||||
//
|
||||
static int g_hEP02_Thread_State;
|
||||
static unsigned __stdcall g_EP02_Thread(LPVOID pThis);
|
||||
static HANDLE g_hEP02_Thread_Id;
|
||||
static HANDLE g_hEP02_Serial_Mutex; // EP02
|
||||
|
||||
static HANDLE g_hHomedEvent;
|
||||
|
||||
//
|
||||
CSO7_Proto();
|
||||
virtual ~CSO7_Proto();
|
||||
|
||||
// Global Structures
|
||||
static struct_so7_ep_buff ep_buff[lEPSIZE];
|
||||
static struct_so7_machine g_machine;
|
||||
|
||||
|
||||
SSI_STATUS_MOTION Init_MvUsb();
|
||||
SSI_STATUS_MOTION Exit_MvUsb();
|
||||
SSI_STATUS_MOTION Load_SevenOcean_Config();
|
||||
SSI_STATUS_MOTION GetAppPath(CString &Path);
|
||||
SSI_STATUS_MOTION ExtractAppPath(CString &Path);
|
||||
|
||||
double ScaleToMM(long lCount, double dResolution);
|
||||
long MMtoScale(double lDistanceMM, double dResolution);
|
||||
static void Trace_EP_Buff(long lIndex);
|
||||
|
||||
static double TimeInSecs(void);
|
||||
static CLogger* g_pLogger;
|
||||
static usb_dev_handle *g_dev;
|
||||
|
||||
|
||||
static void _swap_byte(unsigned short &Val);
|
||||
static void _reverse_dword(DWORD *);
|
||||
static void _scale2inch(unsigned long scale, double &inch);
|
||||
static void _inch2scale(unsigned long &scale, double inch);
|
||||
static long _4char2long(unsigned char *cBuff);
|
||||
static void _char2bin(unsigned char *cBuff, BYTE *cBytes, int len);
|
||||
|
||||
bool m_bHomingActive;
|
||||
|
||||
usb_dev_handle* _open_usb_dev(void);
|
||||
|
||||
void so7_set_full_ringlight_data(long lIntensity);
|
||||
void so7_set_ringlight_data(long lMaxSize, double *pSegments);
|
||||
bool so7_motion_is_homed();
|
||||
|
||||
SSI_STATUS_MOTION _start_machine();
|
||||
SSI_STATUS_MOTION _shutdown_machine();
|
||||
SSI_STATUS_MOTION _do_single_threaded_usb_comm(int iEP);
|
||||
SSI_STATUS_MOTION _submit_async_8x(int iEP_Base);
|
||||
SSI_STATUS_MOTION _reap_async_8x(int iEP_Base);
|
||||
SSI_STATUS_MOTION _send_usb_data(int iEP_Base);
|
||||
|
||||
SSI_STATUS_MOTION _poll_machine_2b();
|
||||
//SSI_STATUS_MOTION _poll_machine_58();
|
||||
//SSI_STATUS_MOTION _poll_machine_59();
|
||||
//SSI_STATUS_MOTION _get_config();
|
||||
//SSI_STATUS_MOTION _get_xyz_index();
|
||||
SSI_STATUS_MOTION _replay_capture(CString cFileName);
|
||||
SSI_STATUS_MOTION _process_replay_capture_commands(char *inBuff, FILE* pInFile);
|
||||
SSI_STATUS_MOTION _calculate_straightline_motion(SO7AXISMOVE &X, SO7AXISMOVE &Y, SO7AXISMOVE &Z, double dSpeedMM);
|
||||
SSI_STATUS_MOTION WaitForSettleXYZZM();
|
||||
//SSI_STATUS_MOTION _set_position_xyz(SO7AXISMOVE &X, SO7AXISMOVE &Y, SO7AXISMOVE &Z);
|
||||
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_X();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_Y();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_Z();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_ZM();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_RESET_XYZ();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_TO_POS_X();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_TO_POS_Y();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_TO_POS_Z();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_TO_POS_ZM();
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_TO_POS_XYZ();
|
||||
|
||||
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_X();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_Y();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_Z();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_ZM();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_RESET_XYZ();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_TO_POS_X();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_TO_POS_Y();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_TO_POS_Z();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_TO_POS_ZM();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_TO_POS_XYZ();
|
||||
|
||||
//=========================================================================
|
||||
// Motion Related
|
||||
//=========================================================================
|
||||
SSI_STATUS_MOTION so7_motion_is_supported();
|
||||
SSI_STATUS_MOTION so7_motion_startup(double x_scale_resolution, double y_scale_resolution, double z_scale_resolution);
|
||||
SSI_STATUS_MOTION so7_motion_get_axis_count(int &iCount);
|
||||
SSI_STATUS_MOTION so7_motion_set_speed_xyz(double dSpeed);
|
||||
SSI_STATUS_MOTION so7_motion_get_speed_xyz(double &dSpeed);
|
||||
SSI_STATUS_MOTION so7_motion_set_speed_r(long r_speed);
|
||||
SSI_STATUS_MOTION so7_motion_get_settle_time();
|
||||
SSI_STATUS_MOTION so7_motion_get_deadband();
|
||||
SSI_STATUS_MOTION so7_motion_get_refresh_deadband();
|
||||
SSI_STATUS_MOTION so7_motion_get_position_xyz(double &_dX, double &_dY, double &_dZ);
|
||||
SSI_STATUS_MOTION so7_motion_set_position_xyz(double dX, double dY, double dZ, bool bWait);
|
||||
SSI_STATUS_MOTION so7_motion_get_position_r(double &dPositionR);
|
||||
//SSI_STATUS_MOTION so7_motion_set_position_r(double dPositionR);
|
||||
SSI_STATUS_MOTION so7_motion_store_position_xyz();
|
||||
SSI_STATUS_MOTION so7_motion_get_stored_positions_xyz();
|
||||
SSI_STATUS_MOTION so7_motion_is_so7_axis_moving();
|
||||
SSI_STATUS_MOTION so7_motion_set_stage_limits();
|
||||
SSI_STATUS_MOTION so7_motion_get_stage_limits();
|
||||
SSI_STATUS_MOTION so7_motion_dcc_scan_start();
|
||||
SSI_STATUS_MOTION so7_motion_dcc_scan_get_data_size();
|
||||
SSI_STATUS_MOTION so7_motion_dcc_scan_get_data();
|
||||
//SSI_STATUS_MOTION so7_motion_Dcc_Home();
|
||||
SSI_STATUS_MOTION so7_motion_shut_down();
|
||||
SSI_STATUS_MOTION so7_motion_fly_mode_cancel();
|
||||
SSI_STATUS_MOTION so7_motion_get_axes_max_speed(double &dMaxSpeedX, double &dMaxSpeedY, double &dMaxSpeedZ);
|
||||
SSI_STATUS_MOTION so7_motion_get_3D_max_speed(double &dMaxSpeed);
|
||||
SSI_STATUS_MOTION so7_motion_get_position_meas_point();
|
||||
//
|
||||
SSI_STATUS_MOTION so7_optics_is_supported();
|
||||
SSI_STATUS_MOTION so7_optics_start_up();
|
||||
SSI_STATUS_MOTION so7_optics_get_magnification_steps(int& iSteps);
|
||||
SSI_STATUS_MOTION so7_optics_get_numeric_aperture();
|
||||
SSI_STATUS_MOTION so7_optics_get_magnification(int& iStep);
|
||||
SSI_STATUS_MOTION so7_optics_set_magnification(int iStep);
|
||||
SSI_STATUS_MOTION so7_optics_get_deadband();
|
||||
SSI_STATUS_MOTION so7_optics_get_scale_range(long &neg_scale_range, long &pos_scale_range);
|
||||
SSI_STATUS_MOTION so7_optics_get_scale_position(long &lScale);
|
||||
SSI_STATUS_MOTION so7_optics_set_scale_position(const long lScale);
|
||||
SSI_STATUS_MOTION so7_optics_refresh_lens();
|
||||
SSI_STATUS_MOTION so7_optics_enable_grid();
|
||||
SSI_STATUS_MOTION so7_optics_is_grid_enabled();
|
||||
SSI_STATUS_MOTION so7_optics_enable_laser();
|
||||
SSI_STATUS_MOTION so7_optics_is_laser_enabled();
|
||||
SSI_STATUS_MOTION so7_optics_shut_down();
|
||||
//
|
||||
SSI_STATUS_MOTION so7_light_is_supported(BOOL &bTrue);
|
||||
SSI_STATUS_MOTION so7_light_start_up();
|
||||
SSI_STATUS_MOTION so7_light_get_lamp_count(int& iCount);
|
||||
SSI_STATUS_MOTION so7_light_get_lamp_info();
|
||||
SSI_STATUS_MOTION so7_light_set_lamp_state(double dBottomPercent, double dTopPercent);
|
||||
SSI_STATUS_MOTION so7_light_shut_down();
|
||||
SSI_STATUS_MOTION so7_light_set_light();
|
||||
SSI_STATUS_MOTION so7_light_set_light_off();
|
||||
|
||||
SSI_STATUS_MOTION so7_pendant_enable(BOOL bTrue);
|
||||
static void _process_rcv_transfer_data(int iEP);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,704 @@
|
||||
// SO7_Send_Parameter.cpp : implementation file
|
||||
//
|
||||
#include "stdafx.h"
|
||||
#include <math.h>
|
||||
#include "afxdialogex.h"
|
||||
#include "resource.h"
|
||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||
#include "DrawGraph.h"
|
||||
#include "ProcessButton.h"
|
||||
#include "SO7_UtilDlg.h"
|
||||
#include "SO7_Send_Parameter.h"
|
||||
extern CSO7_Proto* m_pSO7_Proto;
|
||||
|
||||
//#include "INIFile.h"
|
||||
|
||||
// CSO7_Send_Parameter dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CSO7_Send_Parameter, CDialog)
|
||||
|
||||
CSO7_Send_Parameter::CSO7_Send_Parameter(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CSO7_Send_Parameter::IDD, pParent)
|
||||
{
|
||||
m_dbStartX=0.0;
|
||||
m_dbEndX=10;
|
||||
m_dbStartY=0.0;
|
||||
m_dbEndY=10;
|
||||
m_nDivisionX=10;
|
||||
m_nDivisionY=10;
|
||||
m_dPos=0.0;
|
||||
m_StartPos=0.0;
|
||||
m_dMoveDis=0.0;
|
||||
m_SampleTime=0;
|
||||
m_TimerInterval=10;
|
||||
m_dbResolutionX=1.0;
|
||||
m_dbResolutionY=1.0;
|
||||
nCount=0;
|
||||
m_StartTime=0;
|
||||
m_FinishTime=0;
|
||||
m_duration=0.0;
|
||||
}
|
||||
//================================================================
|
||||
CSO7_Send_Parameter::~CSO7_Send_Parameter()
|
||||
{
|
||||
|
||||
}
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_X1, m_csBaseSpeedX[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_X1, m_csMaxSpeedX[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_X1, m_csStartSpeedX[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_X1, m_csFreshSpeedX[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_X1, m_csSlowDisX[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_X2, m_csBaseSpeedX[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_X2, m_csMaxSpeedX[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_X2, m_csStartSpeedX[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_X2, m_csFreshSpeedX[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_X2, m_csSlowDisX[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_X3, m_csBaseSpeedX[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_X3, m_csMaxSpeedX[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_X3, m_csStartSpeedX[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_X3, m_csFreshSpeedX[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_X3, m_csSlowDisX[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_X4, m_csBaseSpeedX[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_X4, m_csMaxSpeedX[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_X4, m_csStartSpeedX[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_X4, m_csFreshSpeedX[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_X4, m_csSlowDisX[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_X5, m_csBaseSpeedX[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_X5, m_csMaxSpeedX[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_X5, m_csStartSpeedX[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_X5, m_csFreshSpeedX[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_X5, m_csSlowDisX[4]);
|
||||
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Y1, m_csBaseSpeedY[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Y1, m_csMaxSpeedY[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Y1, m_csStartSpeedY[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Y1, m_csFreshSpeedY[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Y1, m_csSlowDisY[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Y2, m_csBaseSpeedY[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Y2, m_csMaxSpeedY[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Y2, m_csStartSpeedY[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Y2, m_csFreshSpeedY[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Y2, m_csSlowDisY[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Y3, m_csBaseSpeedY[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Y3, m_csMaxSpeedY[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Y3, m_csStartSpeedY[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Y3, m_csFreshSpeedY[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Y3, m_csSlowDisY[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Y4, m_csBaseSpeedY[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Y4, m_csMaxSpeedY[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Y4, m_csStartSpeedY[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Y4, m_csFreshSpeedY[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Y4, m_csSlowDisY[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Y5, m_csBaseSpeedY[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Y5, m_csMaxSpeedY[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Y5, m_csStartSpeedY[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Y5, m_csFreshSpeedY[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Y5, m_csSlowDisY[4]);
|
||||
|
||||
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Z1, m_csBaseSpeedZ[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Z1, m_csMaxSpeedZ[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Z1, m_csStartSpeedZ[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Z1, m_csFreshSpeedZ[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Z1, m_csSlowDisZ[0]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Z2, m_csBaseSpeedZ[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Z2, m_csMaxSpeedZ[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Z2, m_csStartSpeedZ[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Z2, m_csFreshSpeedZ[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Z2, m_csSlowDisZ[1]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Z3, m_csBaseSpeedZ[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Z3, m_csMaxSpeedZ[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Z3, m_csStartSpeedZ[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Z3, m_csFreshSpeedZ[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Z3, m_csSlowDisZ[2]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Z4, m_csBaseSpeedZ[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Z4, m_csMaxSpeedZ[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Z4, m_csStartSpeedZ[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Z4, m_csFreshSpeedZ[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Z4, m_csSlowDisZ[3]);
|
||||
DDX_Text(pDX, IDC_EDIT_BASESPEED_Z5, m_csBaseSpeedZ[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_MAXSPEED_Z5, m_csMaxSpeedZ[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_STARTSPEED_Z5, m_csStartSpeedZ[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_FRESHSPEED_Z5, m_csFreshSpeedZ[4]);
|
||||
DDX_Text(pDX, IDC_EDIT_SLOWDIS_Z5, m_csSlowDisZ[4]);
|
||||
|
||||
DDX_Text(pDX, IDC_EDIT_WHEELBASE_X, m_csWheelbaseX);
|
||||
DDX_Text(pDX, IDC_EDIT_WHEELBASE_Y, m_csWheelbaseY);
|
||||
DDX_Text(pDX, IDC_EDIT_WHEELBASE_Z, m_csWheelbaseZ);
|
||||
DDX_Text(pDX, IDC_EDIT_WHEELBASE_PULSENUM,m_csPulseNum);
|
||||
|
||||
DDX_Text(pDX, IDC_EDIT_PRECISION_X, m_csPercisionX);
|
||||
DDX_Text(pDX, IDC_EDIT_PRECISION_Y, m_csPercisionY);
|
||||
DDX_Text(pDX, IDC_EDIT_PRECISION_Z, m_csPercisionZ);
|
||||
|
||||
DDX_Text(pDX, IDC_EDIT_NEG_WORKLIMIT_X, m_csNegWorkLimitX);
|
||||
DDX_Text(pDX, IDC_EDIT_NEG_WORKLIMIT_Y, m_csNegWorkLimitY);
|
||||
DDX_Text(pDX, IDC_EDIT_NEG_WORKLIMIT_Z, m_csNegWorkLimitZ);
|
||||
|
||||
DDX_Text(pDX, IDC_EDIT_POS_WORKLIMIT_X, m_csPosWorkLimitX);
|
||||
DDX_Text(pDX, IDC_EDIT_POS_WORKLIMIT_Y, m_csPosWorkLimitY);
|
||||
DDX_Text(pDX, IDC_EDIT_POS_WORKLIMIT_Z, m_csPosWorkLimitZ);
|
||||
|
||||
DDX_Control(pDX, IDC_CUSTOM_CANVAS, m_DrawGraph);
|
||||
DDX_Control(pDX, IDC_EDIT_SET_PARAMETER_MSGOUTPUT, m_edMSG);
|
||||
}
|
||||
|
||||
|
||||
//================================================================
|
||||
BEGIN_MESSAGE_MAP(CSO7_Send_Parameter, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_WM_PAINT()
|
||||
ON_WM_ERASEBKGND()
|
||||
ON_BN_CLICKED(IDOK, &CSO7_Send_Parameter::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDC_BUTTON_BROWSE, &CSO7_Send_Parameter::OnBnClickedButtonBrowse)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SAVE_PARAMETER, &CSO7_Send_Parameter::OnBnClickedButtonSaveParameter)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SAVE, &CSO7_Send_Parameter::OnBnClickedButtonSave)
|
||||
ON_BN_CLICKED(IDC_BUTTON_READ_PARAMETER_FROM_CONTROLLER, &CSO7_Send_Parameter::OnBnClickedButtonReadParameterFromController)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_SAMPLE_SCURVE_DIS, &CSO7_Send_Parameter::OnEnKillfocusEditSampleScurveDis)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_SAMPLE_TIME_SCURVE, &CSO7_Send_Parameter::OnEnKillfocusEditSampleTimeScurve)
|
||||
ON_BN_CLICKED(IDC_BUTTON_START_SAMPLE_SCURVE, &CSO7_Send_Parameter::OnBnClickedButtonStartSampleScurve)
|
||||
ON_BN_CLICKED(IDC_BUTTON_STOP_SAMPLE_SCURVE, &CSO7_Send_Parameter::OnBnClickedButtonStopSampleScurve)
|
||||
ON_BN_CLICKED(IDC_RADIO_CANVAS_SPEED_TIME, &CSO7_Send_Parameter::OnBnClickedRadioCanvasSpeedTime)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CSO7_Send_Parameter message handlers
|
||||
BOOL CSO7_Send_Parameter::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
// 创建状态栏
|
||||
m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBS_SIZEGRIP, CRect(0, 0, 0, 0), this, 101);
|
||||
m_StatusBar.SetBkColor(RGB(0xff, 0xff, 0x00));//0xa6, 0xca, 0xf0
|
||||
int arWidth[] = {500, -1 };
|
||||
m_StatusBar.SetParts(1, arWidth);
|
||||
m_StatusBar.SetText(_T("请打开INI文档 或 从控制器中读取参数(请先确保PulseNo.正确)。"), 0, 0);
|
||||
GetDlgItem(IDC_BUTTON_BROWSE)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_SAVE_PARAMETER)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_READ_PARAMETER_FROM_CONTROLLER)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_SAVE)->EnableWindow(true);
|
||||
ShowParameterOnEdit();
|
||||
m_DrawGraph.SetGraphyView(0, 100, -10, 10);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_X))->SetCheck(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_Y))->SetCheck(false);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_Z))->SetCheck(false);
|
||||
|
||||
((CButton *)GetDlgItem(IDC_RADIO_CANVAS_POSTION_TIME))->SetCheck(true);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_CANVAS_SPEED_TIME))->SetCheck(false);
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::OnPaint()
|
||||
{
|
||||
CPaintDC dc(this); // device context for painting
|
||||
OnDraw(&dc);
|
||||
CDialog::OnPaint();
|
||||
}
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::OnBnClickedOk()
|
||||
{
|
||||
KillTimer(1);
|
||||
CDialog::OnOK();
|
||||
}
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::OnBnClickedButtonBrowse()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
m_csIniFile = "Utility_Config.ini";
|
||||
CFileDialog fileDialog(TRUE, _T("*.ini"),(LPCTSTR) m_csIniFile, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("INI files (*.ini)|*.ini||"), this);
|
||||
|
||||
if ( fileDialog.DoModal ()==IDOK )
|
||||
{
|
||||
m_csIniFile = fileDialog.GetPathName();
|
||||
GetDlgItem(IDC_EDIT_INPUT_FILE)->SetWindowText(m_csIniFile);
|
||||
m_pSO7_Proto->Load_SevenOcean_Inifile(m_csIniFile);
|
||||
ShowParameterOnEdit();
|
||||
m_StatusBar.SetText(_T("正在显示当前INI文档参数。"), 0, 0);
|
||||
}
|
||||
delete fileDialog;
|
||||
}
|
||||
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::OnBnClickedButtonSaveParameter()
|
||||
{
|
||||
ChangeParameterOnEdit();
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,0);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,1);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,2);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,3);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,4);
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,0);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,1);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,2);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,3);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,4);
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,0);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,1);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,2);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,3);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,4);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PRECISION(0);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PRECISION(1);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PRECISION(2);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_MOTOR_SPEED_WHEELBASE_PARAMETER();
|
||||
m_StatusBar.SetText(_T("运动参数已设置到控制器中。"), 0, 0);
|
||||
}
|
||||
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::OnBnClickedButtonSave()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
CString CTmpString;
|
||||
CString PathName;
|
||||
CString path_and_fileName;
|
||||
|
||||
PathName=_T("Utility_Config.ini");
|
||||
CString szFilter=_T("INI Files(*.ini)|*.ini|ALL Files(*.*)|*.*||");
|
||||
CFileDialog fdlg(FALSE,_T("INI"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
|
||||
|
||||
if( fdlg.DoModal()==IDOK)
|
||||
{
|
||||
path_and_fileName=fdlg.GetPathName();
|
||||
ChangeParameterOnEdit();
|
||||
m_pSO7_Proto->Save_SevenOcean_Inifile(path_and_fileName);
|
||||
CTmpString=_T("参数已保存至[")+path_and_fileName+_T("].");
|
||||
m_StatusBar.SetText(CTmpString, 0, 0);
|
||||
}
|
||||
delete fdlg;
|
||||
}
|
||||
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::OnBnClickedButtonReadParameterFromController()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
ChangeParameterOnEdit();
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 0);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 1);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 2);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 3);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 4);
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 0);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 1);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 2);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 3);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 4);
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 0);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 1);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 2);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 3);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 4);
|
||||
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PRECISION(0);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PRECISION(1);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_SPEED_PRECISION(2);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_MOTOR_SPEED_WHEELBASE_PARAMETER();
|
||||
|
||||
ShowParameterOnEdit();
|
||||
m_StatusBar.SetText(_T("运动参数已从控制器中读出。"), 0, 0);
|
||||
}
|
||||
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::ChangeParameterOnEdit()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
const char* cSpeedX;
|
||||
const char* cSpeedY;
|
||||
const char* cSpeedZ;
|
||||
const char* cTemp;
|
||||
|
||||
for(INT i=0;i<5;i++)
|
||||
{
|
||||
cSpeedX=T2A(m_csBaseSpeedX[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_base[i]=static_cast<char>(atoi(cSpeedX));
|
||||
cSpeedX=T2A(m_csMaxSpeedX[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_max[i]=static_cast<char>(atoi(cSpeedX));
|
||||
cSpeedX=T2A(m_csStartSpeedX[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_start[i]=static_cast<char>(atoi(cSpeedX));
|
||||
cSpeedX=T2A(m_csFreshSpeedX[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_fresh[i]=static_cast<char>(atoi(cSpeedX));
|
||||
cSpeedX=T2A(m_csSlowDisX[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_slow_dis[i]=(atof(cSpeedX));
|
||||
|
||||
cSpeedY=T2A(m_csBaseSpeedY[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_base[i]=static_cast<char>(atoi(cSpeedY));
|
||||
cSpeedY=T2A(m_csMaxSpeedY[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_max[i]=static_cast<char>(atoi(cSpeedY));
|
||||
cSpeedY=T2A(m_csStartSpeedY[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_start[i]=static_cast<char>(atoi(cSpeedY));
|
||||
cSpeedY=T2A(m_csFreshSpeedY[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_fresh[i]=static_cast<char>(atoi(cSpeedY));
|
||||
cSpeedY=T2A(m_csSlowDisY[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_slow_dis[i]=(atof(cSpeedY));
|
||||
|
||||
cSpeedZ=T2A(m_csBaseSpeedZ[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_base[i]=static_cast<char>(atoi(cSpeedZ));
|
||||
cSpeedZ=T2A(m_csMaxSpeedZ[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_max[i]=static_cast<char>(atoi(cSpeedZ));
|
||||
cSpeedZ=T2A(m_csStartSpeedZ[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_start[i]=static_cast<char>(atoi(cSpeedZ));
|
||||
cSpeedZ=T2A(m_csFreshSpeedZ[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_fresh[i]=static_cast<char>(atoi(cSpeedZ));
|
||||
cSpeedZ=T2A(m_csSlowDisZ[i]);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_slow_dis[i]=(atof(cSpeedZ));
|
||||
}
|
||||
cTemp=T2A(m_csWheelbaseX);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_wheelbase=(atof(cTemp));
|
||||
cTemp=T2A(m_csWheelbaseY);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_wheelbase=(atof(cTemp));
|
||||
cTemp=T2A(m_csWheelbaseZ);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_wheelbase=(atof(cTemp));
|
||||
cTemp=T2A(m_csPulseNum);
|
||||
m_pSO7_Proto->g_machine._motor_pulse_num=(atoi(cTemp));
|
||||
|
||||
cTemp=T2A(m_csPercisionX);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_precision=(atof(cTemp));
|
||||
cTemp=T2A(m_csPercisionY);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_precision=(atof(cTemp));
|
||||
cTemp=T2A(m_csPercisionZ);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_precision=(atof(cTemp));
|
||||
|
||||
cTemp=T2A(m_csNegWorkLimitX);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._neg_working_limit=(atof(cTemp));
|
||||
cTemp=T2A(m_csNegWorkLimitY);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._neg_working_limit=(atof(cTemp));
|
||||
cTemp=T2A(m_csNegWorkLimitZ);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._neg_working_limit=(atof(cTemp));
|
||||
|
||||
cTemp=T2A(m_csPosWorkLimitX);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.x_axis._pos_working_limit=(atof(cTemp));
|
||||
cTemp=T2A(m_csPosWorkLimitY);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.y_axis._pos_working_limit=(atof(cTemp));
|
||||
cTemp=T2A(m_csPosWorkLimitZ);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.z_axis._pos_working_limit=(atof(cTemp));
|
||||
|
||||
}
|
||||
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::ShowParameterOnEdit()
|
||||
{
|
||||
for(INT i=0;i<5;i++)
|
||||
{
|
||||
m_csBaseSpeedX[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_base[i]));
|
||||
m_csMaxSpeedX[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_max[i]));
|
||||
m_csStartSpeedX[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_start[i]));
|
||||
m_csFreshSpeedX[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_fresh[i]));
|
||||
m_csSlowDisX[i].Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_slow_dis[i]));
|
||||
|
||||
m_csBaseSpeedY[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_base[i]));
|
||||
m_csMaxSpeedY[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_max[i]));
|
||||
m_csStartSpeedY[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_start[i]));
|
||||
m_csFreshSpeedY[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_fresh[i]));
|
||||
m_csSlowDisY[i].Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_slow_dis[i]));
|
||||
|
||||
m_csBaseSpeedZ[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_base[i]));
|
||||
m_csMaxSpeedZ[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_max[i]));
|
||||
m_csStartSpeedZ[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_start[i]));
|
||||
m_csFreshSpeedZ[i].Format(_T("%d"),static_cast<BYTE>(m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_fresh[i]));
|
||||
m_csSlowDisZ[i].Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_slow_dis[i]));
|
||||
}
|
||||
m_csWheelbaseX.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_wheelbase));
|
||||
m_csWheelbaseY.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_wheelbase));
|
||||
m_csWheelbaseZ.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_wheelbase));
|
||||
m_csPulseNum.Format(_T("%d"),(m_pSO7_Proto->g_machine._motor_pulse_num));
|
||||
|
||||
m_csPercisionX.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_precision));
|
||||
m_csPercisionY.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_precision));
|
||||
m_csPercisionZ.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_precision));
|
||||
|
||||
m_csNegWorkLimitX.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.x_axis._neg_working_limit));
|
||||
m_csNegWorkLimitY.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.y_axis._neg_working_limit));
|
||||
m_csNegWorkLimitZ.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.z_axis._neg_working_limit));
|
||||
|
||||
m_csPosWorkLimitX.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.x_axis._pos_working_limit));
|
||||
m_csPosWorkLimitY.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.y_axis._pos_working_limit));
|
||||
m_csPosWorkLimitZ.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.z_axis._pos_working_limit));
|
||||
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
//================================================================
|
||||
void CSO7_Send_Parameter::OnDraw(CDC* pDC)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(pDC);
|
||||
//CWnd* m_p=(CWnd*)GetDlgItem(IDC_STATIC_CANVAS);
|
||||
//m_p->GetWindowRect(&CanvasRect);
|
||||
//CanvasRect.SetRect(550,50,1100,600);//L T R B
|
||||
|
||||
};
|
||||
|
||||
|
||||
//================================================================================================
|
||||
void CSO7_Send_Parameter::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
switch(nIDEvent)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (m_pSO7_Proto)
|
||||
{
|
||||
if (m_pSO7_Proto->g_machine.s_status._machine_running)
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_AXIS_XYZ();
|
||||
|
||||
if(((CButton *)GetDlgItem(IDC_RADIO_CANVAS_POSTION_TIME))->GetCheck())
|
||||
{
|
||||
if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_X))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.x._d_cur_pos_ = m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.x._scale_pos._long_, m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
|
||||
m_FinishTime=clock();
|
||||
m_duration=m_FinishTime-m_StartTime;
|
||||
m_dataGraph.Add(m_pSO7_Proto->g_machine.x._d_cur_pos_);
|
||||
if((abs(m_pSO7_Proto->g_machine.x._d_cur_pos_)-abs(m_dPos))<0.0)
|
||||
{
|
||||
m_csMSG.Format(_T("X Reverse;%f->%f!!!"),m_dPos,m_pSO7_Proto->g_machine.x._d_cur_pos_);
|
||||
OutputWithScroll(m_csMSG,m_edMSG);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_csMSG.Format(_T("X Normal;%f->%f"),m_dPos,m_pSO7_Proto->g_machine.x._d_cur_pos_);
|
||||
OutputWithScroll(m_csMSG,m_edMSG);
|
||||
}
|
||||
m_dPos=m_pSO7_Proto->g_machine.x._d_cur_pos_;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_Y))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.y._d_cur_pos_ = m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.y._scale_pos._long_, m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
|
||||
m_FinishTime=clock();
|
||||
m_duration=m_FinishTime-m_StartTime;
|
||||
m_dataGraph.Add(m_pSO7_Proto->g_machine.y._d_cur_pos_);
|
||||
if((abs(m_pSO7_Proto->g_machine.y._d_cur_pos_)-abs(m_dPos))<0.0)
|
||||
{
|
||||
m_csMSG.Format(_T("Y Reverse;%f->%f!!!"),m_dPos,m_pSO7_Proto->g_machine.y._d_cur_pos_);
|
||||
OutputWithScroll(m_csMSG,m_edMSG);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_csMSG.Format(_T("Y Normal;%f->%f"),m_dPos,m_pSO7_Proto->g_machine.y._d_cur_pos_);
|
||||
OutputWithScroll(m_csMSG,m_edMSG);
|
||||
}
|
||||
m_dPos=m_pSO7_Proto->g_machine.y._d_cur_pos_;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_Z))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.z._d_cur_pos_ = m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.z._scale_pos._long_, m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
|
||||
m_FinishTime=clock();
|
||||
m_duration=m_FinishTime-m_StartTime;
|
||||
m_dataGraph.Add(m_pSO7_Proto->g_machine.z._d_cur_pos_);
|
||||
if((abs(m_pSO7_Proto->g_machine.z._d_cur_pos_)-abs(m_dPos))<0.0)
|
||||
{
|
||||
m_csMSG.Format(_T("Z Reverse;%f->%f!!!"),m_dPos,m_pSO7_Proto->g_machine.z._d_cur_pos_);
|
||||
OutputWithScroll(m_csMSG,m_edMSG);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_csMSG.Format(_T("Z Normal;%f->%f"),m_dPos,m_pSO7_Proto->g_machine.z._d_cur_pos_);
|
||||
OutputWithScroll(m_csMSG,m_edMSG);
|
||||
}
|
||||
m_dPos=m_pSO7_Proto->g_machine.z._d_cur_pos_;
|
||||
}
|
||||
|
||||
if(nCount!=0)
|
||||
{if (abs(m_dataGraph.ElementAt(nCount)-m_dataGraph.ElementAt(nCount-1))<0.000001)
|
||||
{
|
||||
m_DrawGraph.LoadGraphyData(m_dataGraph);
|
||||
KillTimer(1);
|
||||
}}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_X))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.x._d_cur_pos_ = m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.x._scale_pos._long_, m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
|
||||
m_FinishTime=clock();
|
||||
m_duration=m_FinishTime-m_StartTime;
|
||||
m_dataGraph.Add(static_cast<double>(((1000.0*(fabs(m_pSO7_Proto->g_machine.x._d_cur_pos_-m_dPos)))/m_duration)));
|
||||
m_dPos=m_pSO7_Proto->g_machine.x._d_cur_pos_;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_Y))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.y._d_cur_pos_ = m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.y._scale_pos._long_, m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
|
||||
m_FinishTime=clock();
|
||||
m_duration=m_FinishTime-m_StartTime;
|
||||
m_dataGraph.Add(static_cast<double>(1000.0*(fabs(m_pSO7_Proto->g_machine.y._d_cur_pos_-m_dPos)/m_duration)));
|
||||
m_dPos=m_pSO7_Proto->g_machine.y._d_cur_pos_;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_Z))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.z._d_cur_pos_ = m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.z._scale_pos._long_, m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
|
||||
m_FinishTime=clock();
|
||||
m_duration=m_FinishTime-m_StartTime;
|
||||
m_dataGraph.Add(static_cast<double>(1000.0*(fabs(m_pSO7_Proto->g_machine.z._d_cur_pos_-m_dPos)/m_duration)));
|
||||
m_dPos=m_pSO7_Proto->g_machine.z._d_cur_pos_;
|
||||
}
|
||||
|
||||
if (m_dataGraph.ElementAt(nCount)>=-0.005 && m_dataGraph.ElementAt(nCount)<=0.005)
|
||||
{
|
||||
m_DrawGraph.LoadGraphyData(m_dataGraph);
|
||||
KillTimer(1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
nCount++;
|
||||
m_StartTime=clock();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CSO7_Send_Parameter::OnEnKillfocusEditSampleScurveDis()
|
||||
{
|
||||
CString str;
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
|
||||
GetDlgItem(IDC_EDIT_SAMPLE_SCURVE_DIS)->GetWindowText(str);
|
||||
const char* cTempValue=T2A(str);
|
||||
|
||||
m_dMoveDis = atof(cTempValue);
|
||||
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CSO7_Send_Parameter::OnEnKillfocusEditSampleTimeScurve()
|
||||
{
|
||||
CString str;
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
|
||||
GetDlgItem(IDC_EDIT_SAMPLE_TIME_SCURVE)->GetWindowText(str);
|
||||
const char* cTempValue=T2A(str);
|
||||
|
||||
m_SampleTime = atof(cTempValue);
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CSO7_Send_Parameter::OnBnClickedButtonStartSampleScurve()
|
||||
{
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=0;
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=0;
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=0;
|
||||
if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_X))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.x._pos_fixed._long_=m_pSO7_Proto->MMtoScale(m_dMoveDis,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
|
||||
m_dPos=m_pSO7_Proto->g_machine.x._d_cur_pos_;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_Y))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.y._pos_fixed._long_=m_pSO7_Proto->MMtoScale(m_dMoveDis,m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
|
||||
m_dPos=m_pSO7_Proto->g_machine.y._d_cur_pos_;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_SAMPLE_Z))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.z._pos_fixed._long_=m_pSO7_Proto->MMtoScale(m_dMoveDis,m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
|
||||
m_dPos=m_pSO7_Proto->g_machine.z._d_cur_pos_;
|
||||
}
|
||||
|
||||
m_dbStartX=0;
|
||||
m_dbEndX=m_SampleTime;
|
||||
if(((CButton *)GetDlgItem(IDC_RADIO_CANVAS_POSTION_TIME))->GetCheck())
|
||||
{
|
||||
m_dbStartY=0;
|
||||
m_dbEndY=50;
|
||||
m_dbResolutionX=static_cast<double>(m_TimerInterval/(m_dbEndX*1000.0));//每一次采样所需时间对应X坐标的长度
|
||||
m_dbResolutionY=static_cast<double>(1/m_dbEndY);
|
||||
m_nDivisionX=10;
|
||||
m_nDivisionY=10;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_dbStartY=0;
|
||||
m_dbEndY=50;
|
||||
m_dbResolutionX=static_cast<double>(m_TimerInterval/(m_dbEndX*1000.0));//每一次采样所需时间对应X坐标的长度
|
||||
m_dbResolutionY=static_cast<double>(1/m_dbEndY);
|
||||
m_nDivisionX=10;
|
||||
m_nDivisionY=10;
|
||||
}
|
||||
|
||||
|
||||
nCount=0;
|
||||
m_dataGraph.RemoveAll();
|
||||
m_DrawGraph.SetGraphyView(m_dbStartX,m_dbEndX,m_dbStartY,m_dbEndY,m_nDivisionX,m_nDivisionY);
|
||||
m_DrawGraph.SetResolution(m_dbResolutionX,m_dbResolutionY);
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||||
SetTimer(1,m_TimerInterval,NULL);
|
||||
m_StartTime=clock();
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CSO7_Send_Parameter::OnBnClickedButtonStopSampleScurve()
|
||||
{
|
||||
KillTimer(1);
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
BOOL CSO7_Send_Parameter::OnEraseBkgnd(CDC* pDC)
|
||||
{
|
||||
//UNREFERENCED_PARAMETER(pDC);
|
||||
//return TRUE;
|
||||
return CDialog::OnEraseBkgnd(pDC);
|
||||
}
|
||||
|
||||
void CSO7_Send_Parameter::OnBnClickedRadioCanvasSpeedTime()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
//Print message on edit control
|
||||
void CSO7_Send_Parameter::OutputWithScroll(const CString &strNewText,CEdit &edtOutput)
|
||||
{
|
||||
CString strOutput;
|
||||
edtOutput.GetWindowText(strOutput);
|
||||
strOutput += strNewText;
|
||||
if ("\r\n" != strOutput.Right(2))
|
||||
{
|
||||
strOutput += "\r\n";
|
||||
}
|
||||
|
||||
int iCount = strOutput.GetLength();
|
||||
|
||||
edtOutput.SetRedraw(FALSE);
|
||||
edtOutput.SetWindowText(strOutput);
|
||||
int iLine = edtOutput.GetLineCount();
|
||||
edtOutput.LineScroll(iLine, 0);
|
||||
edtOutput.SetSel(iCount, iCount);
|
||||
edtOutput.SetRedraw(TRUE);
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
// CSO7_Send_Parameter dialog
|
||||
|
||||
class CSO7_Send_Parameter : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CSO7_Send_Parameter)
|
||||
|
||||
public:
|
||||
CSO7_Send_Parameter(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CSO7_Send_Parameter();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_S07_UTIL_SEND_PARAMETER };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnPaint();
|
||||
void OnDraw(CDC* pDC);
|
||||
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
clock_t m_StartTime, m_FinishTime;
|
||||
double m_duration;
|
||||
CString m_csMSG;
|
||||
CEdit m_edMSG;
|
||||
DataBuff m_dataGraph;
|
||||
CDrawGraph m_DrawGraph;
|
||||
double m_dbStartX,m_dbEndX,m_dbStartY,m_dbEndY;
|
||||
int m_nDivisionX,m_nDivisionY;
|
||||
int nCount;
|
||||
double m_StartPos,m_dPos,m_dMoveDis;
|
||||
double m_SampleTime;
|
||||
int m_TimerInterval;
|
||||
double m_dbResolutionX,m_dbResolutionY;
|
||||
CRect CanvasRect;
|
||||
public:
|
||||
CString m_csBaseSpeedX[5];
|
||||
CString m_csMaxSpeedX[5];
|
||||
CString m_csStartSpeedX[5];
|
||||
CString m_csFreshSpeedX[5];
|
||||
CString m_csSlowDisX[5];
|
||||
|
||||
CString m_csBaseSpeedY[5];
|
||||
CString m_csMaxSpeedY[5];
|
||||
CString m_csStartSpeedY[5];
|
||||
CString m_csFreshSpeedY[5];
|
||||
CString m_csSlowDisY[5];
|
||||
|
||||
CString m_csBaseSpeedZ[5];
|
||||
CString m_csMaxSpeedZ[5];
|
||||
CString m_csStartSpeedZ[5];
|
||||
CString m_csFreshSpeedZ[5];
|
||||
CString m_csSlowDisZ[5];
|
||||
|
||||
CString m_csWheelbaseX;
|
||||
CString m_csWheelbaseY;
|
||||
CString m_csWheelbaseZ;
|
||||
CString m_csPulseNum;
|
||||
|
||||
CString m_csPercisionX;
|
||||
CString m_csPercisionY;
|
||||
CString m_csPercisionZ;
|
||||
|
||||
CString m_csNegWorkLimitX;
|
||||
CString m_csNegWorkLimitY;
|
||||
CString m_csNegWorkLimitZ;
|
||||
|
||||
CString m_csPosWorkLimitX;
|
||||
CString m_csPosWorkLimitY;
|
||||
CString m_csPosWorkLimitZ;
|
||||
|
||||
|
||||
CStatusBarCtrl m_StatusBar;
|
||||
|
||||
void ShowParameterOnEdit();
|
||||
void ChangeParameterOnEdit();
|
||||
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedButtonBrowse();
|
||||
CString m_csIniFile;
|
||||
CString m_IniFile;
|
||||
afx_msg void OnBnClickedButtonSaveParameter();
|
||||
afx_msg void OnBnClickedButtonSave();
|
||||
afx_msg void OnBnClickedButtonReadParameterFromController();
|
||||
afx_msg void OnEnKillfocusEditSampleScurveDis();
|
||||
afx_msg void OnEnKillfocusEditSampleTimeScurve();
|
||||
afx_msg void OnBnClickedButtonStartSampleScurve();
|
||||
afx_msg void OnBnClickedButtonStopSampleScurve();
|
||||
afx_msg void OnBnClickedRadioCanvasSpeedTime();
|
||||
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,104 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CSO7_UtilDlg 对话框
|
||||
|
||||
class CSO7_UtilDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CSO7_UtilDlg)
|
||||
|
||||
public:
|
||||
CSO7_UtilDlg(CWnd* pParent = NULL); // 标准构造函数
|
||||
virtual ~CSO7_UtilDlg();
|
||||
|
||||
// 对话框数据
|
||||
enum { IDD = IDD_SO7_UTIL_DIALOG };
|
||||
|
||||
protected:
|
||||
CButton ccc;
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
CString m_OutMessage;
|
||||
CString m_X_Pos;
|
||||
CString m_Y_Pos;
|
||||
CString m_Z_Pos;
|
||||
CString m_Zm_Pos;
|
||||
|
||||
CString m_csTop_Light_Value;
|
||||
CString m_csBom_Light_Value;
|
||||
CString m_csFan_Light_Value;
|
||||
CString m_csBom1_Light_Value;
|
||||
CString m_csBom2_Light_Value;
|
||||
CString m_csFan1_Light_Switch;
|
||||
CString m_csFan2_Light_Switch;
|
||||
|
||||
CString m_cs_Light_Switch;
|
||||
CString m_cs_Light_Size_Value;
|
||||
|
||||
CString m_cs_Version_Number;
|
||||
|
||||
CString m_cs_XScaleCoeff;
|
||||
CString m_cs_YScaleCoeff;
|
||||
CString m_cs_ZScaleCoeff;
|
||||
|
||||
|
||||
CProcessButton m_Button_MoveX_Left;
|
||||
CProcessButton m_Button_MoveX_Right;
|
||||
CProcessButton m_Button_MoveY_Front;
|
||||
CProcessButton m_Button_MoveY_Back;
|
||||
CProcessButton m_Button_MoveZ_Up;
|
||||
CProcessButton m_Button_MoveZ_Down;
|
||||
CProcessButton m_Button_MoveV_Zoom_In;
|
||||
CProcessButton m_Button_MoveV_Zoom_Out;
|
||||
|
||||
|
||||
afx_msg void OnBnClickedButtonInitSo7usb();
|
||||
afx_msg void OnBnClickedButtonTermSo7usb();
|
||||
afx_msg void OnBnClickedButtonStartSo7machine();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedButtonStopSo7machine();
|
||||
afx_msg void OnBnClickedButtonSo7ResetXyz();
|
||||
afx_msg void OnBnClickedButtonMoveTo();
|
||||
afx_msg void OnBnClickedButtonSo7ReadAxisXyz();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg BOOL PreTranslateMessage(MSG* pMsg);
|
||||
|
||||
afx_msg void OnBnClickedButtonSo7MoveXLeft();
|
||||
afx_msg void OnBnClickedRadioSpeedGear1();
|
||||
afx_msg void OnBnClickedRadioSpeedGear2();
|
||||
afx_msg void OnBnClickedRadioSpeedGear3();
|
||||
afx_msg void OnBnClickedRadioSpeedGear4();
|
||||
afx_msg void OnBnClickedButtonReadProbe();
|
||||
afx_msg void OnBnClickedButtonSo7ReadAxisV();
|
||||
afx_msg void OnBnClickedButtonSo7GetResetFlag();
|
||||
afx_msg void OnEnKillfocusEditAxialLight();
|
||||
afx_msg void OnEnKillfocusEditBottomLight();
|
||||
afx_msg void OnEnKillfocusEditRingLight();
|
||||
afx_msg void OnEnKillfocusEditCoaxialLight();
|
||||
afx_msg void OnEnKillfocusEditLightSizeValue();
|
||||
afx_msg void OnEnKillfocusEditLightSwitch();
|
||||
afx_msg void OnEnKillfocusEditCoaxialLight2();
|
||||
afx_msg void OnEnKillfocusEditCoaxialLight3();
|
||||
afx_msg void OnEnKillfocusEditCoaxialLight4();
|
||||
afx_msg void OnBnClickedButtonResetWorktable();
|
||||
afx_msg void OnBnClickedButtonResetV();
|
||||
afx_msg void OnBnClickedButtonGetFixtureFlag();
|
||||
afx_msg void OnBnClickedButtonSetResetFlag();
|
||||
afx_msg void OnBnClickedButtonProbeOnoff();
|
||||
afx_msg void OnEnKillfocusEditSetVerNo();
|
||||
afx_msg void OnBnClickedButtonFixtureOnoff();
|
||||
afx_msg void OnBnClickedButtonFixtureUpdown();
|
||||
afx_msg void OnBnClickedButtonResetWorktableRight();
|
||||
afx_msg void OnBnClickedButtonGetLaser();
|
||||
afx_msg void OnBnClickedButtonSetSection();
|
||||
afx_msg void OnBnClickedButtonCorrectionScale();
|
||||
afx_msg void OnEnKillfocusEditXScaleCoefficient();
|
||||
afx_msg void OnEnKillfocusEditYScaleCoefficient();
|
||||
afx_msg void OnEnKillfocusEditZScaleCoefficient();
|
||||
afx_msg void OnBnClickedButtonLoadSo7config();
|
||||
afx_msg void OnBnClickedButtonAutoZoom();
|
||||
afx_msg void OnBnClickedButtonManualHome();
|
||||
afx_msg void OnBnClickedButtonSetupSo7config();
|
||||
};
|
||||
@@ -0,0 +1,45 @@
|
||||
#include "StdAfx.h"
|
||||
#include "SO7_VolComp.h"
|
||||
|
||||
|
||||
CSO7_VolComp::CSO7_VolComp(void)
|
||||
{
|
||||
m_bEnVolComp=FALSE;
|
||||
m_hVolComp=(HMODULE)LoadLibrary(GetAppPath()+_T("\\VolCompensation.dll"));
|
||||
if(m_hVolComp)
|
||||
{
|
||||
m_InitVolComp=(pfVOLCOMP)GetProcAddress(m_hVolComp,"InitVolComp");
|
||||
m_CloseVolComp=(pfVOLCOMP)GetProcAddress(m_hVolComp,"CloseVolComp");
|
||||
m_CompensateToCMM=(pfCOMPENSATE)GetProcAddress(m_hVolComp,"CompensateToCMM");
|
||||
m_CompensateFromCMM=(pfCOMPENSATE)GetProcAddress(m_hVolComp,"CompensateFromCMM");
|
||||
m_bEnVolComp=m_InitVolComp();
|
||||
}
|
||||
};
|
||||
CSO7_VolComp::~CSO7_VolComp(void)
|
||||
{
|
||||
if(m_hVolComp)
|
||||
{
|
||||
m_CloseVolComp();
|
||||
m_bEnVolComp=FALSE;
|
||||
}
|
||||
FreeLibrary(m_hVolComp);
|
||||
|
||||
};
|
||||
|
||||
void CSO7_VolComp::CompensateFromSo7(double &x,double &y,double &z)
|
||||
{
|
||||
if(m_bEnVolComp)
|
||||
{
|
||||
m_CompensateFromCMM(x,y,z);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
void CSO7_VolComp::CompensateToSo7(double &x,double &y,double &z)
|
||||
{
|
||||
if(m_bEnVolComp)
|
||||
{
|
||||
m_CompensateToCMM(x,y,z);
|
||||
}
|
||||
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef _SO7_VOLCOMP_H
|
||||
#define _SO7_VOLCOMP_H
|
||||
|
||||
typedef BOOL (*pfVOLCOMP)();
|
||||
typedef BOOL (*pfCOMPENSATE)(double &x,double &y,double &z);
|
||||
|
||||
class CSO7_VolComp
|
||||
{
|
||||
public:
|
||||
HMODULE m_hVolComp;
|
||||
BOOL m_bEnVolComp;
|
||||
pfVOLCOMP m_InitVolComp;
|
||||
pfVOLCOMP m_CloseVolComp;
|
||||
pfCOMPENSATE m_CompensateToCMM;
|
||||
pfCOMPENSATE m_CompensateFromCMM;
|
||||
void CompensateToSo7(double &x,double &y,double &z);
|
||||
void CompensateFromSo7(double &x,double &y,double &z);
|
||||
CSO7_VolComp(void);
|
||||
~CSO7_VolComp(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#if !defined(AFX_STATUS_MOTION_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_)
|
||||
#define AFX_STATUS_MOTION_H__B422904C_2CEB_495B_B7BD_B45AB30286DD__INCLUDED_
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,660 @@
|
||||
// Setup_so7config.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "afxdialogex.h"
|
||||
#include <math.h>
|
||||
#include "ProcessButton.h"
|
||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||
#include "..\..\..\SevenOcean\CMMIO_SERIAL.H"
|
||||
|
||||
|
||||
#include "Setup_so7config.h"
|
||||
extern CSerial* m_pSO7_Serial;
|
||||
extern CSO7_Proto* m_pSO7_Proto;
|
||||
#define PI 3.1415926535897932384626433
|
||||
// CSetup_so7config dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CSetup_so7config, CDialog)
|
||||
|
||||
CSetup_so7config::CSetup_so7config(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CSetup_so7config::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CSetup_so7config::~CSetup_so7config()
|
||||
{
|
||||
}
|
||||
|
||||
void CSetup_so7config::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
|
||||
DDX_Text(pDX, IDC_EDIT_SO7CONFIG_ZOOMID, m_csZoomID);
|
||||
DDX_Text(pDX, IDC_EDIT_SO7CONFIG_MOTOR_SUBDIVISION, m_csMotorSubdivision);
|
||||
DDX_Text(pDX, IDC_EDIT_SO7CONFIG_ZOOM_FASTSPEED, m_csZoomFastSpeed);
|
||||
DDX_Text(pDX, IDC_EDIT_SO7CONFIG_ZOOM_SLOWSPEED, m_csZoomSlowSpeed);
|
||||
DDX_Text(pDX, IDC_EDIT_SO7CONFIG_ZOOM_PRECISION, m_csZoomPrecision);
|
||||
|
||||
|
||||
DDX_Control(pDX, IDC_BTN_CONFIGURE_MOVEVIN, m_BTNZoomIn);
|
||||
DDX_Control(pDX, IDC_BTN_CONFIGURE_MOVEVOUT, m_BTNZoomOut);
|
||||
DDX_Control(pDX, IDC_EDIT_CONFIGURE_MSGOUT, m_edit_MsgOut);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSetup_so7config, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDC_BTN_CONFIGURE_CALIBRATEV, &CSetup_so7config::OnBnClickedBtnConfigureCalibratev)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SO7CONFIG_STEP1, &CSetup_so7config::OnBnClickedButtonSo7configStep1)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SO7CONFIG_STEP2, &CSetup_so7config::OnBnClickedButtonSo7configStep2)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SO7CONFIG_SET_SPEED, &CSetup_so7config::OnBnClickedButtonSo7configSetSpeed)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SO7CONFIG_ZOOM_NEGLIMIT, &CSetup_so7config::OnBnClickedButtonSo7configZoomNeglimit)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SO7CONFIG_ZOOM_POSLIMIT, &CSetup_so7config::OnBnClickedButtonSo7configZoomPoslimit)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SO7CONFIG_ZOOM_PRECISION, &CSetup_so7config::OnBnClickedButtonSo7configZoomPrecision)
|
||||
ON_BN_CLICKED(IDC_RADIO_SO7CONFIG_ZOOM_MOVE_FAST, &CSetup_so7config::OnBnClickedRadioSo7configZoomMoveFast)
|
||||
ON_BN_CLICKED(IDC_RADIO_SO7CONFIG_ZOOM_MOVE_SLOW, &CSetup_so7config::OnBnClickedRadioSo7configZoomMoveSlow)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_SO7CONFIG_ZOOM_FASTSPEED, &CSetup_so7config::OnEnKillfocusEditSo7configZoomFastspeed)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_SO7CONFIG_ZOOM_SLOWSPEED, &CSetup_so7config::OnEnKillfocusEditSo7configZoomSlowspeed)
|
||||
ON_BN_CLICKED(IDCANCEL, &CSetup_so7config::OnBnClickedCancel)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SO7CONFIG_SET_SUBDIVISION, &CSetup_so7config::OnBnClickedButtonSo7configSetSubdivision)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CSetup_so7config message handlers
|
||||
//===================================================
|
||||
BOOL CSetup_so7config::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
|
||||
//===============================================================================
|
||||
m_cnt=0;
|
||||
_bReading=false;
|
||||
m_nStep=0;
|
||||
m_pSO7_Proto->g_machine.zm._Move_Speed_Gear=2;
|
||||
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SO7CONFIG_ZOOM_MOVE_FAST))->SetCheck(true);
|
||||
if (m_pSO7_Serial)
|
||||
{
|
||||
if(m_pSO7_Serial->Open())
|
||||
{
|
||||
ChangGUIWithStep(m_nStep);
|
||||
m_csMsg.Format(_T("串口打开正常!"));
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangGUIWithStep(-1);
|
||||
AfxMessageBox(_T("串口被占用!"));
|
||||
}
|
||||
}
|
||||
SetTimer(1,200,NULL);
|
||||
m_csZoomID=_T("So7123456");
|
||||
m_csMotorSubdivision=_T("3200");
|
||||
m_csZoomFastSpeed=_T("2000");
|
||||
m_csZoomSlowSpeed=_T("800");
|
||||
m_csZoomPrecision=_T("0.05");
|
||||
UpdateData(FALSE);
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedBtnConfigureCalibratev()
|
||||
{
|
||||
GetDlgItem(IDC_BTN_CONFIGURE_CALIBRATEV)->EnableWindow(false);
|
||||
KillTimer(1);
|
||||
BOOL status=CalibrateEncoder();
|
||||
m_cnt++;
|
||||
if (status)
|
||||
{
|
||||
m_csMsg.Format(_T("第%d次校正成功;"),m_cnt);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_csMsg.Format(_T("第%d次校正失败;"),m_cnt);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
}
|
||||
Sleep(100);
|
||||
SetTimer(1,200,NULL);
|
||||
GetDlgItem(IDC_BTN_CONFIGURE_CALIBRATEV)->EnableWindow(true);
|
||||
}
|
||||
|
||||
//===================================================
|
||||
void CSetup_so7config::OnBnClickedButtonSo7configStep1()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
if (m_csZoomID==_T(""))
|
||||
{
|
||||
m_csMsg=_T("ID不能为空;");
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._ProductID=m_csZoomID;
|
||||
m_csMsg=_T("ZOOM_PRODUCT_ID=")+m_csZoomID;
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_nStep=1;
|
||||
ChangGUIWithStep(m_nStep);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedButtonSo7configStep2()
|
||||
{
|
||||
m_nStep=2;
|
||||
ChangGUIWithStep(m_nStep);
|
||||
}
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedButtonSo7configSetSubdivision()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
if (m_csMotorSubdivision==_T(""))
|
||||
{
|
||||
m_csMsg=_T("细分数不能为空;");
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
}
|
||||
else
|
||||
{
|
||||
const char* cTmp=T2A(m_csMotorSubdivision);
|
||||
int iMotorSubdivision= atoi(cTmp);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._PulseScale = (static_cast<double>(iMotorSubdivision)/360.0)*2.8276578073089675;
|
||||
m_csMsg.Format(_T("ZOOM_PULSE_PER_DEG=%.9f"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._PulseScale);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_nStep=3;
|
||||
ChangGUIWithStep(m_nStep);
|
||||
}
|
||||
}
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedButtonSo7configSetSpeed()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
if (m_csZoomFastSpeed==_T("") || m_csZoomSlowSpeed==_T(""))
|
||||
{
|
||||
m_csMsg=_T("速度值不能为空;");
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
}
|
||||
else
|
||||
{
|
||||
const char* cTmp=T2A(m_csZoomFastSpeed);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedFast = static_cast<short>(atoi(cTmp));
|
||||
cTmp=T2A(m_csZoomSlowSpeed);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedSlow = static_cast<short>(atoi(cTmp));
|
||||
|
||||
m_csMsg.Format(_T("ZOOM_MOTOR_SPEED_FAST=%d"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedFast);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_csMsg.Format(_T("ZOOM_MOTOR_SPEED_SLOW=%d"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedSlow);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SO7CONFIG_ZOOM_MOVE_FAST))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._speed._short_=m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedFast;
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_ZOOM_SPEED(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._speed._short_=m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedSlow;
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_ZOOM_SPEED(2);
|
||||
}
|
||||
m_nStep=4;
|
||||
ChangGUIWithStep(m_nStep);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedButtonSo7configZoomNeglimit()
|
||||
{
|
||||
KillTimer(1);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._neg_deg_working_limit=GetZoomCurPos();
|
||||
SetTimer(1,200,NULL);
|
||||
m_csMsg.Format(_T("From:%f"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._neg_deg_working_limit);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_nStep=5;
|
||||
ChangGUIWithStep(m_nStep);
|
||||
}
|
||||
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedButtonSo7configZoomPoslimit()
|
||||
{
|
||||
KillTimer(1);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._pos_deg_working_limit=GetZoomCurPos();
|
||||
SetTimer(1,200,NULL);
|
||||
m_csMsg.Format(_T("To:%f"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._pos_deg_working_limit);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
|
||||
if ((m_pSO7_Proto->g_machine.s_machine_config.zm_axis._pos_deg_working_limit-m_pSO7_Proto->g_machine.s_machine_config.zm_axis._neg_deg_working_limit)!=0 &&
|
||||
( (m_pSO7_Proto->g_machine.s_machine_config.zm_axis._pos_deg_working_limit-m_pSO7_Proto->g_machine.s_machine_config.zm_axis._neg_deg_working_limit)>240
|
||||
|| (m_pSO7_Proto->g_machine.s_machine_config.zm_axis._pos_deg_working_limit-m_pSO7_Proto->g_machine.s_machine_config.zm_axis._neg_deg_working_limit)>-120))
|
||||
{
|
||||
if ((m_pSO7_Proto->g_machine.s_machine_config.zm_axis._neg_deg_working_limit+230)>=360)
|
||||
{
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._RelativeZeroDegree=floor(m_pSO7_Proto->g_machine.s_machine_config.zm_axis._neg_deg_working_limit);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._StartDegree=(m_pSO7_Proto->g_machine.s_machine_config.zm_axis._RelativeZeroDegree+10-360);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._EndDegree=(m_pSO7_Proto->g_machine.s_machine_config.zm_axis._StartDegree+220);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._RelativeZeroDegree=360;
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._StartDegree=(floor(m_pSO7_Proto->g_machine.s_machine_config.zm_axis._neg_deg_working_limit)+10);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._EndDegree=(m_pSO7_Proto->g_machine.s_machine_config.zm_axis._StartDegree+220);
|
||||
}
|
||||
m_csMsg.Format(_T("ZOOM_START_DEG=%f"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._StartDegree);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_csMsg.Format(_T("ZOOM_END_DEG=%f"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._EndDegree);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_csMsg.Format(_T("ZOOM_ORG_DEG=%f"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._RelativeZeroDegree);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
|
||||
m_nStep=6;
|
||||
ChangGUIWithStep(m_nStep);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_csMsg=_T("范围小于正常值,确保电机转向和读数方向一致,并转到了最小值和最大值;");
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_nStep=4;
|
||||
ChangGUIWithStep(m_nStep);
|
||||
}
|
||||
}
|
||||
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedButtonSo7configZoomPrecision()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
if (m_csZoomPrecision==_T(""))
|
||||
{
|
||||
m_csMsg=_T("精度值不能为空;");
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
}
|
||||
else
|
||||
{
|
||||
const char* cTmp=T2A(m_csZoomPrecision);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._Deadband = atof(cTmp);
|
||||
m_csMsg.Format(_T("ZOOM_DEADBAND_DEG=%f"),m_pSO7_Proto->g_machine.s_machine_config.zm_axis._Deadband);
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_csMsg=_T("");
|
||||
m_pSO7_Proto->GetAppPath(m_csMsg);
|
||||
m_csMsg=_T("配置文件保存在:")+m_csMsg+_T("\\so7_config.ini。");
|
||||
OutputWithScroll(m_csMsg,m_edit_MsgOut);
|
||||
m_pSO7_Proto->Save_So7_Config();
|
||||
|
||||
m_nStep=0;
|
||||
ChangGUIWithStep(m_nStep);
|
||||
}
|
||||
}
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedRadioSo7configZoomMoveFast()
|
||||
{
|
||||
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._speed._short_=m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedFast;
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_ZOOM_SPEED(2);
|
||||
|
||||
}
|
||||
|
||||
//===============================================
|
||||
void CSetup_so7config::OnBnClickedRadioSo7configZoomMoveSlow()
|
||||
{
|
||||
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._speed._short_=m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedSlow;
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_ZOOM_SPEED(2);
|
||||
|
||||
}
|
||||
//===============================================
|
||||
void CSetup_so7config::OnEnKillfocusEditSo7configZoomFastspeed()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
const char* cTmp=T2A(m_csZoomFastSpeed);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedFast = static_cast<short>(atoi(cTmp));
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SO7CONFIG_ZOOM_MOVE_FAST))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._speed._short_=m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedFast;
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_ZOOM_SPEED(2);
|
||||
}
|
||||
}
|
||||
|
||||
//===============================================
|
||||
void CSetup_so7config::OnEnKillfocusEditSo7configZoomSlowspeed()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
const char* cTmp=T2A(m_csZoomSlowSpeed);
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedSlow = static_cast<short>(atoi(cTmp));
|
||||
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_SO7CONFIG_ZOOM_MOVE_SLOW))->GetCheck())
|
||||
{
|
||||
m_pSO7_Proto->g_machine.s_machine_config.zm_axis._speed._short_=m_pSO7_Proto->g_machine.s_machine_config.zm_axis._SpeedSlow;
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_SET_ZOOM_SPEED(2);
|
||||
}
|
||||
}
|
||||
//===============================================
|
||||
void CSetup_so7config::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
|
||||
switch(nIDEvent)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CString csTmpData;
|
||||
m_pSO7_Proto->g_machine.zm._d_cur_pos_=ReadZoomAngle();
|
||||
csTmpData.Format(_T("%.4f°"),m_pSO7_Proto->g_machine.zm._d_cur_pos_);
|
||||
GetDlgItem(IDC_EDIT_SO7CONFIG_READZOOM)->SetWindowTextW(csTmpData);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//===============================================
|
||||
double CSetup_so7config::ReadZoomAngle()
|
||||
{
|
||||
if (_bReading)
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
else
|
||||
{
|
||||
_bReading=true;
|
||||
double dZoomAngle(-1);
|
||||
char sendData[6]={'A','D',':','0',13,10};
|
||||
DWORD iWriteByte=m_pSO7_Serial->Send(sendData,6);
|
||||
|
||||
INT iRetrys(0);
|
||||
while(!m_pSO7_Serial->m_iRecvState && iRetrys<20 && iWriteByte==6)
|
||||
{
|
||||
iRetrys++;
|
||||
Sleep(10);
|
||||
}
|
||||
if (m_pSO7_Serial->m_iRecvState)
|
||||
{
|
||||
if(m_pSO7_Serial->m_csRecv==_T(""))
|
||||
Sleep(40);//200
|
||||
|
||||
char *cRecvData= NULL;
|
||||
char *token = NULL;
|
||||
char cTemp[20]={0};
|
||||
USES_CONVERSION;
|
||||
cRecvData=T2A(m_pSO7_Serial->m_csRecv);
|
||||
|
||||
char seps[] = "$AD:";
|
||||
|
||||
token = strtok(cRecvData,seps);
|
||||
if (token)
|
||||
{
|
||||
memcpy(cTemp,token,8);
|
||||
dZoomAngle=atof(cTemp);
|
||||
dZoomAngle=dZoomAngle*180/PI;
|
||||
};
|
||||
token=NULL;
|
||||
cRecvData=NULL;
|
||||
m_pSO7_Serial->m_csRecv=_T("");
|
||||
m_pSO7_Serial->m_iRecvState=FALSE;
|
||||
_bReading=false;
|
||||
return dZoomAngle;
|
||||
}
|
||||
else
|
||||
{
|
||||
_bReading=false;
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//===============================================
|
||||
double CSetup_so7config::GetZoomCurPos()
|
||||
{
|
||||
double dZoomPos(0),dZoomAng(0),dZoomPreAng(0);
|
||||
INT iCnt2(0);
|
||||
INT iRetryCount(0);
|
||||
dZoomAng=ReadZoomAngle();
|
||||
|
||||
while(iCnt2<3 && iRetryCount<20)
|
||||
{
|
||||
Sleep(60);
|
||||
dZoomPreAng=dZoomAng;
|
||||
dZoomAng=ReadZoomAngle();
|
||||
INT iRetrys(0);
|
||||
while ((dZoomAng==-1 || dZoomAng==-2 || dZoomAng==0 )&&iRetrys<2)
|
||||
{
|
||||
iRetrys++;
|
||||
Sleep(60);
|
||||
dZoomAng=ReadZoomAngle();
|
||||
}
|
||||
if(dZoomAng!=-1 && dZoomAng!=-2 && dZoomAng!=0)
|
||||
{
|
||||
if ((dZoomAng-dZoomPreAng)<1 && (dZoomPreAng-dZoomAng)<1)
|
||||
{
|
||||
dZoomPos+=dZoomAng;
|
||||
iCnt2++;
|
||||
}
|
||||
}
|
||||
iRetryCount++;
|
||||
|
||||
}
|
||||
if (iCnt2==0)
|
||||
{
|
||||
dZoomPos=-2;
|
||||
}
|
||||
else
|
||||
{
|
||||
dZoomPos=dZoomPos/(iCnt2);
|
||||
}
|
||||
return dZoomPos;
|
||||
}
|
||||
|
||||
//===============================================
|
||||
BOOL CSetup_so7config::CalibrateEncoder()
|
||||
{
|
||||
char sendDataI[12]={'U','P',':','1','1','1','1','1','1','1',13,10};
|
||||
char sendDataII[6]={'S','C',':','1',13,10};
|
||||
char sendDataIII[6]={'R','F',':','1',13,10};
|
||||
CString csRightRecv;
|
||||
csRightRecv.Format(_T("@OK\r\n"));
|
||||
INT iRetrys(0);
|
||||
DWORD iWriteByte(0);
|
||||
m_pSO7_Serial->m_csRecv=_T("");
|
||||
m_pSO7_Serial->m_iRecvState=FALSE;
|
||||
|
||||
//Phase I
|
||||
iWriteByte=m_pSO7_Serial->Send(sendDataI,12);
|
||||
while(!m_pSO7_Serial->m_iRecvState && iRetrys<20 && iWriteByte==12)
|
||||
{
|
||||
iRetrys++;
|
||||
Sleep(50);
|
||||
}
|
||||
|
||||
if (m_pSO7_Serial->m_iRecvState)
|
||||
{
|
||||
if(m_pSO7_Serial->m_csRecv==_T(""))
|
||||
Sleep(100);
|
||||
|
||||
if(m_pSO7_Serial->m_csRecv==csRightRecv)
|
||||
{
|
||||
m_pSO7_Serial->m_csRecv=_T("");
|
||||
m_pSO7_Serial->m_iRecvState=FALSE;
|
||||
iRetrys=0;
|
||||
iWriteByte=0;
|
||||
//Phase II
|
||||
|
||||
iWriteByte=m_pSO7_Serial->Send(sendDataII,6);
|
||||
while(!m_pSO7_Serial->m_iRecvState && iRetrys<20 && iWriteByte==6)
|
||||
{
|
||||
iRetrys++;
|
||||
Sleep(50);
|
||||
}
|
||||
if(m_pSO7_Serial->m_iRecvState)
|
||||
{
|
||||
if(m_pSO7_Serial->m_csRecv==_T(""))
|
||||
Sleep(100);
|
||||
|
||||
if(m_pSO7_Serial->m_csRecv==csRightRecv)
|
||||
{
|
||||
m_pSO7_Serial->m_csRecv=_T("");
|
||||
m_pSO7_Serial->m_iRecvState=FALSE;
|
||||
iRetrys=0;
|
||||
iWriteByte=0;
|
||||
//Phase III
|
||||
|
||||
iWriteByte=m_pSO7_Serial->Send(sendDataIII,6);
|
||||
while(!m_pSO7_Serial->m_iRecvState && iRetrys<20 && iWriteByte==6)
|
||||
{
|
||||
iRetrys++;
|
||||
Sleep(50);
|
||||
}
|
||||
if(m_pSO7_Serial->m_iRecvState)
|
||||
{
|
||||
if(m_pSO7_Serial->m_csRecv==_T(""))
|
||||
Sleep(100);
|
||||
|
||||
if(m_pSO7_Serial->m_csRecv==csRightRecv)
|
||||
{
|
||||
m_pSO7_Serial->m_csRecv=_T("");
|
||||
m_pSO7_Serial->m_iRecvState=FALSE;
|
||||
iRetrys=0;
|
||||
iWriteByte=0;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSO7_Serial->m_csRecv=_T("");
|
||||
m_pSO7_Serial->m_iRecvState=FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSO7_Serial->m_csRecv=_T("");
|
||||
m_pSO7_Serial->m_iRecvState=FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSO7_Serial->m_csRecv=_T("");
|
||||
m_pSO7_Serial->m_iRecvState=FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
}
|
||||
//===============================================
|
||||
void CSetup_so7config::ChangGUIWithStep(int _step)
|
||||
{
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_STEP1)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_STEP2)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_SET_SUBDIVISION)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BTN_CONFIGURE_CALIBRATEV)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_SET_SPEED)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_ZOOM_NEGLIMIT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_ZOOM_POSLIMIT)->EnableWindow(false);
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_ZOOM_PRECISION)->EnableWindow(false);
|
||||
|
||||
switch(_step)
|
||||
{
|
||||
case 0:
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_STEP1)->EnableWindow(true);
|
||||
break;
|
||||
case 1:
|
||||
GetDlgItem(IDC_BTN_CONFIGURE_CALIBRATEV)->EnableWindow(true);
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_STEP2)->EnableWindow(true);
|
||||
break;
|
||||
case 2:
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_SET_SUBDIVISION)->EnableWindow(true);
|
||||
break;
|
||||
case 3:
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_SET_SPEED)->EnableWindow(true);
|
||||
break;
|
||||
case 4:
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_ZOOM_NEGLIMIT)->EnableWindow(true);
|
||||
break;
|
||||
case 5:
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_ZOOM_POSLIMIT)->EnableWindow(true);
|
||||
break;
|
||||
case 6:
|
||||
GetDlgItem(IDC_BUTTON_SO7CONFIG_ZOOM_PRECISION)->EnableWindow(true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
//=====================================================================================
|
||||
//Print message on edit control
|
||||
void CSetup_so7config::OutputWithScroll(const CString &strNewText,CEdit &edtOutput)
|
||||
{
|
||||
CString strOutput;
|
||||
edtOutput.GetWindowText(strOutput);
|
||||
strOutput += strNewText;
|
||||
if ("\r\n" != strOutput.Right(2))
|
||||
{
|
||||
strOutput += "\r\n";
|
||||
}
|
||||
|
||||
int iCount = strOutput.GetLength();
|
||||
|
||||
edtOutput.SetRedraw(FALSE);
|
||||
edtOutput.SetWindowText(strOutput);
|
||||
int iLine = edtOutput.GetLineCount();
|
||||
edtOutput.LineScroll(iLine, 0);
|
||||
edtOutput.SetSel(iCount, iCount);
|
||||
edtOutput.SetRedraw(TRUE);
|
||||
}
|
||||
|
||||
|
||||
//=======================================
|
||||
void CSetup_so7config::OnBnClickedCancel()
|
||||
{
|
||||
KillTimer(1);
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CSetup_so7config dialog
|
||||
|
||||
class CSetup_so7config : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CSetup_so7config)
|
||||
|
||||
public:
|
||||
CSetup_so7config(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CSetup_so7config();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_SO7_UTIL_SETUP_CONFIGURE };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
protected:
|
||||
CProcessButton m_BTNZoomIn,m_BTNZoomOut;
|
||||
CEdit m_edit_MsgOut;
|
||||
CString m_csMsg;
|
||||
CString m_csZoomID,m_csZoomFastSpeed,m_csZoomSlowSpeed,m_csZoomPrecision,m_csMotorSubdivision;
|
||||
int m_cnt;
|
||||
int m_nStep;
|
||||
void ChangGUIWithStep(int _step);
|
||||
bool _bReading;
|
||||
public:
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnBnClickedBtnConfigureCalibratev();
|
||||
afx_msg void OnBnClickedButtonSo7configStep1();
|
||||
afx_msg void OnBnClickedButtonSo7configStep2();
|
||||
afx_msg void OnBnClickedButtonSo7configSetSpeed();
|
||||
afx_msg void OnBnClickedButtonSo7configZoomNeglimit();
|
||||
afx_msg void OnBnClickedButtonSo7configZoomPoslimit();
|
||||
afx_msg void OnBnClickedButtonSo7configZoomPrecision();
|
||||
double GetZoomCurPos();
|
||||
double ReadZoomAngle();
|
||||
BOOL CalibrateEncoder();
|
||||
|
||||
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
|
||||
afx_msg void OnBnClickedRadioSo7configZoomMoveFast();
|
||||
afx_msg void OnBnClickedRadioSo7configZoomMoveSlow();
|
||||
afx_msg void OnEnKillfocusEditSo7configZoomFastspeed();
|
||||
afx_msg void OnEnKillfocusEditSo7configZoomSlowspeed();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedButtonSo7configSetSubdivision();
|
||||
};
|
||||
@@ -0,0 +1,134 @@
|
||||
// So7_Option.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||
#include "ProcessButton.h"
|
||||
#include "VideoCardDefine.h"
|
||||
#include "..\..\..\Videocard\SDK3000\sdk3000_7130.h"
|
||||
#include "Videocard_SDK3000.h"
|
||||
#include "..\..\..\Videocard\SV2000E\datastru.h"
|
||||
#include "..\..\..\Videocard\SV2000E\DXMediaCap.h"
|
||||
#include "..\..\..\Videocard\SV2000E\dataAcq.h"
|
||||
#include "Videocard_SV2000E.h"
|
||||
#include "SO7_UtilDlg.h"
|
||||
#include "..\..\..\Keyence\Keyence_Laser.h"
|
||||
#include "..\..\..\Keyence\\Keyence_Proto.h"
|
||||
#include "Keyence_UtilDlg.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "So7_Option.h"
|
||||
|
||||
CSO7_Proto* m_pSO7_Proto=NULL;
|
||||
CKeyence_Laser* m_pKeyence_Laser=NULL;
|
||||
CKeyence_Proto* m_pKeyence_Proto=NULL;
|
||||
// CSo7_Option dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CSo7_Option, CDialog)
|
||||
|
||||
CSo7_Option::CSo7_Option(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CSo7_Option::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CSo7_Option::~CSo7_Option()
|
||||
{
|
||||
}
|
||||
|
||||
void CSo7_Option::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSo7_Option, CDialog)
|
||||
ON_BN_CLICKED(IDOK, &CSo7_Option::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDCANCEL, &CSo7_Option::OnBnClickedCancel)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CSo7_Option message handlers
|
||||
//==================================
|
||||
BOOL CSo7_Option::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
|
||||
((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV2000E))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_TC4000))->SetCheck(FALSE);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
//===================================
|
||||
void CSo7_Option::OnBnClickedOk()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->GetCheck())
|
||||
{
|
||||
if (!m_pSO7_Proto)
|
||||
m_pSO7_Proto = new CSO7_Proto();
|
||||
CSO7_UtilDlg* pSO7_UtilDlg=new CSO7_UtilDlg();
|
||||
pSO7_UtilDlg->DoModal();
|
||||
delete pSO7_UtilDlg;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER_LK_G))->GetCheck())
|
||||
{
|
||||
if (!m_pSO7_Proto)
|
||||
m_pSO7_Proto = new CSO7_Proto();
|
||||
if (!m_pKeyence_Proto)
|
||||
m_pKeyence_Proto=new CKeyence_Proto();
|
||||
if (!m_pKeyence_Laser)
|
||||
m_pKeyence_Laser = new CKeyence_Laser();
|
||||
|
||||
CKeyence_UtilDlg* pKeyence_UtilDlg=new CKeyence_UtilDlg();
|
||||
pKeyence_UtilDlg->DoModal();
|
||||
delete pKeyence_UtilDlg;
|
||||
|
||||
delete m_pKeyence_Laser;
|
||||
delete m_pKeyence_Proto;
|
||||
delete m_pSO7_Proto;
|
||||
m_pKeyence_Laser=NULL;
|
||||
m_pKeyence_Proto=NULL;
|
||||
m_pSO7_Proto=NULL;
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->GetCheck())
|
||||
{
|
||||
CVideocard_SDK3000* pVideocard_SDK3000=new CVideocard_SDK3000();
|
||||
pVideocard_SDK3000->DoModal();
|
||||
delete pVideocard_SDK3000;
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV2000E))->GetCheck())
|
||||
{
|
||||
CVideocard_SV2000E* pVideocard_SV2000E=new CVideocard_SV2000E();
|
||||
pVideocard_SV2000E->DoModal();
|
||||
delete pVideocard_SV2000E;
|
||||
}
|
||||
}
|
||||
|
||||
//===================================
|
||||
void CSo7_Option::OnBnClickedCancel()
|
||||
{
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CSo7_Option dialog
|
||||
|
||||
class CSo7_Option : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CSo7_Option)
|
||||
|
||||
public:
|
||||
CSo7_Option(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CSo7_Option();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_S07_OPTION_DIALOG };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
};
|
||||
Binary file not shown.
@@ -0,0 +1,317 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|x64">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{50B21A79-C887-4F7E-8911-7E3A685BFA25}</ProjectGuid>
|
||||
<RootNamespace>Mv_Util</RootNamespace>
|
||||
<Keyword>MFCProj</Keyword>
|
||||
<ProjectName>Usb_Util</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
<ValidateAllParameters>true</ValidateAllParameters>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>..\..\LibUsb_Win\Lib\Msvc\libusb.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
<ValidateAllParameters>true</ValidateAllParameters>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<AdditionalDependencies>..\..\LibUsb_Win\Lib\Msvc\libusb.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\Animatics\Animatics_Proto.cpp" />
|
||||
<ClCompile Include="..\..\..\Keyence\Keyence_Laser.cpp" />
|
||||
<ClCompile Include="..\..\..\Keyence\Keyence_Proto.cpp" />
|
||||
<ClCompile Include="..\..\..\MicroVu\Mv_Proto.cpp">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Include</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\SevenOcean\CMMIO_BASE.CPP" />
|
||||
<ClCompile Include="..\..\..\SevenOcean\CMMIO_SERIAL.CPP" />
|
||||
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto.cpp" />
|
||||
<ClCompile Include="..\LOGGER.CPP" />
|
||||
<ClCompile Include="..\Proto_Util.cpp" />
|
||||
<ClCompile Include="AnimaticsUtilityDlg.cpp" />
|
||||
<ClCompile Include="CaptureDataDlg.cpp" />
|
||||
<ClCompile Include="DirDialog.cpp" />
|
||||
<ClCompile Include="DrawGraph.cpp" />
|
||||
<ClCompile Include="FileUtilitiesDlg.cpp" />
|
||||
<ClCompile Include="Keyence_UtilDlg.cpp" />
|
||||
<ClCompile Include="Mv_AutoTestDlg.cpp" />
|
||||
<ClCompile Include="Mv_File_Utilities.Cpp" />
|
||||
<ClCompile Include="Mv_MainDlg.cpp" />
|
||||
<ClCompile Include="Mv_Move_Location.cpp" />
|
||||
<ClCompile Include="Mv_Proto_Dump.CPP" />
|
||||
<ClCompile Include="Mv_SetLights.cpp" />
|
||||
<ClCompile Include="Mv_Util.cpp" />
|
||||
<ClCompile Include="Mv_UtilDlg.cpp" />
|
||||
<ClCompile Include="Mv_ProtocolAnalyzerDlg.cpp" />
|
||||
<ClCompile Include="ProcessButton.cpp" />
|
||||
<ClCompile Include="Setup_so7config.cpp" />
|
||||
<ClCompile Include="SO7_Automatic_Zoom.cpp" />
|
||||
<ClCompile Include="SO7_Move_Location.cpp" />
|
||||
<ClCompile Include="So7_Option.cpp" />
|
||||
<ClCompile Include="SO7_Send_Parameter.cpp" />
|
||||
<ClCompile Include="SO7_UtilDlg.cpp" />
|
||||
<ClCompile Include="SO7_VolComp.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Videocard_SDK3000.cpp" />
|
||||
<ClCompile Include="Videocard_SV2000E.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\Animatics\Animatics_Proto.h" />
|
||||
<ClInclude Include="..\..\..\Animatics\IntegMotorInterface.h" />
|
||||
<ClInclude Include="..\..\..\Animatics\SMIDefs.h" />
|
||||
<ClInclude Include="..\..\..\Keyence\Keyence_Laser.h" />
|
||||
<ClInclude Include="..\..\..\Keyence\Keyence_Proto.h" />
|
||||
<ClInclude Include="..\..\..\MicroVu\Mv_Proto.h" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMD_H.h" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMMIO_BASE.H" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMMIO_SERIAL.H" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\So7_Interface.h" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto.h" />
|
||||
<ClInclude Include="..\..\..\Videocard\SDK3000\sdk3000_7130.h" />
|
||||
<ClInclude Include="..\Proto_Util.h" />
|
||||
<ClInclude Include="AnimaticsUtilityDlg.h" />
|
||||
<ClInclude Include="CaptureDataDlg.h" />
|
||||
<ClInclude Include="DirDialog.h" />
|
||||
<ClInclude Include="DrawGraph.h" />
|
||||
<ClInclude Include="FileUtilitiesDlg.h" />
|
||||
<ClInclude Include="Keyence_UtilDlg.h" />
|
||||
<ClInclude Include="Mv_AutoTestDlg.h" />
|
||||
<ClInclude Include="Mv_File_Utilities.h" />
|
||||
<ClInclude Include="Mv_MainDlg.h" />
|
||||
<ClInclude Include="Mv_Move_Location.h" />
|
||||
<ClInclude Include="Mv_Proto_Dump.H" />
|
||||
<ClInclude Include="Mv_SetLights.h" />
|
||||
<ClInclude Include="Mv_Util.h" />
|
||||
<ClInclude Include="Mv_UtilDlg.h" />
|
||||
<ClInclude Include="Mv_ProtocolAnalyzerDlg.h" />
|
||||
<ClInclude Include="ProcessButton.h" />
|
||||
<ClInclude Include="Resource.h" />
|
||||
<ClInclude Include="Setup_so7config.h" />
|
||||
<ClInclude Include="SO7_Automatic_Zoom.h" />
|
||||
<ClInclude Include="SO7_Move_Location.h" />
|
||||
<ClInclude Include="So7_Option.h" />
|
||||
<ClInclude Include="SO7_Send_Parameter.h" />
|
||||
<ClInclude Include="SO7_UtilDlg.h" />
|
||||
<ClInclude Include="SO7_VolComp.h" />
|
||||
<ClInclude Include="STATUS_MOTION.H" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="targetver.h" />
|
||||
<ClInclude Include="VideoCardDefine.h" />
|
||||
<ClInclude Include="Videocard_SDK3000.h" />
|
||||
<ClInclude Include="Videocard_SV2000E.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\..\Animatics\IntegMotorInterface.tlb" />
|
||||
<None Include="res\green.ico" />
|
||||
<None Include="res\Gray.ico" />
|
||||
<None Include="res\Black.ico" />
|
||||
<None Include="res\White.ico" />
|
||||
<None Include="res\red.ico" />
|
||||
<None Include="res\Mv_Util.ico" />
|
||||
<None Include="res\Mv_Util.rc2" />
|
||||
<None Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="Mv_Util.rc" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<UserProperties RESOURCE_FILE="Mv_Util.rc" />
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -0,0 +1,282 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ClCompile Include="CaptureDataDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_SetLights.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DirDialog.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="FileUtilitiesDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\LOGGER.CPP">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_AutoTestDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_File_Utilities.Cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_MainDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_Move_Location.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\MicroVu\Mv_Proto.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_Proto_Dump.CPP">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_ProtocolAnalyzerDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_Util.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Mv_UtilDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Proto_Util.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SO7_UtilDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SO7_Move_Location.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Keyence\Keyence_Laser.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Keyence_UtilDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Keyence\Keyence_Proto.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ProcessButton.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SO7_Send_Parameter.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\SevenOcean\CMMIO_BASE.CPP">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\SevenOcean\CMMIO_SERIAL.CPP">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SO7_Automatic_Zoom.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SO7_VolComp.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="AnimaticsUtilityDlg.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Animatics\Animatics_Proto.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DrawGraph.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="So7_Option.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Videocard_SDK3000.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Videocard_SV2000E.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Setup_so7config.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="CaptureDataDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="DirDialog.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FileUtilitiesDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_AutoTestDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_File_Utilities.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_MainDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_Move_Location.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\MicroVu\Mv_Proto.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_Proto_Dump.H">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_ProtocolAnalyzerDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_SetLights.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_Util.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Mv_UtilDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Proto_Util.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SO7_UtilDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="STATUS_MOTION.H">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SO7_Move_Location.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMD_H.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Keyence\Keyence_Laser.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Keyence_UtilDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Keyence\Keyence_Proto.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ProcessButton.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SO7_Send_Parameter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMMIO_BASE.H">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMMIO_SERIAL.H">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SO7_Automatic_Zoom.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SO7_VolComp.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="AnimaticsUtilityDlg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Animatics\IntegMotorInterface.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Animatics\SMIDefs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Animatics\Animatics_Proto.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="DrawGraph.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Videocard\SDK3000\sdk3000_7130.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="So7_Option.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Videocard_SDK3000.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Videocard_SV2000E.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="VideoCardDefine.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Setup_so7config.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\SevenOcean\So7_Interface.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
<None Include="res\Mv_Util.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\Mv_Util.rc2">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="..\..\..\Animatics\IntegMotorInterface.tlb" />
|
||||
<None Include="res\green.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\red.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\Gray.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\White.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="res\Black.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{c3bc2e1f-c4d9-4f5e-ba7f-3e0b50a7bad3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{92f99d2f-53fc-415f-b4c4-8e27f6c59303}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Sources Files">
|
||||
<UniqueIdentifier>{7ce29a12-8b0d-4df6-966f-c952d8c6a5da}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="Mv_Util.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ShowAllFiles>false</ShowAllFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
//ת»»ÀàÐÍ
|
||||
typedef enum{
|
||||
RGB24TORGB = 0,
|
||||
YUY2TORGB,
|
||||
RGB24TOGRAY,
|
||||
YUY2TOGRAY
|
||||
}ConvertColorType;
|
||||
|
||||
typedef struct Image_Buffer
|
||||
{
|
||||
unsigned char ScanLine[480][640*3];
|
||||
Image_Buffer()
|
||||
{
|
||||
for (int i=0;i<480;i++)
|
||||
{
|
||||
for (int j=0;j<640*3;j++)
|
||||
{
|
||||
ScanLine[i][j]=0;
|
||||
}
|
||||
}
|
||||
};
|
||||
}Image_Buffer;
|
||||
@@ -0,0 +1,505 @@
|
||||
// Videocard_SDK3000.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "VideoCardDefine.h"
|
||||
#include "..\..\..\Videocard\SDK3000\sdk3000_7130.h"
|
||||
#include "Videocard_SDK3000.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
static BYTE g_DataBuffer[640*480*2];
|
||||
int g_nPic(0);
|
||||
|
||||
HANDLE g_hEventCap = NULL;
|
||||
HANDLE g_hEventExt = NULL;
|
||||
// CVideocard_SDK3000 dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CVideocard_SDK3000, CDialog)
|
||||
|
||||
CVideocard_SDK3000::CVideocard_SDK3000(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CVideocard_SDK3000::IDD, pParent)
|
||||
{
|
||||
m_dwCard=0;
|
||||
m_nDevNum=0;
|
||||
m_pDev=nullptr;
|
||||
m_hCapThread = NULL;
|
||||
m_bMirror=FALSE;
|
||||
m_ConvertColorType=YUY2TORGB;
|
||||
m_bSaveFile=FALSE;
|
||||
}
|
||||
|
||||
CVideocard_SDK3000::~CVideocard_SDK3000()
|
||||
{
|
||||
}
|
||||
|
||||
void CVideocard_SDK3000::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CVideocard_SDK3000, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDOK, &CVideocard_SDK3000::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDCANCEL, &CVideocard_SDK3000::OnBnClickedCancel)
|
||||
ON_BN_CLICKED(IDC_RADIO_RGB, &CVideocard_SDK3000::OnBnClickedRadioRgb)
|
||||
ON_BN_CLICKED(IDC_RADIO_GRAY, &CVideocard_SDK3000::OnBnClickedRadioGray)
|
||||
ON_BN_CLICKED(IDC_CHECK_MIRROR_VERTICALLY, &CVideocard_SDK3000::OnBnClickedCheckMirrorVertically)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SAVE_PICTURE, &CVideocard_SDK3000::OnBnClickedButtonSavePicture)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CVideocard_SDK3000 message handlers
|
||||
//====================================
|
||||
BOOL CVideocard_SDK3000::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
((CButton *)GetDlgItem(IDC_RADIO_RGB))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_GRAY))->SetCheck(FALSE);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
//======================================
|
||||
void CVideocard_SDK3000::OnBnClickedOk()
|
||||
{
|
||||
LoadVideocard();
|
||||
g_hEventExt = CreateEvent(NULL , FALSE , FALSE , NULL);
|
||||
m_hCapThread = CreateThread(NULL , 0 , ThreadCircleCapture , NULL , 0 , NULL);
|
||||
VCAEnableCapSourceStream(m_dwCard , TRUE, Interlaced_Field, SDK3000PrcCapSourceStream);
|
||||
SetTimer(1,50,NULL);
|
||||
GetDlgItem(IDOK)->EnableWindow(false);
|
||||
}
|
||||
//==========================================
|
||||
void CVideocard_SDK3000::OnBnClickedCancel()
|
||||
{
|
||||
KillTimer(1);
|
||||
if(m_hCapThread)
|
||||
{
|
||||
SetEvent(g_hEventExt);
|
||||
WaitForSingleObject(m_hCapThread , INFINITE);
|
||||
CloseHandle(m_hCapThread);
|
||||
m_hCapThread = NULL;
|
||||
CloseHandle(g_hEventExt);
|
||||
g_hEventExt = NULL;
|
||||
}
|
||||
UnloadVideocard();
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
//============================================
|
||||
void CVideocard_SDK3000::OnBnClickedRadioRgb()
|
||||
{
|
||||
m_ConvertColorType=YUY2TORGB;
|
||||
}
|
||||
|
||||
//============================================
|
||||
void CVideocard_SDK3000::OnBnClickedRadioGray()
|
||||
{
|
||||
m_ConvertColorType=YUY2TOGRAY;
|
||||
}
|
||||
|
||||
//============================================
|
||||
void CVideocard_SDK3000::OnBnClickedCheckMirrorVertically()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_CHECK_MIRROR_VERTICALLY))->GetCheck())
|
||||
{
|
||||
m_bMirror=TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bMirror=FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
//============================================
|
||||
void CVideocard_SDK3000::OnBnClickedButtonSavePicture()
|
||||
{
|
||||
CString CTmpString;
|
||||
CString PathName;
|
||||
CString path_and_fileName;
|
||||
|
||||
PathName=_T("SDK3000.bmp");
|
||||
CString szFilter=_T("BMP Files(*.bmp)|*.bmp|ALL Files(*.*)|*.*||");
|
||||
CFileDialog fdlg(FALSE,_T("BMP"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
|
||||
|
||||
if( fdlg.DoModal()==IDOK)
|
||||
{
|
||||
m_SaveFile=fdlg.GetPathName();
|
||||
}
|
||||
delete fdlg;
|
||||
m_bSaveFile=TRUE;
|
||||
|
||||
}
|
||||
//=======================================
|
||||
BOOL CVideocard_SDK3000::LoadVideocard()
|
||||
{
|
||||
if ( VCAInitSdk() != S_OK )
|
||||
{
|
||||
::AfxMessageBox(_T("SDK3000卡驱动初始化失败!"));
|
||||
return FALSE;
|
||||
}
|
||||
VCAGetDevNum(&m_nDevNum);
|
||||
if ( !m_nDevNum )
|
||||
{
|
||||
::AfxMessageBox(_T("请确定SDK3000卡驱动程序是否安装成功!"));
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
m_pDev = new DEVICE_INFO[m_nDevNum];
|
||||
|
||||
m_pDev[m_dwCard].m_cnVidSwitch = VIDEO_IN_1;
|
||||
m_pDev[m_dwCard].dwCapWeight=640;
|
||||
m_pDev[m_dwCard].dwCapHeight=480;
|
||||
m_pDev[m_dwCard].bOpen=FALSE;
|
||||
CSize szVidSize;
|
||||
szVidSize.cx = m_pDev[m_dwCard].dwCapWeight;
|
||||
szVidSize.cy = m_pDev[m_dwCard].dwCapHeight;
|
||||
|
||||
|
||||
m_pDev[m_dwCard].bOpen = ( VCAConnectDevice( m_dwCard,
|
||||
FALSE,
|
||||
GetDlgItem(IDC_STATIC_SDK3000_PICTURE)->GetSafeHwnd(),
|
||||
szVidSize,
|
||||
m_pDev[m_dwCard].m_cnVidSwitch,
|
||||
25, VideoSubType_YUY2 ) == S_OK );
|
||||
|
||||
CString strTemp;
|
||||
if(!m_pDev[m_dwCard].bOpen)
|
||||
{
|
||||
strTemp.Format( _T("设备%d捕获参数信息错误!"), m_dwCard );
|
||||
::AfxMessageBox( strTemp );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
VCAGetVideoPropertyValue( m_dwCard, VideoProperty_Sharpness,
|
||||
&m_pDev[m_dwCard].stuSharpness );
|
||||
|
||||
VCAGetVideoPropertyValue( m_dwCard, VideoProperty_Saturation,
|
||||
&m_pDev[m_dwCard].stuSaturation );
|
||||
|
||||
VCAGetVideoPropertyValue( m_dwCard, VideoProperty_Hue,
|
||||
&m_pDev[m_dwCard].stuHue );
|
||||
|
||||
VCAGetVideoPropertyValue( m_dwCard, VideoProperty_Contrast,
|
||||
&m_pDev[m_dwCard].stuContrast );
|
||||
|
||||
VCAGetVideoPropertyValue( m_dwCard, VideoProperty_Brightness,
|
||||
&m_pDev[m_dwCard].stuBrightness );
|
||||
|
||||
VCASetVideoPropertyValue( m_dwCard, VideoProperty_Brightness,
|
||||
BrightnessDefault);
|
||||
|
||||
VCASetVideoPropertyValue( m_dwCard, VideoProperty_Saturation,
|
||||
SaturationDefault);
|
||||
|
||||
VCASetVideoPropertyValue( m_dwCard, VideoProperty_Contrast,
|
||||
ContrastDefault);
|
||||
|
||||
VCASetVideoPropertyValue( m_dwCard, VideoProperty_Hue,
|
||||
HueDefault );
|
||||
|
||||
VCASetVideoPropertyValue( m_dwCard, VideoProperty_Sharpness,
|
||||
SharpnessDefault - 5);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//=======================================
|
||||
BOOL CVideocard_SDK3000::UnloadVideocard()
|
||||
{
|
||||
VCAEnableCapSourceStream(m_dwCard , FALSE, Interlaced_Field, SDK3000PrcCapSourceStream);
|
||||
VCADisConnectDevice(m_dwCard);
|
||||
VCAUnInitSdk();
|
||||
|
||||
if ( m_pDev )
|
||||
{
|
||||
delete[] m_pDev;
|
||||
m_pDev = NULL;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
//================================================================
|
||||
void CVideocard_SDK3000::ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *_pSrcData,ConvertColorType _type,BOOL _bMirror)
|
||||
{
|
||||
int x=0;
|
||||
int y=0;
|
||||
long lCnt1=0;
|
||||
long lCnt2=0;
|
||||
long lCnt3=0;
|
||||
int Color_R=0,Color_G=0,Color_B=0;
|
||||
BYTE *pDstData=NULL;
|
||||
for(y=0;y<480;y++)
|
||||
{
|
||||
lCnt1=0;
|
||||
if(_bMirror)
|
||||
pDstData=(BYTE*)_ImageBuffer.ScanLine[479-y];
|
||||
else
|
||||
pDstData=(BYTE*)_ImageBuffer.ScanLine[y];
|
||||
for(x=0;x<640*3;x+=3)
|
||||
{
|
||||
switch(_type)
|
||||
{
|
||||
case RGB24TORGB:
|
||||
{
|
||||
pDstData[x+2]=_pSrcData[y*640*3+x+2];
|
||||
pDstData[x+1]=_pSrcData[y*640*3+x+1];
|
||||
pDstData[x]=_pSrcData[y*640*3+x];
|
||||
break;
|
||||
}
|
||||
case YUY2TORGB:
|
||||
{
|
||||
Color_R=(1164*(_pSrcData[lCnt2*2]-16)+1596*(_pSrcData[lCnt3+3]-128))/1000;
|
||||
if(Color_R>255)Color_R=255;
|
||||
if(Color_R<0)Color_R=0;
|
||||
pDstData[x+2]=static_cast<BYTE>(Color_R);
|
||||
|
||||
|
||||
Color_G=(1164*(_pSrcData[lCnt2*2]-16)-813*(_pSrcData[lCnt3+1]-128)-392*(_pSrcData[lCnt3+3]-128))/1000;
|
||||
if(Color_G>255)Color_G=255;
|
||||
if(Color_G<0)Color_G=0;
|
||||
pDstData[x+1]=static_cast<BYTE>(Color_G);
|
||||
|
||||
|
||||
Color_B=(1164*(_pSrcData[lCnt2*2]-16)+2017*(_pSrcData[lCnt3+1]-128))/1000;
|
||||
if(Color_B>255)Color_B=255;
|
||||
if(Color_B<0)Color_B=0;
|
||||
pDstData[x]=static_cast<BYTE>(Color_B);
|
||||
|
||||
break;
|
||||
}
|
||||
case RGB24TOGRAY:
|
||||
{
|
||||
pDstData[x+2]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
pDstData[x+1]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
pDstData[x]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
break;
|
||||
}
|
||||
case YUY2TOGRAY:
|
||||
{
|
||||
pDstData[x+2]=_pSrcData[2*lCnt2];
|
||||
pDstData[x+1]=_pSrcData[2*lCnt2];
|
||||
pDstData[x]=_pSrcData[2*lCnt2];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if((lCnt1%2)==1)
|
||||
lCnt3=lCnt3+4;
|
||||
lCnt2++;
|
||||
lCnt1++;
|
||||
}
|
||||
}
|
||||
}
|
||||
//================================================================
|
||||
BOOL CVideocard_SDK3000::SaveBitmapToFile(const CBitmap& _bitmap, CString _lpFileName)
|
||||
{
|
||||
HBITMAP hBitmap; // 为刚才的屏幕位图句柄
|
||||
HDC hDC; //设备描述表
|
||||
int iBits; //当前显示分辨率下每个像素所占字节数
|
||||
WORD wBitCount(24); //位图中每个像素所占字节数
|
||||
DWORD dwPaletteSize = 0, //定义调色板大小
|
||||
dwBmBitsSize, //位图中像素字节大小
|
||||
dwDIBSize, //位图文件大小
|
||||
dwWritten; //写入文件字节数
|
||||
BITMAP Bitmap; //位图属性结构
|
||||
BITMAPFILEHEADER bmhFiledr; //位图文件头结构
|
||||
BITMAPINFOHEADER bi; //位图信息头结构
|
||||
LPBITMAPINFOHEADER lpbi; //指向位图信息头结构
|
||||
HANDLE hFile, //定义文件
|
||||
hDib, //分配内存句柄
|
||||
hPal, //调色板句柄
|
||||
hOldPal = NULL;
|
||||
|
||||
//计算位图文件每个像素所占字节数
|
||||
hBitmap = (HBITMAP)_bitmap;
|
||||
hDC = CreateDC(_T("DISPLAY"),NULL,NULL,NULL);
|
||||
iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);
|
||||
DeleteDC(hDC);
|
||||
|
||||
if (iBits <= 1)
|
||||
wBitCount = 1;
|
||||
else if (iBits <= 4)
|
||||
wBitCount = 4;
|
||||
else if (iBits <= 8)
|
||||
wBitCount = 8;
|
||||
else if (iBits <= 24)
|
||||
wBitCount = 24;
|
||||
else if (iBits <= 32)
|
||||
wBitCount = 32;
|
||||
|
||||
//计算调色板大小
|
||||
if (wBitCount <= 8)
|
||||
dwPaletteSize = (1 << wBitCount) * sizeof (RGBQUAD);
|
||||
|
||||
//设置位图信息头结构
|
||||
GetObject(hBitmap, sizeof (BITMAP), (LPSTR)&Bitmap);
|
||||
bi.biSize = sizeof (BITMAPINFOHEADER);
|
||||
bi.biWidth = Bitmap.bmWidth;
|
||||
bi.biHeight = Bitmap.bmHeight;
|
||||
bi.biPlanes = 1;
|
||||
bi.biBitCount = wBitCount;
|
||||
bi.biCompression = BI_RGB;
|
||||
bi.biSizeImage = 0;
|
||||
bi.biXPelsPerMeter = 0;
|
||||
bi.biYPelsPerMeter = 0;
|
||||
bi.biClrUsed = 0;
|
||||
bi.biClrImportant = 0;
|
||||
|
||||
dwBmBitsSize = ((Bitmap.bmWidth * wBitCount+31) / 32) * 4 * Bitmap.bmHeight;
|
||||
|
||||
//为位图内容分配内存
|
||||
hDib = GlobalAlloc(GHND, dwBmBitsSize + dwPaletteSize + sizeof (BITMAPINFOHEADER));
|
||||
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
|
||||
*lpbi = bi;
|
||||
|
||||
// 处理调色板
|
||||
hPal = GetStockObject(DEFAULT_PALETTE);
|
||||
if (hPal)
|
||||
{
|
||||
hDC = ::GetDC(NULL);
|
||||
hOldPal = ::SelectPalette(hDC, (HPALETTE)hPal, FALSE);
|
||||
RealizePalette(hDC);
|
||||
}
|
||||
|
||||
// 获取该调色板下新的像素值
|
||||
GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight, (LPSTR)lpbi + sizeof (BITMAPINFOHEADER) + dwPaletteSize, (LPBITMAPINFO)lpbi, DIB_RGB_COLORS);
|
||||
|
||||
//恢复调色板
|
||||
if (hOldPal)
|
||||
{
|
||||
SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
|
||||
RealizePalette(hDC);
|
||||
::ReleaseDC(NULL, hDC);
|
||||
}
|
||||
|
||||
//创建位图文件
|
||||
hFile = CreateFile(_lpFileName, GENERIC_WRITE,
|
||||
0, NULL, CREATE_ALWAYS,
|
||||
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
return FALSE;
|
||||
|
||||
// 设置位图文件头
|
||||
bmhFiledr.bfType = 0x4D42; // "BM"
|
||||
dwDIBSize = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + dwPaletteSize + dwBmBitsSize;
|
||||
bmhFiledr.bfSize = dwDIBSize;
|
||||
bmhFiledr.bfReserved1 = 0;
|
||||
bmhFiledr.bfReserved2 = 0;
|
||||
bmhFiledr.bfOffBits = (DWORD)sizeof (BITMAPFILEHEADER) + (DWORD)sizeof (BITMAPINFOHEADER) + dwPaletteSize;
|
||||
|
||||
// 写入位图文件头
|
||||
WriteFile(hFile, (LPSTR)&bmhFiledr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);
|
||||
|
||||
// 写入位图文件其余内容
|
||||
WriteFile(hFile, (LPSTR)lpbi, dwDIBSize,&dwWritten, NULL);
|
||||
|
||||
//清除
|
||||
GlobalUnlock(hDib);
|
||||
GlobalFree(hDib);
|
||||
CloseHandle(hFile);
|
||||
|
||||
return TRUE;
|
||||
};
|
||||
//================================================================
|
||||
void CVideocard_SDK3000::OnPaint()
|
||||
{
|
||||
CDC* dc= this->GetDC();
|
||||
int nMode;
|
||||
CDC* pMemDC = new CDC;
|
||||
CBitmap pBitBmp;
|
||||
ConvertVideoSubType(m_ImageBuffer,g_DataBuffer,m_ConvertColorType,m_bMirror);
|
||||
BYTE *pData = (BYTE *)m_ImageBuffer.ScanLine;
|
||||
BITMAPINFO bmpInfo;
|
||||
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmpInfo.bmiHeader.biWidth = 640;
|
||||
bmpInfo.bmiHeader.biHeight = 480;
|
||||
bmpInfo.bmiHeader.biPlanes = 1;
|
||||
bmpInfo.bmiHeader.biBitCount = 24;//X位色
|
||||
bmpInfo.bmiHeader.biCompression = BI_RGB;
|
||||
bmpInfo.bmiHeader.biSizeImage = 0;
|
||||
bmpInfo.bmiHeader.biXPelsPerMeter = 30000;
|
||||
bmpInfo.bmiHeader.biYPelsPerMeter = 30000;
|
||||
bmpInfo.bmiHeader.biClrUsed = 0;
|
||||
bmpInfo.bmiHeader.biClrImportant = 0;
|
||||
|
||||
pBitBmp.CreateCompatibleBitmap(dc,640,480);
|
||||
SetDIBits(dc->m_hDC,pBitBmp,0,480,pData,&bmpInfo,DIB_RGB_COLORS);
|
||||
if (m_bSaveFile)
|
||||
{
|
||||
SaveBitmapToFile(pBitBmp,m_SaveFile);
|
||||
//CImage imgTemp;
|
||||
//imgTemp.Attach(pBitBmp.operator HBITMAP());
|
||||
//imgTemp.Save(m_SaveFile);
|
||||
m_bSaveFile=FALSE;
|
||||
}
|
||||
|
||||
if (!pMemDC->m_hDC)
|
||||
{
|
||||
pMemDC->CreateCompatibleDC(dc);
|
||||
}
|
||||
CBitmap* pOldBitmap = pMemDC->SelectObject(&pBitBmp);
|
||||
nMode = pMemDC->SetBkMode(TRANSPARENT);
|
||||
|
||||
dc->BitBlt(0, 0, 640, 480, pMemDC,0,0, SRCCOPY);
|
||||
|
||||
pMemDC->SetBkMode(nMode);
|
||||
pMemDC->SelectObject(pOldBitmap);
|
||||
ReleaseDC(pMemDC);
|
||||
delete pMemDC;
|
||||
ReleaseDC(dc);
|
||||
}
|
||||
//================================================================================================
|
||||
void CVideocard_SDK3000::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
switch(nIDEvent)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
OnPaint();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
//==========================================
|
||||
void CALLBACK SDK3000PrcCapSourceStream( long lnCardID, long pBuf, long lnWidth, long lnHeight, long lnBiCount )
|
||||
{
|
||||
UNREFERENCED_PARAMETER(lnCardID);
|
||||
memcpy(g_DataBuffer,(BYTE*)pBuf,lnWidth*lnHeight*lnBiCount);
|
||||
};
|
||||
//=========================================
|
||||
DWORD WINAPI ThreadCircleCapture(LPVOID lpParam)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(lpParam);
|
||||
while(true)
|
||||
{
|
||||
DWORD dwRet = WaitForSingleObject(g_hEventExt , 0);
|
||||
if(WAIT_OBJECT_0 == dwRet)
|
||||
break;
|
||||
int nFType ;
|
||||
nFType= true ? 1 : 2;
|
||||
//while(g_pPicBuf->SaveCapPicToFile(nFType));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
#pragma once
|
||||
|
||||
typedef struct DEVICE_INFO
|
||||
{
|
||||
HWND hWnd;
|
||||
BOOL bOpen;
|
||||
DWORD dwCard;
|
||||
DWORD dwRealFrameRate;
|
||||
DWORD dwFileNum;
|
||||
DWORD dwFrameRate;
|
||||
DWORD dwCapHeight;
|
||||
DWORD dwCapWeight;
|
||||
VIDEOPROPERTYRANGE stuSharpness;
|
||||
VIDEOPROPERTYRANGE stuSaturation;
|
||||
VIDEOPROPERTYRANGE stuHue;
|
||||
VIDEOPROPERTYRANGE stuContrast;
|
||||
VIDEOPROPERTYRANGE stuBrightness;
|
||||
BOOL bNetTrans;
|
||||
BOOL bFrameRateReduction;
|
||||
BOOL bMotionDetect;
|
||||
VIDEOSOURCE m_cnVidSwitch;
|
||||
|
||||
}Device_Info;
|
||||
//=========================================
|
||||
DWORD WINAPI ThreadCircleCapture(LPVOID lpParam);
|
||||
//==========================================
|
||||
void CALLBACK SDK3000PrcCapSourceStream( long lnCardID, long pBuf, long lnWidth, long lnHeight, long lnBiCount );
|
||||
// CVideocard_SDK3000 dialog
|
||||
|
||||
class CVideocard_SDK3000 : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CVideocard_SDK3000)
|
||||
|
||||
public:
|
||||
CVideocard_SDK3000(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CVideocard_SDK3000();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_SO7_VIDEOCARD_SDK3000 };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnPaint();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
BOOL LoadVideocard();
|
||||
BOOL UnloadVideocard();
|
||||
void ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *pSrcData,ConvertColorType _type,BOOL _bMirror);
|
||||
BOOL SaveBitmapToFile(const CBitmap& bitmap, CString lpFileName);
|
||||
|
||||
protected:
|
||||
int m_nDevNum;
|
||||
Device_Info* m_pDev;
|
||||
DWORD m_dwCard;
|
||||
RECT m_rcShowWin;
|
||||
Image_Buffer m_ImageBuffer;
|
||||
ConvertColorType m_ConvertColorType;
|
||||
BOOL m_bMirror;
|
||||
BOOL m_bSaveFile;
|
||||
CString m_SaveFile;
|
||||
public:
|
||||
HANDLE m_hCapThread;
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedRadioRgb();
|
||||
afx_msg void OnBnClickedRadioGray();
|
||||
afx_msg void OnBnClickedCheckMirrorVertically();
|
||||
afx_msg void OnBnClickedButtonSavePicture();
|
||||
};
|
||||
@@ -0,0 +1,480 @@
|
||||
// Videocard_SV2000E.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "VideoCardDefine.h"
|
||||
#include "..\..\..\Videocard\SV2000E\datastru.h"
|
||||
#include "..\..\..\Videocard\SV2000E\DXMediaCap.h"
|
||||
#include "..\..\..\Videocard\SV2000E\dataAcq.h"
|
||||
#include "Videocard_SV2000E.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
static const long BrightnessDefault = 5000;
|
||||
static const long ContrastDefault = 5000;
|
||||
static const long SaturationDefault = 5000;
|
||||
static const long HueDefault = 5000;
|
||||
static const long SharpnessDefault = 4;
|
||||
|
||||
//视频制式
|
||||
typedef enum
|
||||
{
|
||||
VideoStandard_None = 0x00000000,
|
||||
VideoStandard_NTSC_M = 0x00000001,
|
||||
VideoStandard_NTSC_M_J = 0x00000002,
|
||||
VideoStandard_NTSC_433 = 0x00000004,
|
||||
VideoStandard_PAL_B = 0x00000010,
|
||||
VideoStandard_PAL_D = 0x00000020,
|
||||
VideoStandard_PAL_H = 0x00000080,
|
||||
VideoStandard_PAL_I = 0x00000100,
|
||||
VideoStandard_PAL_M = 0x00000200,
|
||||
VideoStandard_PAL_N = 0x00000400,
|
||||
VideoStandard_PAL_60 = 0x00000800,
|
||||
VideoStandard_SECAM_B = 0x00001000,
|
||||
VideoStandard_SECAM_D = 0x00002000,
|
||||
VideoStandard_SECAM_G = 0x00004000,
|
||||
VideoStandard_SECAM_H = 0x00008000,
|
||||
VideoStandard_SECAM_K = 0x00010000,
|
||||
VideoStandard_SECAM_K1 = 0x00020000,
|
||||
VideoStandard_SECAM_L = 0x00040000,
|
||||
VideoStandard_SECAM_L1 = 0x00080000,
|
||||
} VideoStandard;
|
||||
static BYTE g_DataBuffer[640*480*2];
|
||||
// CVideocard_SV2000E dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CVideocard_SV2000E, CDialog)
|
||||
|
||||
CVideocard_SV2000E::CVideocard_SV2000E(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CVideocard_SV2000E::IDD, pParent)
|
||||
{
|
||||
m_device=NULL;
|
||||
m_dwCard=0;
|
||||
m_nDevNum=0;
|
||||
m_bMirror=FALSE;
|
||||
m_ConvertColorType=YUY2TORGB;
|
||||
m_bSaveFile=FALSE;
|
||||
}
|
||||
|
||||
CVideocard_SV2000E::~CVideocard_SV2000E()
|
||||
{
|
||||
}
|
||||
|
||||
void CVideocard_SV2000E::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CVideocard_SV2000E, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDC_RADIO_SV2000E_RGB, &CVideocard_SV2000E::OnBnClickedRadioSv2000eRgb)
|
||||
ON_BN_CLICKED(IDC_RADIO_SV2000E_GRAY, &CVideocard_SV2000E::OnBnClickedRadioSv2000eGray)
|
||||
ON_BN_CLICKED(IDC_CHECK_SV2000E_MIRROR_VERTICALLY, &CVideocard_SV2000E::OnBnClickedCheckSv2000eMirrorVertically)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SV2000E_SAVEFILE, &CVideocard_SV2000E::OnBnClickedButtonSv2000eSavefile)
|
||||
ON_BN_CLICKED(IDCANCEL, &CVideocard_SV2000E::OnBnClickedCancel)
|
||||
ON_BN_CLICKED(IDOK, &CVideocard_SV2000E::OnBnClickedOk)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CVideocard_SV2000E message handlers
|
||||
//====================================
|
||||
BOOL CVideocard_SV2000E::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SV2000E_RGB))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SV2000E_GRAY))->SetCheck(FALSE);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnBnClickedOk()
|
||||
{
|
||||
LoadVideocard();
|
||||
SetTimer(1,50,NULL);
|
||||
GetDlgItem(IDOK)->EnableWindow(false);
|
||||
}
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnBnClickedCancel()
|
||||
{
|
||||
UnloadVideocard();
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnBnClickedRadioSv2000eRgb()
|
||||
{
|
||||
m_ConvertColorType=YUY2TORGB;
|
||||
}
|
||||
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnBnClickedRadioSv2000eGray()
|
||||
{
|
||||
m_ConvertColorType=YUY2TOGRAY;
|
||||
}
|
||||
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnBnClickedCheckSv2000eMirrorVertically()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_CHECK_MIRROR_VERTICALLY))->GetCheck())
|
||||
{
|
||||
m_bMirror=TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bMirror=FALSE;
|
||||
}
|
||||
}
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnBnClickedButtonSv2000eSavefile()
|
||||
{
|
||||
CString CTmpString;
|
||||
CString PathName;
|
||||
CString path_and_fileName;
|
||||
|
||||
PathName=_T("SV2000E.bmp");
|
||||
CString szFilter=_T("BMP Files(*.bmp)|*.bmp|ALL Files(*.*)|*.*||");
|
||||
CFileDialog fdlg(FALSE,_T("BMP"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
|
||||
|
||||
if( fdlg.DoModal()==IDOK)
|
||||
{
|
||||
m_SaveFile=fdlg.GetPathName();
|
||||
}
|
||||
delete fdlg;
|
||||
m_bSaveFile=TRUE;
|
||||
}
|
||||
|
||||
//=======================================
|
||||
BOOL CVideocard_SV2000E::LoadVideocard()
|
||||
{
|
||||
unsigned int bInitSdk=DXInitialize();
|
||||
|
||||
DEVICE_TAG devTags[100];
|
||||
unsigned num = 100;
|
||||
DXEnumVideoCodecs(devTags, num);
|
||||
//DXEnumAudioCodecs(devTags, num);
|
||||
//DXEnumVideoDevices(devTags, num);
|
||||
//DXEnumAudioDevices(devTags, num);
|
||||
//DXEnumSoundDevices(devTags, num);
|
||||
|
||||
m_nDevNum = DXGetDeviceCount();
|
||||
m_device= DXOpenDevice(0, NULL);
|
||||
if((bInitSdk!=0)||(m_nDevNum<1)||(m_device==NULL))
|
||||
{
|
||||
::AfxMessageBox(_T("SV2000E卡初始化失败!"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
unsigned standard(VideoStandard_PAL_D);
|
||||
unsigned colorspace(cs_yuy2);//cs_rgb24
|
||||
unsigned width(640);//640
|
||||
unsigned height(480);//480
|
||||
float framerate(25);
|
||||
m_status=DXSetVideoPara(m_device,standard,colorspace,width,height,framerate);
|
||||
|
||||
DXDeviceRun(m_device);
|
||||
|
||||
m_dwCard=2;
|
||||
m_status=DXSetVideoSource(m_device, 1);
|
||||
|
||||
//==============================消除隔行=========================================
|
||||
m_status=DXSetVideoPara(m_device,standard,colorspace,width,height,framerate);
|
||||
//================================================================================
|
||||
m_status=DXSetDisplayPara( m_device, BRIGHTNESS, 5000,2);
|
||||
m_status=DXSetDisplayPara( m_device, SATURATION, 5000,2);
|
||||
m_status=DXSetDisplayPara( m_device, CONTRAST, 5000,2);
|
||||
m_status=DXSetDisplayPara( m_device, HUE, 5000,2);
|
||||
m_status=DXSetDisplayPara( m_device, SHARPNESS, 4,2);
|
||||
|
||||
m_status=DXSetRawVideoCallback(m_device, SVAPrcVidCapCallBack, this);
|
||||
m_status=DXStartRawVideoCallback(m_device,SVAPrcVidCapCallBack,this);
|
||||
return true;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//=======================================
|
||||
BOOL CVideocard_SV2000E::UnloadVideocard()
|
||||
{
|
||||
if (m_device)
|
||||
{
|
||||
m_status=DXStopRawVideoCallback(m_device);
|
||||
m_status=DXSetRawVideoCallback(m_device, NULL, NULL);
|
||||
m_status=DXDeviceStop(m_device);
|
||||
DXCloseDevice(m_device);
|
||||
DXUninitialize();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
//================================================================
|
||||
void CVideocard_SV2000E::ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *_pSrcData,ConvertColorType _type,BOOL _bMirror)
|
||||
{
|
||||
int x=0;
|
||||
int y=0;
|
||||
long lCnt1=0;
|
||||
long lCnt2=0;
|
||||
long lCnt3=0;
|
||||
int Color_R=0,Color_G=0,Color_B=0;
|
||||
BYTE *pDstData=NULL;
|
||||
for(y=0;y<480;y++)
|
||||
{
|
||||
lCnt1=0;
|
||||
if(_bMirror)
|
||||
pDstData=(BYTE*)_ImageBuffer.ScanLine[479-y];
|
||||
else
|
||||
pDstData=(BYTE*)_ImageBuffer.ScanLine[y];
|
||||
for(x=0;x<640*3;x+=3)
|
||||
{
|
||||
switch(_type)
|
||||
{
|
||||
case RGB24TORGB:
|
||||
{
|
||||
pDstData[x+2]=_pSrcData[y*640*3+x+2];
|
||||
pDstData[x+1]=_pSrcData[y*640*3+x+1];
|
||||
pDstData[x]=_pSrcData[y*640*3+x];
|
||||
break;
|
||||
}
|
||||
case YUY2TORGB:
|
||||
{
|
||||
Color_R=(1164*(_pSrcData[lCnt2*2]-16)+1596*(_pSrcData[lCnt3+3]-128))/1000;
|
||||
if(Color_R>255)Color_R=255;
|
||||
if(Color_R<0)Color_R=0;
|
||||
pDstData[x+2]=static_cast<BYTE>(Color_R);
|
||||
|
||||
|
||||
Color_G=(1164*(_pSrcData[lCnt2*2]-16)-813*(_pSrcData[lCnt3+1]-128)-392*(_pSrcData[lCnt3+3]-128))/1000;
|
||||
if(Color_G>255)Color_G=255;
|
||||
if(Color_G<0)Color_G=0;
|
||||
pDstData[x+1]=static_cast<BYTE>(Color_G);
|
||||
|
||||
|
||||
Color_B=(1164*(_pSrcData[lCnt2*2]-16)+2017*(_pSrcData[lCnt3+1]-128))/1000;
|
||||
if(Color_B>255)Color_B=255;
|
||||
if(Color_B<0)Color_B=0;
|
||||
pDstData[x]=static_cast<BYTE>(Color_B);
|
||||
|
||||
break;
|
||||
}
|
||||
case RGB24TOGRAY:
|
||||
{
|
||||
pDstData[x+2]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
pDstData[x+1]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
pDstData[x]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
break;
|
||||
}
|
||||
case YUY2TOGRAY:
|
||||
{
|
||||
pDstData[x+2]=_pSrcData[2*lCnt2];
|
||||
pDstData[x+1]=_pSrcData[2*lCnt2];
|
||||
pDstData[x]=_pSrcData[2*lCnt2];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if((lCnt1%2)==1)
|
||||
lCnt3=lCnt3+4;
|
||||
lCnt2++;
|
||||
lCnt1++;
|
||||
}
|
||||
}
|
||||
}
|
||||
//================================================================
|
||||
BOOL CVideocard_SV2000E::SaveBitmapToFile(const CBitmap& _bitmap, CString _lpFileName)
|
||||
{
|
||||
HBITMAP hBitmap; // 为刚才的屏幕位图句柄
|
||||
HDC hDC; //设备描述表
|
||||
int iBits; //当前显示分辨率下每个像素所占字节数
|
||||
WORD wBitCount(24); //位图中每个像素所占字节数
|
||||
DWORD dwPaletteSize = 0, //定义调色板大小
|
||||
dwBmBitsSize, //位图中像素字节大小
|
||||
dwDIBSize, //位图文件大小
|
||||
dwWritten; //写入文件字节数
|
||||
BITMAP Bitmap; //位图属性结构
|
||||
BITMAPFILEHEADER bmhFiledr; //位图文件头结构
|
||||
BITMAPINFOHEADER bi; //位图信息头结构
|
||||
LPBITMAPINFOHEADER lpbi; //指向位图信息头结构
|
||||
HANDLE hFile, //定义文件
|
||||
hDib, //分配内存句柄
|
||||
hPal, //调色板句柄
|
||||
hOldPal = NULL;
|
||||
|
||||
//计算位图文件每个像素所占字节数
|
||||
hBitmap = (HBITMAP)_bitmap;
|
||||
hDC = CreateDC(_T("DISPLAY"),NULL,NULL,NULL);
|
||||
iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);
|
||||
DeleteDC(hDC);
|
||||
|
||||
if (iBits <= 1)
|
||||
wBitCount = 1;
|
||||
else if (iBits <= 4)
|
||||
wBitCount = 4;
|
||||
else if (iBits <= 8)
|
||||
wBitCount = 8;
|
||||
else if (iBits <= 24)
|
||||
wBitCount = 24;
|
||||
else if (iBits <= 32)
|
||||
wBitCount = 32;
|
||||
|
||||
//计算调色板大小
|
||||
if (wBitCount <= 8)
|
||||
dwPaletteSize = (1 << wBitCount) * sizeof (RGBQUAD);
|
||||
|
||||
//设置位图信息头结构
|
||||
GetObject(hBitmap, sizeof (BITMAP), (LPSTR)&Bitmap);
|
||||
bi.biSize = sizeof (BITMAPINFOHEADER);
|
||||
bi.biWidth = Bitmap.bmWidth;
|
||||
bi.biHeight = Bitmap.bmHeight;
|
||||
bi.biPlanes = 1;
|
||||
bi.biBitCount = wBitCount;
|
||||
bi.biCompression = BI_RGB;
|
||||
bi.biSizeImage = 0;
|
||||
bi.biXPelsPerMeter = 0;
|
||||
bi.biYPelsPerMeter = 0;
|
||||
bi.biClrUsed = 0;
|
||||
bi.biClrImportant = 0;
|
||||
|
||||
dwBmBitsSize = ((Bitmap.bmWidth * wBitCount+31) / 32) * 4 * Bitmap.bmHeight;
|
||||
|
||||
//为位图内容分配内存
|
||||
hDib = GlobalAlloc(GHND, dwBmBitsSize + dwPaletteSize + sizeof (BITMAPINFOHEADER));
|
||||
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
|
||||
*lpbi = bi;
|
||||
|
||||
// 处理调色板
|
||||
hPal = GetStockObject(DEFAULT_PALETTE);
|
||||
if (hPal)
|
||||
{
|
||||
hDC = ::GetDC(NULL);
|
||||
hOldPal = ::SelectPalette(hDC, (HPALETTE)hPal, FALSE);
|
||||
RealizePalette(hDC);
|
||||
}
|
||||
|
||||
// 获取该调色板下新的像素值
|
||||
GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight, (LPSTR)lpbi + sizeof (BITMAPINFOHEADER) + dwPaletteSize, (LPBITMAPINFO)lpbi, DIB_RGB_COLORS);
|
||||
|
||||
//恢复调色板
|
||||
if (hOldPal)
|
||||
{
|
||||
SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
|
||||
RealizePalette(hDC);
|
||||
::ReleaseDC(NULL, hDC);
|
||||
}
|
||||
|
||||
//创建位图文件
|
||||
hFile = CreateFile(_lpFileName, GENERIC_WRITE,
|
||||
0, NULL, CREATE_ALWAYS,
|
||||
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
return FALSE;
|
||||
|
||||
// 设置位图文件头
|
||||
bmhFiledr.bfType = 0x4D42; // "BM"
|
||||
dwDIBSize = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + dwPaletteSize + dwBmBitsSize;
|
||||
bmhFiledr.bfSize = dwDIBSize;
|
||||
bmhFiledr.bfReserved1 = 0;
|
||||
bmhFiledr.bfReserved2 = 0;
|
||||
bmhFiledr.bfOffBits = (DWORD)sizeof (BITMAPFILEHEADER) + (DWORD)sizeof (BITMAPINFOHEADER) + dwPaletteSize;
|
||||
|
||||
// 写入位图文件头
|
||||
WriteFile(hFile, (LPSTR)&bmhFiledr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);
|
||||
|
||||
// 写入位图文件其余内容
|
||||
WriteFile(hFile, (LPSTR)lpbi, dwDIBSize,&dwWritten, NULL);
|
||||
|
||||
//清除
|
||||
GlobalUnlock(hDib);
|
||||
GlobalFree(hDib);
|
||||
CloseHandle(hFile);
|
||||
|
||||
return TRUE;
|
||||
};
|
||||
//================================================================
|
||||
void CVideocard_SV2000E::OnPaint()
|
||||
{
|
||||
CDC* dc= this->GetDC();
|
||||
int nMode;
|
||||
CDC* pMemDC = new CDC;
|
||||
CBitmap pBitBmp;
|
||||
ConvertVideoSubType(m_ImageBuffer,g_DataBuffer,m_ConvertColorType,m_bMirror);
|
||||
BYTE *pData = (BYTE *)m_ImageBuffer.ScanLine;
|
||||
BITMAPINFO bmpInfo;
|
||||
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmpInfo.bmiHeader.biWidth = 640;
|
||||
bmpInfo.bmiHeader.biHeight = 480;
|
||||
bmpInfo.bmiHeader.biPlanes = 1;
|
||||
bmpInfo.bmiHeader.biBitCount = 24;//X位色
|
||||
bmpInfo.bmiHeader.biCompression = BI_RGB;
|
||||
bmpInfo.bmiHeader.biSizeImage = 0;
|
||||
bmpInfo.bmiHeader.biXPelsPerMeter = 30000;
|
||||
bmpInfo.bmiHeader.biYPelsPerMeter = 30000;
|
||||
bmpInfo.bmiHeader.biClrUsed = 0;
|
||||
bmpInfo.bmiHeader.biClrImportant = 0;
|
||||
|
||||
pBitBmp.CreateCompatibleBitmap(dc,640,480);
|
||||
SetDIBits(dc->m_hDC,pBitBmp,0,480,pData,&bmpInfo,DIB_RGB_COLORS);
|
||||
if (m_bSaveFile)
|
||||
{
|
||||
SaveBitmapToFile(pBitBmp,m_SaveFile);
|
||||
//CImage imgTemp;
|
||||
//imgTemp.Attach(pBitBmp.operator HBITMAP());
|
||||
//imgTemp.Save(m_SaveFile);
|
||||
m_bSaveFile=FALSE;
|
||||
}
|
||||
|
||||
if (!pMemDC->m_hDC)
|
||||
{
|
||||
pMemDC->CreateCompatibleDC(dc);
|
||||
}
|
||||
CBitmap* pOldBitmap = pMemDC->SelectObject(&pBitBmp);
|
||||
nMode = pMemDC->SetBkMode(TRANSPARENT);
|
||||
|
||||
dc->BitBlt(0, 0, 640, 480, pMemDC,0,0, SRCCOPY);
|
||||
|
||||
pMemDC->SetBkMode(nMode);
|
||||
pMemDC->SelectObject(pOldBitmap);
|
||||
ReleaseDC(pMemDC);
|
||||
delete pMemDC;
|
||||
ReleaseDC(dc);
|
||||
}
|
||||
//================================================================================================
|
||||
void CVideocard_SV2000E::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
switch(nIDEvent)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
OnPaint();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
|
||||
//==================================SV2000E=====================================
|
||||
unsigned CALLBACK SVAPrcVidCapCallBack(unsigned char* buffer, unsigned colorSpace, unsigned width, unsigned height, unsigned bytesWidth, void* context)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(colorSpace);
|
||||
UNREFERENCED_PARAMETER(context);
|
||||
UNREFERENCED_PARAMETER(bytesWidth);
|
||||
memcpy(g_DataBuffer,(BYTE*)buffer,width*height*2);
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CVideocard_SV2000E dialog
|
||||
unsigned CALLBACK SVAPrcVidCapCallBack(unsigned char* buffer, unsigned colorSpace, unsigned width, unsigned height, unsigned bytesWidth, void* context);
|
||||
class CVideocard_SV2000E : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CVideocard_SV2000E)
|
||||
|
||||
public:
|
||||
CVideocard_SV2000E(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CVideocard_SV2000E();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_SO7_VIDEOCARD_SV2000E };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnPaint();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedRadioSv2000eRgb();
|
||||
afx_msg void OnBnClickedRadioSv2000eGray();
|
||||
afx_msg void OnBnClickedCheckSv2000eMirrorVertically();
|
||||
afx_msg void OnBnClickedButtonSv2000eSavefile();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedOk();
|
||||
protected:
|
||||
unsigned int m_status;
|
||||
device_handle m_device;
|
||||
int m_nDevNum;
|
||||
DWORD m_dwCard;
|
||||
Image_Buffer m_ImageBuffer;
|
||||
ConvertColorType m_ConvertColorType;
|
||||
BOOL m_bMirror;
|
||||
BOOL m_bSaveFile;
|
||||
CString m_SaveFile;
|
||||
public:
|
||||
BOOL LoadVideocard();
|
||||
BOOL UnloadVideocard();
|
||||
void ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *pSrcData,ConvertColorType _type,BOOL _bMirror);
|
||||
BOOL SaveBitmapToFile(const CBitmap& bitmap, CString lpFileName);
|
||||
|
||||
};
|
||||
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user