From a7ccbac4d6c66e94087cc3807d89fc0c058eca29 Mon Sep 17 00:00:00 2001 From: TAO Cheng Date: Thu, 8 Aug 2013 09:33:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0CNC=E7=9A=84=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BF=9D=E5=AD=98=E5=92=8C=E6=89=93=E5=BC=80=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Msi/Hsi/SevenOcean/Program/CMDDefines.H | 2 + .../Msi/Hsi/SevenOcean/Program/CSO7_CMD.H | 4 +- .../Hsi/SevenOcean/Program/So7_CNC_Point.cpp | 80 +++++++++++++++++- .../Hsi/SevenOcean/Program/So7_CNC_Point.h | 5 +- .../SevenOcean/Program/So7_CNC_Program.cpp | 79 ++++++++++++++++- .../Hsi/SevenOcean/Program/So7_CNC_Program.h | 4 +- .../Tools/UsbUtility/Debug/UtilityDebug.Log | 61 +++++++++++++ .../Tools/UsbUtility/Debug/Utility_Config.ini | 48 +++++------ .../Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc | 22 +++-- .../UsbUtility/UsbUtil/So7_Util_Program.cpp | 44 +++++++++- .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo | Bin 2355712 -> 2355712 bytes 11 files changed, 303 insertions(+), 46 deletions(-) diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/CMDDefines.H b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/CMDDefines.H index 9fe3d6d..84b2ed2 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/CMDDefines.H +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/CMDDefines.H @@ -1,4 +1,6 @@ #pragma once +#define MAX_BUFF_SIZE 0x200 + enum EEntityType { etUnknow = 0, diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/CSO7_CMD.H b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/CSO7_CMD.H index 4880f92..b4cf711 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/CSO7_CMD.H +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/CSO7_CMD.H @@ -19,9 +19,9 @@ public: virtual int get_type() = 0; - virtual void SaveCmd(CString _filename,int _savetype=0) = 0; + virtual void SaveCmd(FILE* _filestream,int _savetype=0) = 0; - virtual void ReadCmd(CString _filename,int _savetype=0) = 0; + virtual void ReadCmd(FILE* _filestream,int _savetype=0) = 0; virtual void GetPoint(int type_of_point, int theo_or_meas, diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Point.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Point.cpp index 971222d..78d8282 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Point.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Point.cpp @@ -89,14 +89,86 @@ void CSo7_CNC_Point::PutPoint(int type_of_point,int theo_or_meas,int coord_sys,C } //=================================================== -void CSo7_CNC_Point::SaveCmd(CString _filename,int _savetype) +void CSo7_CNC_Point::SaveCmd(FILE* _filestream,int _savetype) { - UNREFERENCED_PARAMETER(_filename); + m_TotalLines=8; UNREFERENCED_PARAMETER(_savetype); + fprintf(_filestream,"[etPoint]\n"); + fprintf(_filestream,"ENTITYTYPE=%d\n", etPoint); + fprintf(_filestream,"TOTALLINES=%d\n", m_TotalLines); + fprintf(_filestream,"ID=%d\n", m_ID); + fprintf(_filestream,"POSX=%9.6f\n",m_Pos.x); + fprintf(_filestream,"POSY=%9.6f\n",m_Pos.y); + fprintf(_filestream,"POSZ=%9.6f\n",m_Pos.z); + fprintf(_filestream,";\n"); } //=================================================== -void CSo7_CNC_Point::ReadCmd(CString _filename,int _savetype) +void CSo7_CNC_Point::ReadCmd(FILE* _filestream,int _savetype) { - UNREFERENCED_PARAMETER(_filename); UNREFERENCED_PARAMETER(_savetype); + + char szLine[MAX_BUFF_SIZE]; + char *token = NULL; + char seps[] = " =,\t\n"; + char cTemp[20]={0}; + m_TotalLines=0; + fgets(szLine,MAX_BUFF_SIZE,_filestream);//read a line + if((szLine[0]!=';')&&(strlen(szLine)>2)) + { + token = strtok(szLine,seps); + if(!_stricmp(token,"TOTALLINES")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + m_TotalLines=atoi(cTemp); + } + } + } + for (int i=0;i<(m_TotalLines-2);i++) + { + fgets(szLine,MAX_BUFF_SIZE,_filestream);//read a line + if((szLine[0]!=';')&&(strlen(szLine)>2)) + { + token = strtok(szLine,seps); + if(!_stricmp(token, "ID")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + m_ID=atoi(cTemp); + } + } + else if(!_stricmp(token, "POSX")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + m_Pos.x=atof(cTemp); + } + } + else if(!_stricmp(token, "POSY")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + m_Pos.y=atof(cTemp); + } + } + else if(!_stricmp(token, "POSZ")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + m_Pos.z=atof(cTemp); + } + } + } + + } } \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Point.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Point.h index b9662c3..620653c 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Point.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Point.h @@ -9,14 +9,15 @@ public: CSo7_CNC_Point& operator=(const CSo7_CNC_Point& _CNC_Point); protected: + int m_TotalLines; void Init(); public: CPoint3 m_Pos; CSO7_CMD* Copy(); int get_id(); int get_type(); - void SaveCmd(CString _filename,int _savetype=0); - void ReadCmd(CString _filename,int _savetype=0); + void SaveCmd(FILE* _filestream,int _savetype=0); + void ReadCmd(FILE* _filestream,int _savetype=0); void GetPoint(int type_of_point, int theo_or_meas, diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Program.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Program.cpp index bcb80a8..def04fc 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Program.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Program.cpp @@ -1,6 +1,7 @@ #include "StdAfx.h" #include "CSO7_CMD.h" +#include "So7_CNC_Point.h" #include "So7_CNC_Program.h" //===================================== @@ -73,14 +74,71 @@ BOOL CSo7_CNC_Program::IsEmpty() }; //================================================================================================ -void CSo7_CNC_Program::Load(CString _csProgFile) +void CSo7_CNC_Program::open() { - UNREFERENCED_PARAMETER(_csProgFile); + FILE* m_pLoadFile=NULL; + char szLine[MAX_BUFF_SIZE]; + char *token = NULL; + char seps[] = " =,\t\n"; + char cTemp[20]={0}; + int EntityType=0; + _wfopen_s(&m_pLoadFile,m_CncProgFileName,_T("rt")); + + if(m_pLoadFile) + { + while (!feof(m_pLoadFile)) + { + fgets(szLine,MAX_BUFF_SIZE,m_pLoadFile);//read a line + if((szLine[0]!=';')&&(strlen(szLine)>2)) + { + token = strtok(szLine,seps); + if(!_stricmp(token,"ENTITYTYPE")) + { + token = strtok( NULL, seps); + if (token) + { + strcpy(cTemp,token); + EntityType=atoi(cTemp); + Load(m_pLoadFile,EntityType); + } + } + } + } + } +}; +//================================================================================================ +void CSo7_CNC_Program::Load(FILE* _pLoadFile,int _EntityType) +{ + switch(_EntityType) + { + case etPoint: + { + CPoint3 Pos; + CSO7_CMD* pEntity=new CSo7_CNC_Point(Pos); + pEntity->ReadCmd(_pLoadFile); + m_CNC_element.push_back(pEntity); + m_Program_Number++; + } + break; + default: + break; + } }; //================================================================================================ void CSo7_CNC_Program::Save() { + FILE* m_pOutFile=NULL; + + _wfopen_s(&m_pOutFile, m_CncProgFileName, _T("wt")); + if (m_pOutFile) + { + for(int i=0;iSaveCmd(m_pOutFile); + + fclose(m_pOutFile); + } + }; @@ -98,3 +156,20 @@ void CSo7_CNC_Program::Initialize(void) { InitNew(); }; +//================================================================================================ + +CString CSo7_CNC_Program::GetEntityName(int _EntityType) +{ + CString rCStr(""); + switch(_EntityType) + { + case etPoint: + { + rCStr=_T("CNC Point"); + } + break; + default: + break; + } + return rCStr; +} diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Program.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Program.h index 48357a2..b8c409e 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Program.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/Program/So7_CNC_Program.h @@ -5,7 +5,8 @@ public: CSo7_CNC_Program(void); ~CSo7_CNC_Program(void); void Initialize(); - void Load(CString _csProgName); + void Load(FILE* _pLoadFile,int _EntityType); + void open(); void Save(); void Close(); void AddCncStep(CSO7_CMD* pProgStep); @@ -13,6 +14,7 @@ public: int InitNew(); void RemoveAll(); BOOL IsEmpty(); + CString GetEntityName(int _EntityType); std::vector m_CNC_element; CSO7_CMD* _pCurrCncStep; int m_Program_Number; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log index fb76f67..9d2a80e 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -2037,3 +2037,64 @@ 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. +Destruct Cso7_Proto. +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. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini index 2cc1880..93bc1db 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini @@ -3,31 +3,31 @@ SPEED_BASE_X1=5 SPEED_MAX_X1=168 SPEED_START_X1=28 SPEED_FRESH_X1=10 -SPEED_SLOW_X1=0.510 +SPEED_SLOW_X1=0.509 ; SPEED_BASE_X2=3 SPEED_MAX_X2=50 SPEED_START_X2=10 SPEED_FRESH_X2=10 -SPEED_SLOW_X2=0.110 +SPEED_SLOW_X2=0.109 ; SPEED_BASE_X3=2 SPEED_MAX_X3=5 SPEED_START_X3=5 -SPEED_FRESH_X3=10 +SPEED_FRESH_X3=100 SPEED_SLOW_X3=0.001 ; SPEED_BASE_X4=2 SPEED_MAX_X4=0 SPEED_START_X4=50 -SPEED_FRESH_X4=10 +SPEED_FRESH_X4=100 SPEED_SLOW_X4=0.001 ; -SPEED_BASE_X5=5 +SPEED_BASE_X5=2 SPEED_MAX_X5=0 SPEED_START_X5=80 -SPEED_FRESH_X5=10 -SPEED_SLOW_X5=0.001 +SPEED_FRESH_X5=100 +SPEED_SLOW_X5=0.000 ; SPEED_BASE_Y1=5 SPEED_MAX_Y1=168 @@ -43,59 +43,59 @@ SPEED_SLOW_Y2=0.200 ; SPEED_BASE_Y3=2 SPEED_MAX_Y3=5 -SPEED_START_Y3=3 -SPEED_FRESH_Y3=10 +SPEED_START_Y3=5 +SPEED_FRESH_Y3=100 SPEED_SLOW_Y3=0.001 ; SPEED_BASE_Y4=2 SPEED_MAX_Y4=0 SPEED_START_Y4=50 -SPEED_FRESH_Y4=10 +SPEED_FRESH_Y4=100 SPEED_SLOW_Y4=0.001 ; -SPEED_BASE_Y5=5 +SPEED_BASE_Y5=2 SPEED_MAX_Y5=0 SPEED_START_Y5=80 -SPEED_FRESH_Y5=10 -SPEED_SLOW_Y5=0.001 +SPEED_FRESH_Y5=100 +SPEED_SLOW_Y5=0.000 ; SPEED_BASE_Z1=5 SPEED_MAX_Z1=130 SPEED_START_Z1=28 SPEED_FRESH_Z1=10 -SPEED_SLOW_Z1=0.510 +SPEED_SLOW_Z1=0.509 ; SPEED_BASE_Z2=3 SPEED_MAX_Z2=60 SPEED_START_Z2=10 SPEED_FRESH_Z2=10 -SPEED_SLOW_Z2=0.110 +SPEED_SLOW_Z2=0.109 ; SPEED_BASE_Z3=2 SPEED_MAX_Z3=5 SPEED_START_Z3=5 -SPEED_FRESH_Z3=10 +SPEED_FRESH_Z3=100 SPEED_SLOW_Z3=0.001 ; SPEED_BASE_Z4=2 SPEED_MAX_Z4=0 SPEED_START_Z4=50 -SPEED_FRESH_Z4=10 +SPEED_FRESH_Z4=100 SPEED_SLOW_Z4=0.001 ; -SPEED_BASE_Z5=5 +SPEED_BASE_Z5=2 SPEED_MAX_Z5=0 SPEED_START_Z5=80 -SPEED_FRESH_Z5=10 -SPEED_SLOW_Z5=0.001 +SPEED_FRESH_Z5=100 +SPEED_SLOW_Z5=0.000 ; -X_MOTOR_PRECISION=0.010 -Y_MOTOR_PRECISION=0.010 +X_MOTOR_PRECISION=0.009 +Y_MOTOR_PRECISION=0.009 Z_MOTOR_PRECISION=0.100 ; X_MOTOR_WHEELBASE=19.990 -Y_MOTOR_WHEELBASE=20.000 -Z_MOTOR_WHEELBASE=3.000 +Y_MOTOR_WHEELBASE=31.556 +Z_MOTOR_WHEELBASE=2.999 ; MOTOR_PULSE_NUM=10000 ; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc index e7201e9..609ecde 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc @@ -746,7 +746,7 @@ END IDD_SO7_UTIL_PROGRAM DIALOGEX 0, 0, 590, 386 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Dialog" +CAPTION "CNC Program" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN PUSHBUTTON "Exit",IDCANCEL,533,365,50,14 @@ -1091,7 +1091,7 @@ BEGIN 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x3031, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x4d3c, 0x4346, -0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3438, +0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3434, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4965, 0x3e44, 0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x493e, 0x4244, 0x425f, 0x5449, 0x414d, 0x5f50, 0x5f58, 0x454c, 0x5446, @@ -1118,7 +1118,7 @@ BEGIN 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x3031, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x4d3c, 0x4346, -0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3738, +0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3534, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4965, 0x3e44, 0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x493e, 0x4244, 0x425f, 0x5449, 0x414d, 0x5f50, 0x5f58, 0x4952, 0x4847, @@ -1145,7 +1145,7 @@ BEGIN 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x3031, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x4d3c, 0x4346, -0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3138, +0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3134, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4965, 0x3e44, 0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x493e, 0x4244, 0x425f, 0x5449, 0x414d, 0x5f50, 0x5f59, 0x5246, 0x4e4f, @@ -1173,7 +1173,7 @@ BEGIN 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x3031, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x4d3c, 0x4346, -0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3038, +0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3034, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4965, 0x3e44, 0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x493e, 0x4244, 0x425f, 0x5449, 0x414d, 0x5f50, 0x5f59, 0x4142, 0x4b43, @@ -1201,7 +1201,7 @@ BEGIN 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x3031, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x4d3c, 0x4346, -0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3338, +0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3334, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4965, 0x3e44, 0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x493e, 0x4244, 0x425f, 0x5449, 0x414d, 0x5f50, 0x5f5a, 0x5055, 0x2f3c, @@ -1228,7 +1228,7 @@ BEGIN 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x3031, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x4d3c, 0x4346, -0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3238, +0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3234, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4965, 0x3e44, 0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x493e, 0x4244, 0x425f, 0x5449, 0x414d, 0x5f50, 0x5f5a, 0x4f44, 0x4e57, @@ -1277,7 +1277,7 @@ BEGIN 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x3031, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x4d3c, 0x4346, -0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3737, +0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3933, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4965, 0x3e44, 0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x493e, 0x4244, 0x425f, 0x5449, 0x414d, 0x5f50, 0x4c50, 0x5355, 0x535f, @@ -1305,7 +1305,7 @@ BEGIN 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x3031, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x5465, 0x7079, 0x3e65, 0x4d3c, 0x4346, -0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3637, +0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x4449, 0x313e, 0x3833, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4965, 0x3e44, 0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x495f, 0x616d, 0x6567, 0x493e, 0x4244, 0x425f, 0x5449, 0x414d, 0x5f50, 0x494d, 0x554e, 0x5f53, @@ -2314,6 +2314,10 @@ END STRINGTABLE BEGIN IDS_ABOUTBOX "&About Mv_Util..." +END + +STRINGTABLE +BEGIN IDS_SO7_ABOUTBOX "&About Utility for SO7..." END diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_Program.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_Program.cpp index 4b33c00..cffe198 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_Program.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_Program.cpp @@ -366,16 +366,56 @@ void CSo7_Util_Program::OnBnClickedButtonSo7ProgramAddCncProgram() void CSo7_Util_Program::OnBnClickedButtonSo7ProgramNewCnc() { m_pSo7_CNC_Program->RemoveAll(); + OutputWithScroll(_T("Remove all cnc program."),m_edMSG); } //=================================================== void CSo7_Util_Program::OnBnClickedButtonSo7ProgramOpenCnc() { - AfxMessageBox(_T("Not supported!")); + CString m_csFile = _T("CNCFILE"); + CString szFilter=_T("Utility CNC Files(*.Prog)|*.Prog|ALL Files(*.*)|*.*||"); + + CFileDialog fileDialog(TRUE, _T("*.Prog"),(LPCTSTR) m_csFile, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this); + + if ( fileDialog.DoModal ()==IDOK ) + { + m_pSo7_CNC_Program->RemoveAll(); + OutputWithScroll(_T("Remove all cnc program."),m_edMSG); + m_pSo7_CNC_Program->m_CncProgFileName = fileDialog.GetPathName(); + m_pSo7_CNC_Program->open(); + for (int i=0;im_Program_Number;i++) + { + int iType=m_pSo7_CNC_Program->m_CNC_element[i]->get_type(); + CPoint3 m_pnt; + m_pSo7_CNC_Program->m_CNC_element[i]->GetPoint(0,0,0,NULL,m_pnt); + CString csType=m_pSo7_CNC_Program->GetEntityName(iType); + m_OutMessage.Format(_T("[No.%d] X:%3.4f,Y:%3.4f,Z:%3.4f"), + m_pSo7_CNC_Program->m_CNC_element[i]->m_ID, + m_pnt.x, m_pnt.y, m_pnt.z + ); + m_OutMessage=_T("Add ")+csType+m_OutMessage; + OutputWithScroll(m_OutMessage,m_edMSG); + } + } + delete fileDialog; } //=================================================== void CSo7_Util_Program::OnBnClickedButtonSo7ProgramSaveCncFile() { - AfxMessageBox(_T("Not supported!")); + CString PathName; + + PathName=_T("CNCFILE"); + CString szFilter=_T("Utility CNC Files(*.Prog)|*.Prog|ALL Files(*.*)|*.*||"); + + CFileDialog fdlg(FALSE,_T("Prog"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter); + + if( fdlg.DoModal()==IDOK) + { + m_pSo7_CNC_Program->m_CncProgFileName=fdlg.GetPathName(); + m_pSo7_CNC_Program->Save(); + m_OutMessage=_T("CNC Program has been saved to[")+m_pSo7_CNC_Program->m_CncProgFileName+_T("]."); + OutputWithScroll(m_OutMessage,m_edMSG); + } + delete fdlg; } //=================================================== void CSo7_Util_Program::OnEnKillfocusEditSo7ProgeamCncRuingTimes() diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo index 16c02373d991db98f9aa82610a7e316233765ded..ca32d3bffa4be24b9a6f8aed600bfa310a1fe08f 100644 GIT binary patch delta 6867 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 A?EnA( delta 6438 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%0D_UUtW5u;>j&Oe%kRoYMGQF z%_A(6a;dIcNmX5SP1UM;G#{4d;^musIR5f)JbtnwStmZ8pJJx_*=b4BlcpvoPMbJ+ zTCsUzLPBZc#NxzhlP8+ZCFZ2^MV)eTE5*Utc*6Lj ztGzyo#`jsU|8w6~&N-u;erexhrELF6eMUcD2Uf{s+%V<3dc7xHsiKeB75I6$GE!|w z7!U7gHI!XmyJq=re>$Gm%St2C-)L{)tyBIA_~ry91LuxYd_<0~a*y|`?ob3X>RuwB zIxy&0Fay_)SLWf{Rgj2ZjaTOLHqVgfbNC@;2hR0ZUhgz1b7hQ(lVkCnH+c%SJTlV8uX5V;hl>o8Nku$KqbIazoqqbvzfNOcIk~l=&bgo0S~a=u{e=UX4!gMyIaP zsc&@pG&+YhI(-|R!yBD`jm{B`PJ`3wf1=Z=*w=Ix1Z0Be=j_5kR?)U7AfFcucDME| z3Lpd$f(RoC!GuwS5Ye|Nv|}QeG-cC2Yp<>DEun-k!e~M`VGJRH5J@l+q6jA8-ZIwm XG$#I;Re0){;rHwGeCd#;@aO&x6I72P