From e842462af2680c9440fbef5df0d2217f0f2f6704 Mon Sep 17 00:00:00 2001 From: TAO Cheng Date: Thu, 20 Jun 2013 11:18:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EIO=E5=8F=A3=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=9A=84=E8=AF=BB=E5=8F=96=E5=92=8C=E9=80=9F=E5=BA=A6=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=BF=9D=E5=AD=98=E4=B8=BAEF8000=20DAT=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=A0=BC=E5=BC=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Msi/Hsi/SevenOcean/EF8000_Interface.cpp | 115 ++++ .../Msi/Hsi/SevenOcean/EF8000_Interface.h | 602 ++++++++++++++++++ .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp | 31 + .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h | 4 +- .../Tools/UsbUtility/Debug/UtilityDebug.Log | 146 +++++ .../Tools/UsbUtility/Debug/Utility_Config.ini | 22 +- .../Tools/UsbUtility/Release/UtilityDebug.Log | 50 ++ .../Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc | 192 +++++- .../UsbUtility/UsbUtil/SO7_Send_Parameter.cpp | 125 +++- .../UsbUtility/UsbUtil/SO7_Send_Parameter.h | 4 + .../Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp | 187 +++++- .../Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h | 8 +- .../Tools/UsbUtility/UsbUtil/So7_Option.cpp | 23 +- .../Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj | 2 + .../UsbUtil/Usb_Util.vcxproj.filters | 6 + .../Hsi/Tools/UsbUtility/UsbUtil/resource.h | 15 +- .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo | Bin 1672704 -> 2355712 bytes 17 files changed, 1459 insertions(+), 73 deletions(-) create mode 100644 PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/EF8000_Interface.cpp create mode 100644 PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/EF8000_Interface.h diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/EF8000_Interface.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/EF8000_Interface.cpp new file mode 100644 index 0000000..94f8f44 --- /dev/null +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/EF8000_Interface.cpp @@ -0,0 +1,115 @@ +#include "StdAfx.h" +#include +#include +#include +#include "EF8000_Interface.h " + + +CEF8000_Interface::CEF8000_Interface() +{ + for (int j=0;j<15;j++) + { + for (int i=0;i<4;i++) + { + Set_Speed[j][i]=0; + } + } + for (int i=0;i<15;i++) + { + slow_dis[i]=0.0; + } + for (int i=0;i<3;i++) + { + g_precision[i]=0.0; + } +} + +CEF8000_Interface::~CEF8000_Interface() +{ + +} + +BOOL CEF8000_Interface::SaveSpeedParameter(CString _FileName) +{ + FILE* iFileHandle=NULL; + iFileHandle=FileOpen(_FileName,fmOpenWrite); + if (iFileHandle) + { + FileSeek(iFileHandle,0,0); + FileWrite(iFileHandle,&Set_Speed,sizeof(Set_Speed)); + FileWrite(iFileHandle,&slow_dis,sizeof(slow_dis)); + FileWrite(iFileHandle,&g_precision,sizeof(g_precision)); + FileWrite(iFileHandle,&Image_Info.m_Motor_Dx,sizeof(Image_Info.m_Motor_Dx)); + FileWrite(iFileHandle,&Image_Info.m_Motor_Dy,sizeof(Image_Info.m_Motor_Dy)); + FileWrite(iFileHandle,&Image_Info.m_Motor_Dz,sizeof(Image_Info.m_Motor_Dz)); + FileWrite(iFileHandle,&Image_Info.m_Motor_Plus_Num,sizeof(Image_Info.m_Motor_Plus_Num)); + FileClose(iFileHandle); + return TRUE; + } + else + { + return FALSE; + } +} +BOOL CEF8000_Interface::OpenSpeedParameter(CString _FileName) +{ + FILE* iFileHandle=NULL; + iFileHandle=FileOpen(_FileName,fmOpenRead); + if (iFileHandle) + { + FileSeek(iFileHandle,0,0); + FileRead(iFileHandle,&Set_Speed,sizeof(Set_Speed)); + FileRead(iFileHandle,&slow_dis,sizeof(slow_dis)); + FileRead(iFileHandle,&g_precision,sizeof(g_precision)); + FileRead(iFileHandle,&Image_Info.m_Motor_Dx,sizeof(Image_Info.m_Motor_Dx)); + FileRead(iFileHandle,&Image_Info.m_Motor_Dy,sizeof(Image_Info.m_Motor_Dy)); + FileRead(iFileHandle,&Image_Info.m_Motor_Dz,sizeof(Image_Info.m_Motor_Dz)); + FileRead(iFileHandle,&Image_Info.m_Motor_Plus_Num,sizeof(Image_Info.m_Motor_Plus_Num)); + FileClose(iFileHandle); + return TRUE; + } + else + { + return FALSE; + } +} + +//============================================================= +FILE* CEF8000_Interface::FileOpen(const CString filename,const int Mode) +{ + CString fileMode(_T("rb")); + switch (Mode) + { + case fmOpenRead: fileMode =_T("rb"); break; + case fmOpenWrite: fileMode =_T("wb"); break; + case fmOpenReadWrite:fileMode =_T("wb+"); break; + } + FILE *FileStream = _tfopen(filename, fileMode); + return FileStream; + +}; +//=========================================================== +int CEF8000_Interface::FileSeek(FILE * _Handle, long _Offset, int _Origin) +{ + return fseek(_Handle,_Offset,_Origin); +}; + +//=========================================================== +int CEF8000_Interface::FileRead(FILE * _Handle, void *_Buffer, int _Count) +{ + size_t t(0); + t= fread(_Buffer,_Count,1,_Handle); + return _Count; +}; + +//=========================================================== +int CEF8000_Interface::FileWrite(FILE * _Handle, const void *_Buffer, int _Count) +{ + fwrite(_Buffer,_Count,1,_Handle); + return _Count; +}; +//=========================================================== +int CEF8000_Interface::FileClose(FILE * _Handle) +{ + return fclose(_Handle); +}; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/EF8000_Interface.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/EF8000_Interface.h new file mode 100644 index 0000000..c9b0892 --- /dev/null +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/EF8000_Interface.h @@ -0,0 +1,602 @@ +// protocol for control SevenOcean's Machine +// +////////////////////////////////////////////////////////////////////// +#ifndef EF8000_INTERFACE_H_INCLUDED_ +#define EF8000_INTERFACE_H_INCLUDED_ + + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "DLL.h" + + +#pragma pack(push) +#pragma pack(16) +/* +struct PointDB +{ + double _x; + double _y; + PointDB() + { + _x=0.0; + _y=0.0; + } + + PointDB(double x,double y) + { + _x=x; + _y=y; + } + + PointDB operator-(PointDB& pot) + { + PointDB temp; + temp._x=_x-pot._x; + temp._y=_y-pot._y; + return temp; + } + + PointDB operator+(PointDB& pot) + { + PointDB temp; + temp._x=_x+pot._x; + temp._y=_y+pot._y; + return temp; + } + + PointDB operator/(double div) + { + PointDB temp; + temp._x=_x/div; + temp._y=_y/div; + return temp; + } + + PointDB operator*(double mul) + { + PointDB temp; + temp._x=_x*mul; + temp._y=_y*mul; + return temp; + } + bool operator==(PointDB& pot) { return _x==pot._x&&_y==pot._y; } + PointDB operator=(PointDB pot) { _x=pot._x; _y=pot._y; return (*this); } + double length() + { + return sqrt(_x*_x+_y*_y); + } +}; + +typedef struct light_value +{ + char top_value; + char bom_value; + char fan_value; + char bom1_value; + char bom2_value; + char fan1_switch; + char fan2_switch; +}g_light2; + +typedef struct Dev_Info +{ + //CWnd * m_cWnd; + HWND g_USB_hWnd; + HWND g_hWnd_Display;//显示主窗口 + HWND g_hWnd_Msg;//消息主窗口 + int g_Card_Num; + int g_Card_No; + int g_Switch_No;//显示通道 + int g_Width; + int g_Height; + // BYTE pBuf[640*480*2]; + int g_Sharpness; //锐度 + int g_Saturation;//饱和度 + int g_Hue;//色度 + int g_Contrast;//对比度 + int g_Brightness;//亮度 + char g_Picture_Type;//0-bmp,1-jpg + char StrFileName[50]; + int cap_xa; + int cap_ya; + int cap_xb; + int cap_yb; + int disp_xa; + int disp_ya; + int disp_xb; + int disp_yb; + char IOin; + char IOout; + + BYTE RD_Usb_Dat[64]; + BYTE WR_Usb_Dat[64]; + BYTE User_Dat[250]; + unsigned long RD_Usb_Dat_Length; + unsigned long WR_Usb_Dat_Length; + char MoveX_Value; + char MoveY_Value; + char MoveZ_Value; + char MoveV_Value; + double MoveToX_Value; + double MoveToY_Value; + double MoveToZ_Value; + char MoveToV_Value; + double MaxisX; + double MaxisY; + double MaxisZ; + int Fan_Light_Size; + int Top_Light_Size; + int Bottom_Light_Size; + char Light_Value[14]; + char Light_Switch; + int light_size_value; + + BYTE *pBit; + int startX; + int startY; + int nWidth; + int nHeight; + double coorX; + double coorY; + int coorX_Off; + int coorY_Off; + double ValueZ; + char rect_flag; + int bar_type; + int bar_num; + + char g_type; + char g_mode; + char g_base; + char g_fresh; + char g_start; + char g_hold; + float g_slow; + float g_precision; + char get_xy_flag_num; + char draw_num; + int bar_dir; + int Dog_Cmd; + int User_Dat_Len; + int MaxisX_Dir; + int MaxisY_Dir; + int MaxisZ_Dir; + char Face_Flag; + //double Get_Axis_Z[SET_FACE_NUM]; + //double Get_Image_Value[SET_FACE_NUM]; + int g_Face_Index; + double Org_AbsX; + double Org_AbsY; + double Org_AbsZ; + + + + double g_Bar_Scalex; + double g_Bar_Scaley; + + double g_Bar_Orgx; + double g_Bar_Orgy; + + double g_Bar_curx; + double g_Bar_cury; + + double MaxisX1; + double MaxisY1; + double MaxisZ1; + double MaxisX_Scale; + double MaxisY_Scale; + double MaxisZ_Scale; + + double g_Bar_dirx; + double g_Bar_diry; + + int Bar_fresh_flag; + + char Usb_Cmd; + char m_Usb_Cmd; + char m_Usb_type; + double m_Usb_dat; + + double g_Bar_LineScaleX; + double g_Bar_LineScaleY; + double ResultVZ; + + char Diy_Face_Flag; + double Diy_x; + double Diy_y; + + double Face_Long_Dis; + double Face_Short_Dis; + double Face_Long_Step; + double Face_Short_Step; + + int Mdat1; + int Mdat2; + int Mdat3; + int Mdat4; + int Mdat5; + int Mdat6; + + int Mdat; + char value; + + long Max_ToV; + int Min_ToV; + int g_Rule_Type;//1,旧板,2-新板 + unsigned long g_Axis_V; + long Org_AbsV; + int BarCode_Width; + int BarCode_Height; + + double XT_scale; + double XM_scale; + double XB_scale; + + double YL_scale; + double YM_scale; + double YR_scale; + + char Enable_Face_flag; + char g_Check_BarCode_Flag ; + //FP g_BarCode_List[BAR_CODE_WIDTH*BAR_CODE_HEIGHT]; + // vector g_BarCode_List; + + g_light2 g_light1; + char g_sys_reset_flag; + char Adc_Num; + int Adc_Value[10]; + char Adc_No; + int g_Adc_Value; + + int motor_type; + + double motor_ScaleX; + double motor_ScaleY; + double motor_ScaleZ; + + char motor_check_flag; + char g_video_type; + + char bar_XY_type;//barcode XY 读数坐标对换 + + char Set_Current_Flag; + //video_80M g_video_80M; + + + char m_Aeen; + BYTE m_AeTarget; + int m_BGain; + char m_bColorCorrect; + BYTE m_Contrast; + int m_ExpTime; + int m_AnalogGain; + BYTE m_Gamma; + int m_GGain; + int m_RGain; + BYTE m_Saturation; + BYTE m_FrameSpeed; + UINT m_StrobleDelay; + UINT m_StrobleDuration; + UINT m_TriggerDelay; + char m_Mode; + char m_Save_Mode; + UINT m_RawTime; + + double m_Motor_Dx; + double m_Motor_Dy; + double m_Motor_Dz; + int m_Motor_Plus_Num; + char m_face_mode; + char g_M_Count_Flag; + char Get_Plc_Dat; + char Set_Plc_Dat; + + double g_ProbeX; + double g_ProbeY; + double g_ProbeZ; + char g_video_type1; + int g_Cap_Image; + double g_Angle; + char g_Debug_Video; + int bar_Len_Type; + int g_BarY_dir; + float g_Lase1; + float g_Lase2; + char g_BarCode_Dir_Flag; + + int g_HOff1;// = 1192; + int g_VOff1; + int g_HOff2;// = 1192; + int g_VOff2; + int g_Add_Pic_Flag; + int Lase_USB_Type; + int g_OScreen_Flag; + + bool g_Mon; + bool g_MirrorV; + bool g_MirrorH; + char g_M1k_Mode; + int BarCodeX; + int BarCodeY; + int RunBar_Mode; + + float Axis_X; + float Axis_Y; + + float Bar_Ofx; + float Bar_Ofy; + float Bar_X; + float Bar_Y; + + int Bar_Filter_Mode; + int g_Set_Area_Flag; + PointDB g_Set_Areas[5]; + int gFrameKey; + + float Bar_Scale_Unit; + int g_ITO_Flag; + int g_face_flag; + + int g_Nav_Flag; + int g_Video_Input_Mode; + int gAutoZoomFlag; + + Dev_Info() + { + g_hWnd_Display = NULL; + g_hWnd_Msg = NULL; + g_Card_Num = 0; + g_Card_No = 0; + g_Switch_No = 0; + g_Width = 640; + g_Height = 480; + g_Sharpness = 0; + g_Saturation = 0; + g_Hue = 0; + g_Contrast = 0; + g_Picture_Type = 0; + + cap_xa = 0; + cap_ya = 0; + cap_xb = 640; + cap_yb = 480; + + disp_xa = 0; + disp_ya = 0; + disp_xb = 640; + disp_yb = 480; + + IOin = 0; + IOout = 0; + RD_Usb_Dat_Length=0; + WR_Usb_Dat_Length=0; + MoveX_Value=0; + MoveY_Value=0; + MoveZ_Value=0; + MoveV_Value=0; + MoveToX_Value=0; + MoveToY_Value=0; + MoveToZ_Value=0; + MoveToV_Value=0; + MaxisX=0; + MaxisY=0; + MaxisZ=0; + Fan_Light_Size=0; + Top_Light_Size=0; + Bottom_Light_Size=0; + Light_Switch=0; + light_size_value=0; + + pBit=NULL; + startX=0; + startY=0; + nWidth=0; + nHeight=0; + coorX=0; + coorY=0; + coorX_Off=0; + coorY_Off=0; + ValueZ=0; + rect_flag=0; + bar_type=2; + bar_num=10; + + g_mode=1; + g_base=10; + g_fresh=10; + g_start=100; + g_hold=10; + g_slow=1; + g_precision=(float)0.005; + get_xy_flag_num=3; + draw_num=0; + bar_dir=0; + Dog_Cmd=0; + User_Dat_Len=0; + MaxisX_Dir=1; + MaxisY_Dir=1; + MaxisZ_Dir=1; + Face_Flag=0; + g_Face_Index=150; + Org_AbsX=0; + Org_AbsY=0; + Org_AbsZ=0; + + g_Bar_Scalex=0.00242209; + g_Bar_Scaley=0.00247525; + g_Bar_Orgx=0; + g_Bar_Orgy=0; + g_Bar_curx=0; + g_Bar_cury=0; + + MaxisX1=0; + MaxisY1=0; + + g_Bar_dirx=1; + g_Bar_diry=-1; + Bar_fresh_flag=0; + + Usb_Cmd=0; + m_Usb_Cmd=0; + m_Usb_type=0; + m_Usb_dat=0; + + MaxisX_Scale=0.5; + MaxisY_Scale=0.5; + MaxisZ_Scale=0.5; + + g_Bar_LineScaleX=1; + g_Bar_LineScaleY=1; + ResultVZ=0; + Diy_Face_Flag=0; + Diy_x = 0; + Diy_y = 0; + + Face_Long_Dis = 0; + Face_Short_Dis = 0; + Face_Long_Step = 0; + Face_Short_Step = 0; + + Mdat1 = 0; + Mdat2 = 0; + Mdat3 = 0; + Mdat4 = 0; + Mdat5 = 0; + Mdat6 = 0; + + Mdat = 0; + value = 0; + + Max_ToV = 2800; + Min_ToV = 10; + g_Rule_Type = 2; + g_Axis_V = 0; + Org_AbsV = 0; + BarCode_Width = 600; + BarCode_Height = 500; + + XT_scale = 1; + XM_scale = 1; + XB_scale = 1; + + YL_scale = 1; + YM_scale = 1; + YR_scale = 1; + Enable_Face_flag = 0; + g_Check_BarCode_Flag = 0; + g_sys_reset_flag = 0; + Adc_Num = 0; + Adc_No = 0; + g_Adc_Value = 0; + motor_type = 0; + + motor_ScaleX = 0.001; + motor_ScaleY = 0.001; + motor_ScaleZ = 0.001; + + motor_check_flag = 0; + g_video_type = 0; + + bar_XY_type = 1; + Set_Current_Flag = 0; + + m_Aeen=0; + m_AeTarget=1; + m_BGain=1; + m_bColorCorrect=0; + m_Contrast=1; + m_ExpTime=1; + m_AnalogGain=5; + m_Gamma=5; + m_GGain=10; + m_RGain=10; + m_Saturation=1; + m_FrameSpeed=5; + m_StrobleDelay=5; + m_StrobleDuration=5; + m_TriggerDelay=5; + m_Mode=3; + m_Save_Mode=0; + m_RawTime=1; + + m_Motor_Dx=1.5; + m_Motor_Dy=1.5; + m_Motor_Dz=1.5; + m_Motor_Plus_Num=10000; + m_face_mode = 1; + g_M_Count_Flag=0; + g_video_type1=1; + g_Cap_Image=0; + g_Angle=0; + g_Debug_Video=0; + bar_Len_Type=0; + g_BarY_dir=1; + g_Lase1=0; + g_Lase2=0; + g_BarCode_Dir_Flag=0; + + g_HOff1 = 1192; + g_VOff1 = 1134; + + g_HOff2 = 1192; + g_VOff2 = 1134; + g_Add_Pic_Flag=0; + Lase_USB_Type=0; + g_OScreen_Flag=0; + g_MirrorV=0; + g_MirrorH=0; + g_M1k_Mode=0; + g_Mon=0; + + BarCodeX=0; + BarCodeY=0; + RunBar_Mode=0; + Bar_Filter_Mode=0; + g_Set_Area_Flag=0; + gFrameKey=10; + Bar_Scale_Unit=0.5; + g_ITO_Flag=0; + g_face_flag=0; + g_Nav_Flag=0; + g_Video_Input_Mode=0; + gAutoZoomFlag=0; + + }; +}g_Dev_Info; +*/ +enum FileHandleMode +{ + fmOpenRead=0, + fmOpenWrite, + fmOpenReadWrite +}; + +//====================================================================================== +class CEF8000_Interface +{ +public: + BYTE Set_Speed[15][4]; + double slow_dis[15]; + double g_precision[3]; + Dev_Info Image_Info; + +public: + CEF8000_Interface(); + ~CEF8000_Interface(); + BOOL SaveSpeedParameter(CString _FileName); + BOOL OpenSpeedParameter(CString _FileName); + +protected: + FILE* FileOpen(const CString filename,const int Mode); + int FileSeek(FILE * _Handle, long _Offset, int _Origin); + int FileRead(FILE * _Handle, void *_Buffer, int _Count); + int FileWrite(FILE * _Handle, const void *_Buffer, int _Count); + int FileClose(FILE * _Handle); + +}; + +#pragma pack(pop) +#endif diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp index 753d8eb..89f0515 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp @@ -218,7 +218,11 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP) break; case CT_READ_AXISV: _process_SO7_CMD_READ_V_DATA(); + break; + case CT_READ_IO_DAT: + _process_SO7_CMD_READ_INPUT_PORT_STATUS(); break; + default: TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_02_CMD_IDX]._save_send_cmd : %X \r\n", ep_buff[EP_02_CMD_IDX]._save_send_cmd); TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_81_DATA_IDX]._buffer[0] : %X \r\n", ep_buff[EP_81_DATA_IDX]._buffer[0]); @@ -506,6 +510,7 @@ CSO7_Proto::CSO7_Proto() g_machine.s_machine_config._dXYZSpeed=50; g_machine.InterruptFlag[0]=0; g_machine.InterruptFlag[1]=0; + g_machine.InPortStatus=0; so7_motion_reset_controller_parameter(); m_bHomingActive = false; g_pLogger = new CLogger(_T("\\UtilityDebug.Log")); @@ -3956,6 +3961,25 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_OPEN_KEYENCE_LASER() ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_INPUT_PORT_STATUS(char AddrType) +{ + WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); + memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); + + *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA; + *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_IO_DAT; + *(ep_buff[EP_02_CMD_IDX]._buffer+2)=AddrType; + + ep_buff[EP_02_CMD_IDX]._size = 0x03; + ep_buff[EP_82_DATA_IDX]._size = 0x01; + + g_hEP02_Thread_State=THREAD_RUNNING_STATE1; + g_hEP8x_Thread_State=THREAD_RUNNING_STATE2; + _do_single_threaded_usb_comm(EP_02_CMD_IDX); + ReleaseMutex(g_hEP02_Serial_Mutex); + return SSI_STATUS_MOTION_NORMAL; +} //============================================================== SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_X() @@ -4210,3 +4234,10 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_INTERRUPT_MESSAGE() g_machine.InterruptFlag[1]=*(ep_buff[EP_81_DATA_IDX]._buffer+1); return SSI_STATUS_MOTION_NORMAL; } +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_INPUT_PORT_STATUS() +{ + g_machine.InPortStatus=0; + g_machine.InPortStatus=*(ep_buff[EP_82_DATA_IDX]._buffer); + return SSI_STATUS_MOTION_NORMAL; +} \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h index f6717da..4045d01 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h @@ -59,7 +59,6 @@ const long MAX_INTENSITY = 0x3FF; #define MAXLIGHTVALUE 256 - #pragma pack(push) #pragma pack(1) //**************************************************************************************************** @@ -197,6 +196,7 @@ struct struct_so7_machine char Sys_Reset_Flag; char cVerNumber; char InterruptFlag[2]; + char InPortStatus; int _motor_pulse_num; struct s_so7_axis x; @@ -398,6 +398,7 @@ public: SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_INTERRUPT_MESSAGE(); SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_ZOOM_MOTION_STATUS(); SSI_STATUS_MOTION _send_cmd_SO7_CMD_OPEN_KEYENCE_LASER(); + SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_INPUT_PORT_STATUS(char AddrType); static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_X(); static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_Y(); @@ -427,6 +428,7 @@ public: static SSI_STATUS_MOTION _process_SO7_CMD_READ_SPEED_PRECISIONZ(); static SSI_STATUS_MOTION _process_SO7_CMD_READ_INTERRUPT_MESSAGE(); static SSI_STATUS_MOTION _process_SO7_CMD_READ_ZOOM_MOTION_STATUS(); + static SSI_STATUS_MOTION _process_SO7_CMD_READ_INPUT_PORT_STATUS(); }; 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 ce61929..6c696cc 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -1289,3 +1289,149 @@ 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 +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +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. +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 +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. +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 4ec2f1e..2cc1880 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,13 +3,13 @@ SPEED_BASE_X1=5 SPEED_MAX_X1=168 SPEED_START_X1=28 SPEED_FRESH_X1=10 -SPEED_SLOW_X1=0.509 +SPEED_SLOW_X1=0.510 ; SPEED_BASE_X2=3 SPEED_MAX_X2=50 SPEED_START_X2=10 SPEED_FRESH_X2=10 -SPEED_SLOW_X2=0.109 +SPEED_SLOW_X2=0.110 ; SPEED_BASE_X3=2 SPEED_MAX_X3=5 @@ -63,13 +63,13 @@ SPEED_BASE_Z1=5 SPEED_MAX_Z1=130 SPEED_START_Z1=28 SPEED_FRESH_Z1=10 -SPEED_SLOW_Z1=0.509 +SPEED_SLOW_Z1=0.510 ; SPEED_BASE_Z2=3 SPEED_MAX_Z2=60 SPEED_START_Z2=10 SPEED_FRESH_Z2=10 -SPEED_SLOW_Z2=0.109 +SPEED_SLOW_Z2=0.110 ; SPEED_BASE_Z3=2 SPEED_MAX_Z3=5 @@ -89,13 +89,13 @@ SPEED_START_Z5=80 SPEED_FRESH_Z5=10 SPEED_SLOW_Z5=0.001 ; -X_MOTOR_PRECISION=0.001 -Y_MOTOR_PRECISION=0.001 -Z_MOTOR_PRECISION=0.001 +X_MOTOR_PRECISION=0.010 +Y_MOTOR_PRECISION=0.010 +Z_MOTOR_PRECISION=0.100 ; -X_MOTOR_WHEELBASE=25.000 +X_MOTOR_WHEELBASE=19.990 Y_MOTOR_WHEELBASE=20.000 -Z_MOTOR_WHEELBASE=2.999 +Z_MOTOR_WHEELBASE=3.000 ; MOTOR_PULSE_NUM=10000 ; @@ -104,11 +104,11 @@ X_SCALE_RESOLUTION=0.400 Y_SCALE_RESOLUTION=0.400 Z_SCALE_RESOLUTION=0.400 ; -X_NEG_WORKING_LIMIT=0.000 +X_NEG_WORKING_LIMIT=-0.000 Y_NEG_WORKING_LIMIT=0.000 Z_NEG_WORKING_LIMIT=0.000 ; -X_POS_WORKING_LIMIT=400.000 +X_POS_WORKING_LIMIT=-0.000 Y_POS_WORKING_LIMIT=300.000 Z_POS_WORKING_LIMIT=200.000 ; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log index 6163d02..ed79092 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log @@ -44,3 +44,53 @@ 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. +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. 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 0bc570b..68e6d82 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 @@ -32,6 +32,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "SevenOcean Utility" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN + CONTROL "First",IDC_RADIO_SPEED_GEAR1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,216,144,30,10 + CONTROL "Second",IDC_RADIO_SPEED_GEAR2,"Button",BS_AUTORADIOBUTTON,216,158,39,10 + CONTROL "Third",IDC_RADIO_SPEED_GEAR3,"Button",BS_AUTORADIOBUTTON,216,172,32,10 + CONTROL "Fourth",IDC_RADIO_SPEED_GEAR4,"Button",BS_AUTORADIOBUTTON,216,186,37,10 + CONTROL "Fifth",IDC_RADIO_SPEED_GEAR5,"Button",BS_AUTORADIOBUTTON,216,200,31,10 + GROUPBOX "Cmd",IDC_STATIC,17,216,379,46 PUSHBUTTON "Start_Machine",IDC_BUTTON_START_SO7MACHINE,23,40,63,18 PUSHBUTTON "Stop_Machine",IDC_BUTTON_STOP_SO7MACHINE,23,75,63,18 PUSHBUTTON "Read XYZ Axis",IDC_BUTTON_SO7_READ_AXIS_XYZ,132,28,62,13 @@ -55,21 +61,15 @@ BEGIN PUSHBUTTON "Y+",IDC_BUTTON_SO7_MOVE_Y_FRONT,154,159,25,12 PUSHBUTTON "Y-",IDC_BUTTON_SO7_MOVE_Y_BACK,154,180,25,12 PUSHBUTTON "X+",IDC_BUTTON_SO7_MOVE_X_RIGHT,180,169,25,12 - CONTROL "Fourth",IDC_RADIO_SPEED_GEAR4,"Button",BS_AUTORADIOBUTTON | WS_GROUP,216,190,37,10 - CONTROL "Third",IDC_RADIO_SPEED_GEAR3,"Button",BS_AUTORADIOBUTTON,216,175,32,10 - CONTROL "Second",IDC_RADIO_SPEED_GEAR2,"Button",BS_AUTORADIOBUTTON,216,160,39,10 - CONTROL "First",IDC_RADIO_SPEED_GEAR1,"Button",BS_AUTORADIOBUTTON,216,145,30,10 PUSHBUTTON "Home XYZ",IDC_BUTTON_SO7_RESET_XYZ,274,140,76,14,BS_MULTILINE PUSHBUTTON "Hoom Manual",IDC_BUTTON_MANUAL_HOME,274,157,76,14 PUSHBUTTON "Home Worktable Left",IDC_BUTTON_RESET_WORKTABLE,274,174,76,14 PUSHBUTTON "Home Worktable Right",IDC_BUTTON_RESET_WORKTABLE_RIGHT,274,191,76,14 PUSHBUTTON "Move\n To",IDC_BUTTON_MOVE_TO,359,142,32,27,BS_MULTILINE PUSHBUTTON "Auto Zoom",IDC_BUTTON_AUTO_ZOOM,359,177,32,27,BS_MULTILINE - PUSHBUTTON "Set Reset Flag",IDC_BUTTON_SET_RESET_FLAG,27,234,61,14 - PUSHBUTTON "To Get Laser",IDC_BUTTON_GET_LASER,93,234,61,14 - PUSHBUTTON "Home V",IDC_BUTTON_RESET_V,159,234,61,14 - EDITTEXT IDC_EDIT_LIGHT_SIZE_VALUE,349,92,41,12,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_LIGHT_SWITCH,349,108,41,12,ES_AUTOHSCROLL + PUSHBUTTON "Set Reset Flag",IDC_BUTTON_SET_RESET_FLAG,27,235,61,14 + PUSHBUTTON "To Get Laser",IDC_BUTTON_GET_LASER,95,235,61,14 + PUSHBUTTON "Home V",IDC_BUTTON_RESET_V,163,235,61,14 EDITTEXT IDC_EDIT_X_SCALE_COEFFICIENT,46,284,54,12,ES_CENTER | ES_AUTOHSCROLL EDITTEXT IDC_EDIT_Y_SCALE_COEFFICIENT,109,284,54,12,ES_CENTER | ES_AUTOHSCROLL EDITTEXT IDC_EDIT_Z_SCALE_COEFFICIENT,172,284,54,12,ES_CENTER | ES_AUTOHSCROLL @@ -77,10 +77,9 @@ BEGIN GROUPBOX "USB Control",IDC_STATIC,15,12,89,115 GROUPBOX "Config",IDC_STATIC,13,129,55,83 GROUPBOX "Get_Data",IDC_STATIC,114,13,98,115 - GROUPBOX "Cmd",IDC_STATIC,17,216,378,46 - PUSHBUTTON "当前探头:激光",IDC_BUTTON_PROBE_ONOFF,231,231,48,20,BS_MULTILINE - PUSHBUTTON "当前状态:夹具开",IDC_BUTTON_FIXTURE_ONOFF,285,231,48,20,BS_MULTILINE - PUSHBUTTON "当前状态:夹具上",IDC_BUTTON_FIXTURE_UPDOWN,339,231,48,20,BS_MULTILINE + PUSHBUTTON "当前探头:激光",IDC_BUTTON_PROBE_ONOFF,273,369,48,20,BS_MULTILINE | NOT WS_VISIBLE + PUSHBUTTON "当前状态:夹具开",IDC_BUTTON_FIXTURE_ONOFF,273,369,48,20,BS_MULTILINE | NOT WS_VISIBLE + PUSHBUTTON "当前状态:夹具上",IDC_BUTTON_FIXTURE_UPDOWN,273,369,48,20,BS_MULTILINE | NOT WS_VISIBLE GROUPBOX "Ver NO.",IDC_STATIC,252,265,145,37 LTEXT "Set Ver NO.",IDC_STATIC,273,282,39,8 GROUPBOX "Common Cmd",IDC_STATIC,253,307,144,54 @@ -96,11 +95,7 @@ BEGIN LTEXT "Coaxial",IDC_STATIC,231,99,24,8 LTEXT "SegI",IDC_STATIC,236,72,16,8 LTEXT "SegII",IDC_STATIC,236,86,18,8 - GROUPBOX "Light Size",IDC_STATIC,324,14,72,112 - CONTROL "Light1",IDC_RADIO_LIGHT1_SIZE,"Button",BS_AUTORADIOBUTTON,348,28,35,10 - CONTROL "Light2",IDC_RADIO_LIGHT2_SIZE,"Button",BS_AUTORADIOBUTTON,348,44,35,10 - CONTROL "Light3",IDC_RADIO_LIGHT3_SIZE,"Button",BS_AUTORADIOBUTTON,348,60,35,10 - CONTROL "Light4",IDC_RADIO_LIGHT4_SIZE,"Button",BS_AUTORADIOBUTTON,348,76,35,10 + GROUPBOX "Input Port Status",IDC_STATIC,321,14,72,111 PUSHBUTTON "Exit",IDCANCEL,366,465,39,14 LTEXT "x",IDC_STATIC,23,324,8,11 LTEXT "y",IDC_STATIC,23,338,8,11 @@ -128,14 +123,28 @@ BEGIN LTEXT "Probe",IDC_STATIC,189,310,20,8 LTEXT "Pos Update Frequency",IDC_STATIC,104,384,74,8 LTEXT "Spare1",IDC_STATIC,232,112,24,8 - LTEXT "Size",IDC_STATIC,328,94,15,8 - LTEXT "Switch",IDC_STATIC,326,110,20,8 CTEXT "X",IDC_STATIC,70,273,8,8 CTEXT "Y",IDC_STATIC,133,273,8,8 CTEXT "Z",IDC_STATIC,195,273,8,8 LTEXT "比例 系数",IDC_STATIC,23,281,18,18 GROUPBOX "Set Gear",IDC_STATIC,208,132,56,81 PUSHBUTTON "so7_config",IDC_BUTTON_SETUP_SO7CONFIG,20,184,44,23 + LTEXT "1",IDC_STATIC,337,27,8,8 + LTEXT "2",IDC_STATIC,337,43,8,8 + LTEXT "3",IDC_STATIC,337,59,8,8 + LTEXT "4",IDC_STATIC,337,75,8,8 + LTEXT "5",IDC_STATIC,337,91,8,8 + LTEXT "6",IDC_STATIC,337,107,8,8 + PUSHBUTTON "Read IO Status",IDC_BUTTON_SO7_READ_IN_PORT_STATUS,314,235,61,14 + CONTROL "Continuous",IDC_CHECK_CONTINUOUS_READ_IO_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,319,223,47,10 + CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT1,"MfcButton",WS_TABSTOP,353,24,21,14 + CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT2,"MfcButton",WS_TABSTOP,353,40,21,14 + CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT3,"MfcButton",WS_TABSTOP,353,56,21,14 + CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT4,"MfcButton",WS_TABSTOP,353,72,21,14 + CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT5,"MfcButton",WS_TABSTOP,353,88,21,14 + CONTROL "",IDC_MFCBUTTON_STATUS_IN_PORT6,"MfcButton",WS_TABSTOP,353,104,21,14 + EDITTEXT IDC_EDIT_SO7_READ_IO_STATUS_ADDRESS,259,235,40,14,ES_AUTOHSCROLL + LTEXT "Addr",IDC_STATIC,239,236,16,8 END IDD_S07_UTIL_SEND_PARAMETER DIALOGEX 0, 0, 753, 481 @@ -833,6 +842,149 @@ IDI_ICON_GRAY ICON "res\\Gray.ico" IDI_ICON_WHITE ICON "res\\White.ico" IDI_ICON_RED ICON "res\\red.ico" IDI_ICON_BLACK ICON "res\\Black.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog Info +// + +IDD_SO7_UTIL_DIALOG DLGINIT +BEGIN + IDC_MFCBUTTON_STATUS_IN_PORT1, 0x37c, 369, 0 +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, +0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, +0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, +0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, +0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, +0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, +0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, +0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, +0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, +0x4f65, 0x526e, 0x6769, 0x7468, "\076" + IDC_MFCBUTTON_STATUS_IN_PORT2, 0x37c, 369, 0 +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, +0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, +0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, +0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, +0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, +0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, +0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, +0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, +0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, +0x4f65, 0x526e, 0x6769, 0x7468, "\076" + IDC_MFCBUTTON_STATUS_IN_PORT3, 0x37c, 369, 0 +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, +0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, +0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, +0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, +0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, +0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, +0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, +0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, +0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, +0x4f65, 0x526e, 0x6769, 0x7468, "\076" + IDC_MFCBUTTON_STATUS_IN_PORT4, 0x37c, 369, 0 +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, +0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, +0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, +0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, +0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, +0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, +0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, +0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, +0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, +0x4f65, 0x526e, 0x6769, 0x7468, "\076" + IDC_MFCBUTTON_STATUS_IN_PORT5, 0x37c, 369, 0 +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, +0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, +0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, +0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, +0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, +0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, +0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, +0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, +0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, +0x4f65, 0x526e, 0x6769, 0x7468, "\076" + IDC_MFCBUTTON_STATUS_IN_PORT6, 0x37c, 369, 0 +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, +0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, +0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, +0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, +0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, +0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, +0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, +0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, +0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, +0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, +0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, +0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, +0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, +0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, +0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, +0x4f65, 0x526e, 0x6769, 0x7468, "\076" + 0 +END + #endif // Chinese (Simplified, PRC) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.cpp index 91bc8ba..c69cc59 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.cpp @@ -4,13 +4,14 @@ #include #include "afxdialogex.h" #include "resource.h" +#include "..\..\..\SevenOcean\EF8000_Interface.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; - +extern CEF8000_Interface* m_pEF8000_Interface; #define PAUSE_TIME_CHANGE_PARAMETER 20 #define MAX_SAMPLE_DIFF_VALUE 100 //#include "INIFile.h" @@ -253,14 +254,30 @@ void CSO7_Send_Parameter::OnBnClickedOk() 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); + m_csIniFile = "motor"; + CString szFilter=_T("EF8000 DAT Files(*.dat)|*.dat|INI Files(*.ini)|*.ini|ALL Files(*.*)|*.*||"); + + CFileDialog fileDialog(TRUE, _T("*.dat"),(LPCTSTR) m_csIniFile, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, 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); + + switch(fileDialog.m_ofn.nFilterIndex) + { + case 1: + { + m_pEF8000_Interface->OpenSpeedParameter(m_csIniFile); + ParameterFormatEF8000ToSo7(); + break; + } + case 2: + { + m_pSO7_Proto->Load_SevenOcean_Inifile(m_csIniFile); + break; + } + } ShowParameterOnEdit(); m_StatusBar.SetText(_T("正在显示当前INI文档参数。"), 0, 0); } @@ -322,15 +339,28 @@ void CSO7_Send_Parameter::OnBnClickedButtonSave() 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); + PathName=_T("motor"); + CString szFilter=_T("EF8000 DAT Files(*.dat)|*.dat|INI Files(*.ini)|*.ini|ALL Files(*.*)|*.*||"); + CFileDialog fdlg(FALSE,_T("DAT"),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); + switch(fdlg.m_ofn.nFilterIndex) + { + case 1: + { + ParameterFormatSo7ToEF8000(); + m_pEF8000_Interface->SaveSpeedParameter(path_and_fileName); + break; + } + case 2: + { + m_pSO7_Proto->Save_SevenOcean_Inifile(path_and_fileName); + break; + } + } CTmpString=_T("参数已保存至[")+path_and_fileName+_T("]."); m_StatusBar.SetText(CTmpString, 0, 0); } @@ -369,6 +399,85 @@ void CSO7_Send_Parameter::OnBnClickedButtonReadParameterFromController() ShowParameterOnEdit(); m_StatusBar.SetText(_T("运动参数已从控制器中读出。"), 0, 0); } +//================================================================ +void CSO7_Send_Parameter::ParameterFormatSo7ToEF8000() +{ + for(int j=0;j<5;j++) + { + m_pEF8000_Interface->Set_Speed[j][0]=m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_base[j]; + m_pEF8000_Interface->Set_Speed[j][1]= m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_max[j]; + m_pEF8000_Interface->Set_Speed[j][2]=m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_start[j]; + m_pEF8000_Interface->Set_Speed[j][3]=m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_fresh[j]; + + m_pEF8000_Interface->slow_dis[j]=m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_slow_dis[j]; + } + for(int j=0;j<5;j++) + { + m_pEF8000_Interface->Set_Speed[j+5][0]=m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_base[j]; + m_pEF8000_Interface->Set_Speed[j+5][1]= m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_max[j]; + m_pEF8000_Interface->Set_Speed[j+5][2]=m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_start[j]; + m_pEF8000_Interface->Set_Speed[j+5][3]=m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_fresh[j]; + + m_pEF8000_Interface->slow_dis[j+5]=m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_slow_dis[j]; + } + for(int j=0;j<5;j++) + { + m_pEF8000_Interface->Set_Speed[j+10][0]=m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_base[j]; + m_pEF8000_Interface->Set_Speed[j+10][1]= m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_max[j]; + m_pEF8000_Interface->Set_Speed[j+10][2]=m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_start[j]; + m_pEF8000_Interface->Set_Speed[j+10][3]=m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_fresh[j]; + + m_pEF8000_Interface->slow_dis[j+10]=m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_slow_dis[j]; + } + + m_pEF8000_Interface->g_precision[0]=m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_precision; + m_pEF8000_Interface->g_precision[1]=m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_precision; + m_pEF8000_Interface->g_precision[2]=m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_precision; + + m_pEF8000_Interface->Image_Info.m_Motor_Dx=m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_wheelbase; + m_pEF8000_Interface->Image_Info.m_Motor_Dy=m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_wheelbase; + m_pEF8000_Interface->Image_Info.m_Motor_Dz=m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_wheelbase; + m_pEF8000_Interface->Image_Info.m_Motor_Plus_Num= m_pSO7_Proto->g_machine._motor_pulse_num; +}; +//================================================================ +void CSO7_Send_Parameter::ParameterFormatEF8000ToSo7() +{ + for(int j=0;j<5;j++) + { + m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_base[j]=m_pEF8000_Interface->Set_Speed[j][0]; + m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_max[j]=m_pEF8000_Interface->Set_Speed[j][1]; + m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_start[j]=m_pEF8000_Interface->Set_Speed[j][2]; + m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_fresh[j]=m_pEF8000_Interface->Set_Speed[j][3]; + + m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_slow_dis[j]=m_pEF8000_Interface->slow_dis[j]; + } + for(int j=0;j<5;j++) + { + m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_base[j]=m_pEF8000_Interface->Set_Speed[j+5][0]; + m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_max[j]=m_pEF8000_Interface->Set_Speed[j+5][1]; + m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_start[j]=m_pEF8000_Interface->Set_Speed[j+5][2]; + m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_fresh[j]=m_pEF8000_Interface->Set_Speed[j+5][3]; + + m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_slow_dis[j]=m_pEF8000_Interface->slow_dis[j+5]; + } + for(int j=0;j<5;j++) + { + m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_base[j]=m_pEF8000_Interface->Set_Speed[j+10][0]; + m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_max[j]=m_pEF8000_Interface->Set_Speed[j+10][1]; + m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_start[j]=m_pEF8000_Interface->Set_Speed[j+10][2]; + m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_fresh[j]=m_pEF8000_Interface->Set_Speed[j+10][3]; + + m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_slow_dis[j]=m_pEF8000_Interface->slow_dis[j+10]; + } + m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_precision=m_pEF8000_Interface->g_precision[0]; + m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_precision=m_pEF8000_Interface->g_precision[1]; + m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_precision= m_pEF8000_Interface->g_precision[2]; + + m_pSO7_Proto->g_machine.s_machine_config.x_axis._motor_wheelbase=m_pEF8000_Interface->Image_Info.m_Motor_Dx; + m_pSO7_Proto->g_machine.s_machine_config.y_axis._motor_wheelbase=m_pEF8000_Interface->Image_Info.m_Motor_Dy; + m_pSO7_Proto->g_machine.s_machine_config.z_axis._motor_wheelbase=m_pEF8000_Interface->Image_Info.m_Motor_Dz; + m_pSO7_Proto->g_machine._motor_pulse_num= m_pEF8000_Interface->Image_Info.m_Motor_Plus_Num; +}; //================================================================ void CSO7_Send_Parameter::ChangeParameterOnEdit() diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.h index 3d2505e..593c4f4 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.h @@ -100,6 +100,10 @@ public: void Sample_Speed_Time_Curve(); void Sample_Speed_Position_Curve(); void Sample_Position_Time_Curve(); + //============================================= + void ParameterFormatSo7ToEF8000(); + void ParameterFormatEF8000ToSo7(); + //============================================= void OutputWithScroll(const CString &strNewText,CEdit &edtOutput); }; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp index a291aff..a01accf 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp @@ -14,6 +14,15 @@ #include "SO7_UtilDlg.h" // CSO7_UtilDlg 对话框 +#define HBIT0 0X01 +#define HBIT1 0X02 +#define HBIT2 0X04 +#define HBIT3 0X08 +#define HBIT4 0X10 +#define HBIT5 0X20 +#define HBIT6 0X40 +#define HBIT7 0X80 + extern CPSerial* m_pSO7_PCDSerial; extern CSO7_Proto* m_pSO7_Proto; CLogger* g_pLoggerDebug=NULL; @@ -47,8 +56,6 @@ void CSO7_UtilDlg::DoDataExchange(CDataExchange* pDX) DDX_Text(pDX, IDC_EDIT_COAXIAL_LIGHT3, m_csFan1_Light_Switch); DDX_Text(pDX, IDC_EDIT_COAXIAL_LIGHT4, m_csFan2_Light_Switch); - DDX_Text(pDX, IDC_EDIT_LIGHT_SIZE_VALUE,m_cs_Light_Size_Value); - DDX_Text(pDX, IDC_EDIT_LIGHT_SWITCH, m_cs_Light_Switch); DDX_Text(pDX, IDC_EDIT_SET_VER_NO, m_cs_Version_Number); DDX_Text(pDX, IDC_EDIT_X_SCALE_COEFFICIENT, m_cs_XScaleCoeff); @@ -86,8 +93,6 @@ BEGIN_MESSAGE_MAP(CSO7_UtilDlg, CDialog) ON_EN_KILLFOCUS(IDC_EDIT_BOTTOM_LIGHT, &CSO7_UtilDlg::OnEnKillfocusEditBottomLight) ON_EN_KILLFOCUS(IDC_EDIT_RING_LIGHT, &CSO7_UtilDlg::OnEnKillfocusEditRingLight) ON_EN_KILLFOCUS(IDC_EDIT_COAXIAL_LIGHT, &CSO7_UtilDlg::OnEnKillfocusEditCoaxialLight) - ON_EN_KILLFOCUS(IDC_EDIT_LIGHT_SIZE_VALUE, &CSO7_UtilDlg::OnEnKillfocusEditLightSizeValue) - ON_EN_KILLFOCUS(IDC_EDIT_LIGHT_SWITCH, &CSO7_UtilDlg::OnEnKillfocusEditLightSwitch) ON_EN_KILLFOCUS(IDC_EDIT_COAXIAL_LIGHT2, &CSO7_UtilDlg::OnEnKillfocusEditCoaxialLight2) ON_EN_KILLFOCUS(IDC_EDIT_COAXIAL_LIGHT3, &CSO7_UtilDlg::OnEnKillfocusEditCoaxialLight3) ON_EN_KILLFOCUS(IDC_EDIT_COAXIAL_LIGHT4, &CSO7_UtilDlg::OnEnKillfocusEditCoaxialLight4) @@ -110,6 +115,9 @@ BEGIN_MESSAGE_MAP(CSO7_UtilDlg, CDialog) ON_BN_CLICKED(IDC_BUTTON_AUTO_ZOOM, &CSO7_UtilDlg::OnBnClickedButtonAutoZoom) ON_BN_CLICKED(IDC_BUTTON_MANUAL_HOME, &CSO7_UtilDlg::OnBnClickedButtonManualHome) ON_BN_CLICKED(IDC_BUTTON_SETUP_SO7CONFIG, &CSO7_UtilDlg::OnBnClickedButtonSetupSo7config) + ON_BN_CLICKED(IDC_BUTTON_SO7_READ_IN_PORT_STATUS, &CSO7_UtilDlg::OnBnClickedButtonSo7ReadInPortStatus) + ON_BN_CLICKED(IDC_RADIO_SPEED_GEAR5, &CSO7_UtilDlg::OnBnClickedRadioSpeedGear5) + ON_EN_KILLFOCUS(IDC_EDIT_SO7_READ_IO_STATUS_ADDRESS, &CSO7_UtilDlg::OnEnKillfocusEditSo7ReadIoStatusAddress) END_MESSAGE_MAP() @@ -158,8 +166,6 @@ BOOL CSO7_UtilDlg::OnInitDialog() GetDlgItem(IDC_EDIT_COAXIAL_LIGHT2)->EnableWindow(false); GetDlgItem(IDC_EDIT_COAXIAL_LIGHT3)->EnableWindow(false); GetDlgItem(IDC_EDIT_COAXIAL_LIGHT4)->EnableWindow(false); - GetDlgItem(IDC_EDIT_LIGHT_SIZE_VALUE)->EnableWindow(false); - GetDlgItem(IDC_EDIT_LIGHT_SWITCH)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SETUP_SO7CONFIG)->EnableWindow(false); GetDlgItem(IDC_BUTTON_LOAD_SO7CONFIG)->EnableWindow(false); @@ -185,6 +191,8 @@ BOOL CSO7_UtilDlg::OnInitDialog() GetDlgItem(IDC_BUTTON_PROBE_ONOFF)->EnableWindow(false); GetDlgItem(IDC_BUTTON_FIXTURE_ONOFF)->EnableWindow(false); GetDlgItem(IDC_BUTTON_FIXTURE_UPDOWN)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_READ_IN_PORT_STATUS)->EnableWindow(false); + GetDlgItem(IDC_CHECK_CONTINUOUS_READ_IO_STATUS)->EnableWindow(false); GetDlgItem(IDC_EDIT_SET_VER_NO)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SET_SECTION)->EnableWindow(false); @@ -221,7 +229,14 @@ BOOL CSO7_UtilDlg::OnInitDialog() m_cs_Version_Number=_T("3"); if (!g_pLoggerDebug) + { g_pLoggerDebug = new CLogger(_T("\\UtilityDebug.Log")); + } + + m_BeginReadIO=FALSE; + m_ReadIOStatusAddr=4; + GetDlgItem(IDC_EDIT_SO7_READ_IO_STATUS_ADDRESS)->SetWindowTextW(_T("4")); + UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control @@ -309,8 +324,6 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() GetDlgItem(IDC_EDIT_COAXIAL_LIGHT2)->EnableWindow(true); GetDlgItem(IDC_EDIT_COAXIAL_LIGHT3)->EnableWindow(true); GetDlgItem(IDC_EDIT_COAXIAL_LIGHT4)->EnableWindow(true); - GetDlgItem(IDC_EDIT_LIGHT_SIZE_VALUE)->EnableWindow(true); - GetDlgItem(IDC_EDIT_LIGHT_SWITCH)->EnableWindow(true); GetDlgItem(IDC_BUTTON_SETUP_SO7CONFIG)->EnableWindow(true); GetDlgItem(IDC_BUTTON_LOAD_SO7CONFIG)->EnableWindow(true); @@ -336,6 +349,9 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() GetDlgItem(IDC_BUTTON_PROBE_ONOFF)->EnableWindow(true); GetDlgItem(IDC_BUTTON_FIXTURE_ONOFF)->EnableWindow(true); GetDlgItem(IDC_BUTTON_FIXTURE_UPDOWN)->EnableWindow(true); + GetDlgItem(IDC_BUTTON_SO7_READ_IN_PORT_STATUS)->EnableWindow(true); + GetDlgItem(IDC_CHECK_CONTINUOUS_READ_IO_STATUS)->EnableWindow(true); + GetDlgItem(IDC_EDIT_SET_VER_NO)->EnableWindow(true); GetDlgItem(IDC_BUTTON_SET_SECTION)->EnableWindow(true); @@ -374,10 +390,8 @@ void CSO7_UtilDlg::OnBnClickedButtonStopSo7machine() GetDlgItem(IDC_EDIT_COAXIAL_LIGHT2)->EnableWindow(false); GetDlgItem(IDC_EDIT_COAXIAL_LIGHT3)->EnableWindow(false); GetDlgItem(IDC_EDIT_COAXIAL_LIGHT4)->EnableWindow(false); - GetDlgItem(IDC_EDIT_LIGHT_SIZE_VALUE)->EnableWindow(false); - GetDlgItem(IDC_EDIT_LIGHT_SWITCH)->EnableWindow(false); - GetDlgItem(IDC_BUTTON_SETUP_SO7CONFIG)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SETUP_SO7CONFIG)->EnableWindow(false); GetDlgItem(IDC_BUTTON_LOAD_SO7CONFIG)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SO7_MOVE_ZOOM_IN)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SO7_MOVE_ZOOM_OUT)->EnableWindow(false); @@ -401,6 +415,8 @@ void CSO7_UtilDlg::OnBnClickedButtonStopSo7machine() GetDlgItem(IDC_BUTTON_PROBE_ONOFF)->EnableWindow(false); GetDlgItem(IDC_BUTTON_FIXTURE_ONOFF)->EnableWindow(false); GetDlgItem(IDC_BUTTON_FIXTURE_UPDOWN)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_READ_IN_PORT_STATUS)->EnableWindow(false); + GetDlgItem(IDC_CHECK_CONTINUOUS_READ_IO_STATUS)->EnableWindow(false); GetDlgItem(IDC_EDIT_SET_VER_NO)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SET_SECTION)->EnableWindow(false); @@ -475,11 +491,11 @@ void CSO7_UtilDlg::OnBnClickedButtonAutoZoom() return; } -void CSO7_UtilDlg::OnBnClickedRadioSpeedGear1() +void CSO7_UtilDlg::OnBnClickedRadioSpeedGear1()//faster { - m_pSO7_Proto->g_machine.x._Move_Speed_Gear=1; - m_pSO7_Proto->g_machine.y._Move_Speed_Gear=1; - m_pSO7_Proto->g_machine.z._Move_Speed_Gear=1; + m_pSO7_Proto->g_machine.x._Move_Speed_Gear=4; + m_pSO7_Proto->g_machine.y._Move_Speed_Gear=4; + m_pSO7_Proto->g_machine.z._Move_Speed_Gear=4; m_pSO7_Proto->g_machine.zm._Move_Speed_Gear=5;//m_motor.c ==> movev @@ -488,18 +504,18 @@ void CSO7_UtilDlg::OnBnClickedRadioSpeedGear1() void CSO7_UtilDlg::OnBnClickedRadioSpeedGear2() { - m_pSO7_Proto->g_machine.x._Move_Speed_Gear=2; - m_pSO7_Proto->g_machine.y._Move_Speed_Gear=2; - m_pSO7_Proto->g_machine.z._Move_Speed_Gear=2; + m_pSO7_Proto->g_machine.x._Move_Speed_Gear=3; + m_pSO7_Proto->g_machine.y._Move_Speed_Gear=3; + m_pSO7_Proto->g_machine.z._Move_Speed_Gear=3; m_pSO7_Proto->g_machine.zm._Move_Speed_Gear=5;//m_motor.c ==> movev } void CSO7_UtilDlg::OnBnClickedRadioSpeedGear3() { - m_pSO7_Proto->g_machine.x._Move_Speed_Gear=3; - m_pSO7_Proto->g_machine.y._Move_Speed_Gear=3; - m_pSO7_Proto->g_machine.z._Move_Speed_Gear=3; + m_pSO7_Proto->g_machine.x._Move_Speed_Gear=2; + m_pSO7_Proto->g_machine.y._Move_Speed_Gear=2; + m_pSO7_Proto->g_machine.z._Move_Speed_Gear=2; m_pSO7_Proto->g_machine.zm._Move_Speed_Gear=1;//m_motor.c ==> movev } @@ -507,15 +523,23 @@ void CSO7_UtilDlg::OnBnClickedRadioSpeedGear3() void CSO7_UtilDlg::OnBnClickedRadioSpeedGear4() { - m_pSO7_Proto->g_machine.x._Move_Speed_Gear=4; - m_pSO7_Proto->g_machine.y._Move_Speed_Gear=4; - m_pSO7_Proto->g_machine.z._Move_Speed_Gear=4; + m_pSO7_Proto->g_machine.x._Move_Speed_Gear=1; + m_pSO7_Proto->g_machine.y._Move_Speed_Gear=1; + m_pSO7_Proto->g_machine.z._Move_Speed_Gear=1; m_pSO7_Proto->g_machine.zm._Move_Speed_Gear=2;//m_motor.c ==> movev } +void CSO7_UtilDlg::OnBnClickedRadioSpeedGear5() +{ + m_pSO7_Proto->g_machine.x._Move_Speed_Gear=5; + m_pSO7_Proto->g_machine.y._Move_Speed_Gear=5; + m_pSO7_Proto->g_machine.z._Move_Speed_Gear=5; + m_pSO7_Proto->g_machine.zm._Move_Speed_Gear=2;//m_motor.c ==> movev +} + //===================================================================== @@ -962,7 +986,114 @@ void CSO7_UtilDlg::OnBnClickedButtonSetupSo7config() } SetTimer(1,150,NULL); } +//================================================================================================ +void CSO7_UtilDlg::OnEnKillfocusEditSo7ReadIoStatusAddress() +{ + UpdateData(TRUE); + USES_CONVERSION; + CString str; + GetDlgItem(IDC_EDIT_SO7_READ_IO_STATUS_ADDRESS)->GetWindowText(str); + const char* cTempValue=T2A(str); + m_ReadIOStatusAddr= static_cast(atoi(cTempValue)); +} +//================================================================================================ +void CSO7_UtilDlg::OnBnClickedButtonSo7ReadInPortStatus() +{ + if (((CButton *)GetDlgItem(IDC_CHECK_CONTINUOUS_READ_IO_STATUS))->GetCheck()) + { + if (m_BeginReadIO) + { + m_BeginReadIO=FALSE; + ((CButton*)GetDlgItem(IDC_BUTTON_SO7_READ_IN_PORT_STATUS))->SetWindowTextW(_T("Read IO Status")); + } + else + { + m_BeginReadIO=TRUE; + ((CButton*)GetDlgItem(IDC_BUTTON_SO7_READ_IN_PORT_STATUS))->SetWindowTextW(_T("STOP")); + } + } + else + { + m_BeginReadIO=FALSE; + ((CButton*)GetDlgItem(IDC_BUTTON_SO7_READ_IN_PORT_STATUS))->SetWindowTextW(_T("Read IO Status")); + UpdateIOStatus(); + m_OutMessage.Format(_T("[Addr %d]:Data=%d"),m_ReadIOStatusAddr,m_pSO7_Proto->g_machine.InPortStatus); + GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage); + } + +} +//================================================================================================ +void CSO7_UtilDlg::UpdateIOStatus() +{ + CString StrON(_T("ON")); + CString StrOFF(_T("OFF")); + COLORREF ColorON=RGB(0,255,0); + COLORREF ColorOFF=RGB(240,240,240); + + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_INPUT_PORT_STATUS(m_ReadIOStatusAddr); + if (m_pSO7_Proto->g_machine.InPortStatus&HBIT0) + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT1))->SetWindowTextW(StrON); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT1))->SetFaceColor(ColorON); + } + else + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT1))->SetWindowTextW(StrOFF); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT1))->SetFaceColor(ColorOFF); + } + + if (m_pSO7_Proto->g_machine.InPortStatus&HBIT1) + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT2))->SetWindowTextW(StrON); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT2))->SetFaceColor(ColorON); + } + else + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT2))->SetWindowTextW(StrOFF); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT2))->SetFaceColor(ColorOFF); + } + if (m_pSO7_Proto->g_machine.InPortStatus&HBIT2) + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT3))->SetWindowTextW(StrON); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT3))->SetFaceColor(ColorON); + } + else + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT3))->SetWindowTextW(StrOFF); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT3))->SetFaceColor(ColorOFF); + } + if (m_pSO7_Proto->g_machine.InPortStatus&HBIT3) + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT4))->SetWindowTextW(StrON); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT4))->SetFaceColor(ColorON); + } + else + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT4))->SetWindowTextW(StrOFF); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT4))->SetFaceColor(ColorOFF); + } + if (m_pSO7_Proto->g_machine.InPortStatus&HBIT4) + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT5))->SetWindowTextW(StrON); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT5))->SetFaceColor(ColorON); + } + else + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT5))->SetWindowTextW(StrOFF); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT5))->SetFaceColor(ColorOFF); + } + if (m_pSO7_Proto->g_machine.InPortStatus&HBIT5) + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT6))->SetWindowTextW(StrON); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT6))->SetFaceColor(ColorON); + } + else + { + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT6))->SetWindowTextW(StrOFF); + ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON_STATUS_IN_PORT6))->SetFaceColor(ColorOFF); + } +} //================================================================================================ void CSO7_UtilDlg::OnTimer(UINT_PTR nIDEvent) { @@ -975,6 +1106,10 @@ void CSO7_UtilDlg::OnTimer(UINT_PTR nIDEvent) { if (m_pSO7_Proto->g_machine.s_status._machine_running) { + if (m_BeginReadIO) + { + UpdateIOStatus(); + } m_pSO7_Proto->_send_cmd_SO7_CMD_READ_AXIS_XYZ(); m_pSO7_Proto->_send_cmd_SO7_CMD_READ_V_DATA(); @@ -1043,3 +1178,7 @@ BOOL CSO7_UtilDlg::PreTranslateMessage(MSG* pMsg) } + + + + diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h index 49a3408..e6dead1 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h @@ -52,8 +52,9 @@ public: CProcessButton m_Button_MoveZ_Down; CProcessButton m_Button_MoveV_Zoom_In; CProcessButton m_Button_MoveV_Zoom_Out; - - + char m_ReadIOStatusAddr; + BOOL m_BeginReadIO; + void UpdateIOStatus(); afx_msg void OnBnClickedButtonInitSo7usb(); afx_msg void OnBnClickedButtonTermSo7usb(); afx_msg void OnBnClickedButtonStartSo7machine(); @@ -101,4 +102,7 @@ public: afx_msg void OnBnClickedButtonAutoZoom(); afx_msg void OnBnClickedButtonManualHome(); afx_msg void OnBnClickedButtonSetupSo7config(); + afx_msg void OnBnClickedButtonSo7ReadInPortStatus(); + afx_msg void OnBnClickedRadioSpeedGear5(); + afx_msg void OnEnKillfocusEditSo7ReadIoStatusAddress(); }; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp index 199aebe..0a2d008 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp @@ -5,7 +5,7 @@ #include "resource.h" #include "..\..\..\SevenOcean\CMMIO_SERIAL.H" - +#include "..\..\..\SevenOcean\EF8000_Interface.h" #include "..\..\..\SevenOcean\SO7_Proto.h" #include "ProcessButton.h" @@ -47,6 +47,7 @@ CKeyence_Laser_LK_H* m_pKeyence_Laser_LK_H=NULL; CKeyence_Proto* m_pKeyence_Proto=NULL; CSo7_Interface* m_pSo7_Interface=NULL; + CEF8000_Interface* m_pEF8000_Interface=NULL; // CSo7_Option dialog IMPLEMENT_DYNAMIC(CSo7_Option, CDialog) @@ -121,13 +122,27 @@ void CSo7_Option::OnBnClickedOk() { if (((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->GetCheck()) { + if (!m_pEF8000_Interface) + { + m_pEF8000_Interface=new CEF8000_Interface(); + } if (!m_pSO7_Proto) + { m_pSO7_Proto = new CSO7_Proto(); + } CSO7_UtilDlg* pSO7_UtilDlg=new CSO7_UtilDlg(); - pSO7_UtilDlg->DoModal(); + pSO7_UtilDlg->DoModal(); delete pSO7_UtilDlg; - delete m_pSO7_Proto; - m_pSO7_Proto=NULL; + if (m_pSO7_Proto) + { + delete m_pSO7_Proto; + m_pSO7_Proto=NULL; + } + if (m_pEF8000_Interface) + { + delete m_pEF8000_Interface; + m_pEF8000_Interface=NULL; + } } else if(((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER))->GetCheck()) { diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj index 755d84a..a8b6777 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj @@ -213,6 +213,7 @@ + @@ -267,6 +268,7 @@ + diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj.filters b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj.filters index 8a7bec1..de1d576 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj.filters +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj.filters @@ -127,6 +127,9 @@ Sources Files + + Sources Files + @@ -285,6 +288,9 @@ Header Files + + Header Files + diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h index f0abb82..52746d7 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -255,6 +255,7 @@ #define IDC_CHECK_SV2000E_MIRROR_VERTICALLY 1204 #define IDC_CHECK_CONTINUE_READ_LASER_VALUE 1204 #define IDC_CHECK_SO7_MANUAL_MACHINE_READ_POS_CONTINUE 1204 +#define IDC_CHECK_CONTINUOUS_READ_IO_STATUS 1204 #define IDC_RADIO_MACHINE_SevenOcean 1205 #define IDC_CHECK_CONTINUE_READ_LASER_LK_H_VALUE 1205 #define IDC_BUTTON_INIT_SO7USB 1206 @@ -347,6 +348,7 @@ #define IDC_EDIT_FRESHSPEED_X2 1275 #define IDC_EDIT_IMAGEDLL_2LASER_TOPZ2 1275 #define IDC_EDIT_MANUAL_MACHINE_MSG 1275 +#define IDC_BUTTON_SO7_READ_IN_PORT_STATUS 1275 #define IDC_EDIT_FRESHSPEED_X3 1276 #define IDC_EDIT_IMAGEDLL_2LASER_TOPZ3 1276 #define IDC_BUTTON_ZERO_SET 1277 @@ -745,16 +747,23 @@ #define IDC_RADIO_SO7_VERIFICATION_ALGORITHM 1651 #define IDC_BUTTON_SO7_MANUAL_MACHINEREAD_POS 1652 #define IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD4 1653 -#define IDC_RADIO1 1654 #define IDC_RADIO_CANVAS_SPEED_POSTION 1654 +#define IDC_MFCBUTTON_STATUS_IN_PORT1 1661 +#define IDC_MFCBUTTON_STATUS_IN_PORT2 1662 +#define IDC_MFCBUTTON_STATUS_IN_PORT3 1663 +#define IDC_MFCBUTTON_STATUS_IN_PORT4 1664 +#define IDC_MFCBUTTON_STATUS_IN_PORT5 1665 +#define IDC_RADIO_SPEED_GEAR5 1666 +#define IDC_EDIT_SO7_READ_IO_STATUS_ADDRESS 1667 +#define IDC_MFCBUTTON_STATUS_IN_PORT6 1670 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 168 +#define _APS_NEXT_RESOURCE_VALUE 169 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1655 +#define _APS_NEXT_CONTROL_VALUE 1668 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif 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 79ee1aecaa4a630839f7d6781b414f1b6a57605c..0a49c610b85e899239c0ef0a5614dae156b15404 100644 GIT binary patch delta 11004 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 B+gAVp delta 31636 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%0AN0j- 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