Machine Interface Utility:VER1.0

This commit is contained in:
TAO Cheng
2013-05-09 20:29:54 +08:00
commit 036cdcb228
743 changed files with 104786 additions and 0 deletions
@@ -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_)
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
@@ -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();
};
@@ -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);
};

Some files were not shown because too many files have changed in this diff Show More