From 14b163897249dcd24592bedd42efce5e7f6cb812 Mon Sep 17 00:00:00 2001 From: TAO Cheng Date: Fri, 21 Jun 2013 14:22:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96SO7=20utility=E7=9A=84?= =?UTF-8?q?=E9=87=8A=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .hgignore | 4 + .../Msi/Hsi/Keyence/Keyence_Laser.cpp | 6 +- .../Interfac/Msi/Hsi/Keyence/Keyence_Laser.h | 2 +- .../Msi/Hsi/Keyence/Keyence_Laser_LK_H.cpp | 6 +- .../Msi/Hsi/Keyence/Keyence_Laser_LK_H.h | 2 +- .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp | 115 +++++++++++++++++- .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h | 11 ++ .../Msi/Hsi/SevenOcean/So7_Interface.cpp | 12 +- .../Msi/Hsi/SevenOcean/So7_Interface.h | 4 +- .../Tools/UsbUtility/Debug/UtilityDebug.Log | 27 ++++ .../LITE/Utility_Lite/Utility_Lite.vcxproj | 44 +++++++ .../Tools/UsbUtility/Release/UtilityDebug.Log | 13 ++ .../Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.cpp | 5 +- .../Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc | 17 +-- .../Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp | 109 +++++++++++++++-- .../Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h | 11 +- .../Tools/UsbUtility/UsbUtil/So7_Option.cpp | 14 ++- .../Tools/UsbUtility/UsbUtil/Usb_Util.vcxproj | 100 ++++++++++++++- .../UsbUtility/UsbUtil/Videocard_SDK3000.cpp | 11 +- .../UsbUtility/UsbUtil/Videocard_SDK3000.h | 1 - .../UsbUtility/UsbUtil/Videocard_SV2000E.cpp | 38 +++++- .../UsbUtility/UsbUtil/Videocard_SV2000E.h | 1 - .../UsbUtility/UsbUtil/Videocard_TC4000.cpp | 20 ++- .../Hsi/Tools/UsbUtility/UsbUtil/resource.h | 1 + .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.sln | 9 +- .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo | Bin 2355712 -> 2355712 bytes 26 files changed, 529 insertions(+), 54 deletions(-) diff --git a/.hgignore b/.hgignore index be7c713..b5c0cec 100644 --- a/.hgignore +++ b/.hgignore @@ -26,3 +26,7 @@ PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/LITE/Utility_Lite/Release *.txt *.db *.lib +PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/ +PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/ +PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/ReleaseSO7/ +PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/ReleaseSO7/ diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser.cpp index 7482e11..70e77ba 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser.cpp @@ -27,7 +27,7 @@ void CKeyence_Laser::KeyenceLaserInit(void) { if (!m_hLkif) { - m_hLkif=LoadLibrary(_T("LkIF.dll")); + m_hLkif=(HMODULE)LoadLibrary(GetAppPath()+_T("\\LkIF.dll")); if(m_hLkif) { m_pGetCalcData=(pLKIF_GetCalcData)GetProcAddress(m_hLkif,"LKIF_GetCalcData"); @@ -39,6 +39,10 @@ void CKeyence_Laser::KeyenceLaserInit(void) m_pSetDataStorage=(pLKIF_SetDataStorage)GetProcAddress(m_hLkif,"LKIF_SetDataStorage"); m_pSetProgramNo=(pLKIF_SETPROGRAMNO)GetProcAddress(m_hLkif,"LKIF_SetProgramNo"); } + else + { + MessageBox(NULL, _T("Load LkIF.dll failed!"), _T("Message"), MB_OK); + } } } //============================================== diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser.h b/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser.h index c237602..77c4cb0 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser.h @@ -33,7 +33,7 @@ protected: int m_iSetOutNo; int m_NeedStorageDataNumber; LKIF_STORAGECYCLE m_StorageCycle; - HINSTANCE m_hLkif; + HMODULE m_hLkif; public: CKeyence_Laser(); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser_LK_H.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser_LK_H.cpp index ea11ba5..3c73ee3 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser_LK_H.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser_LK_H.cpp @@ -30,7 +30,7 @@ void CKeyence_Laser_LK_H::KeyenceLaserInit(void) { if (!m_hLkif) { - m_hLkif=LoadLibrary(_T("LKIF2.dll")); + m_hLkif=(HMODULE)LoadLibrary(GetAppPath()+_T("\\LKIF2.dll")); if(m_hLkif) { m_pGetCalcDataMulti=(pLKIF2_GetCalcDataMulti)GetProcAddress(m_hLkif,"LKIF2_GetCalcDataMulti"); @@ -56,6 +56,10 @@ void CKeyence_Laser_LK_H::KeyenceLaserInit(void) m_result = m_pOpenDeviceUsb(); } + else + { + MessageBox(NULL, _T("Load LKIF2.dll failed!"), _T("Message"), MB_OK); + } } } //============================================== diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser_LK_H.h b/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser_LK_H.h index 36a673e..e2c9df4 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser_LK_H.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Keyence/Keyence_Laser_LK_H.h @@ -45,7 +45,7 @@ protected: int m_NumberOfUsedOUT; int m_NeedStorageDataNumber; LKIF_STORAGECYCLE m_StorageCycle; - HINSTANCE m_hLkif; + HMODULE m_hLkif; RC m_result; public: diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp index 89f0515..3fdad0f 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp @@ -222,7 +222,15 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP) case CT_READ_IO_DAT: _process_SO7_CMD_READ_INPUT_PORT_STATUS(); break; - + case CT_READ_SEC_REALX: + _process_SO7_CMD_READ_ZSIGNAL_POS_X(); + break; + case CT_READ_SEC_REALY: + _process_SO7_CMD_READ_ZSIGNAL_POS_Y(); + break; + case CT_READ_SEC_REALZ: + _process_SO7_CMD_READ_ZSIGNAL_POS_Z(); + 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]); @@ -434,14 +442,18 @@ CSO7_Proto::CSO7_Proto() ep_buff[i]._hProtoPending = false; ep_buff[i]._event = NULL; }; - g_machine.x._Move_Speed_Gear =3; - g_machine.y._Move_Speed_Gear =3; - g_machine.z._Move_Speed_Gear =3; + g_machine.x._Move_Speed_Gear =2; + g_machine.y._Move_Speed_Gear =2; + g_machine.z._Move_Speed_Gear =2; g_machine.zm._Move_Speed_Gear =2; g_machine.x._pos_fixed._long_ =0; g_machine.y._pos_fixed._long_ =0; g_machine.z._pos_fixed._long_ =0; g_machine.zm._pos_fixed._long_ =0; + g_machine.x._ZSignal_pos._long_=0; + g_machine.y._ZSignal_pos._long_=0; + g_machine.z._ZSignal_pos._long_=0; + g_machine.x._d_cur_pos_ = 0; g_machine.y._d_cur_pos_ = 0; g_machine.z._d_cur_pos_ = 0; @@ -3980,7 +3992,63 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_INPUT_PORT_STATUS(char Addr ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_X() +{ + 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_SEC_REALX; + *(ep_buff[EP_02_CMD_IDX]._buffer+2)=0; + + ep_buff[EP_02_CMD_IDX]._size = 0x03; + ep_buff[EP_82_DATA_IDX]._size = 0x03; + + g_hEP02_Thread_State=THREAD_RUNNING_STATE1; + g_hEP8x_Thread_State=THREAD_RUNNING_STATE2; + _do_single_threaded_usb_comm(EP_02_CMD_IDX); + ReleaseMutex(g_hEP02_Serial_Mutex); + return SSI_STATUS_MOTION_NORMAL; +} +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Y() +{ + 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_SEC_REALY; + *(ep_buff[EP_02_CMD_IDX]._buffer+2)=0; + + ep_buff[EP_02_CMD_IDX]._size = 0x03; + ep_buff[EP_82_DATA_IDX]._size = 0x03; + + g_hEP02_Thread_State=THREAD_RUNNING_STATE1; + g_hEP8x_Thread_State=THREAD_RUNNING_STATE2; + _do_single_threaded_usb_comm(EP_02_CMD_IDX); + ReleaseMutex(g_hEP02_Serial_Mutex); + return SSI_STATUS_MOTION_NORMAL; +} +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Z() +{ + 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_SEC_REALZ; + *(ep_buff[EP_02_CMD_IDX]._buffer+2)=0; + + ep_buff[EP_02_CMD_IDX]._size = 0x03; + ep_buff[EP_82_DATA_IDX]._size = 0x03; + + g_hEP02_Thread_State=THREAD_RUNNING_STATE1; + g_hEP8x_Thread_State=THREAD_RUNNING_STATE2; + _do_single_threaded_usb_comm(EP_02_CMD_IDX); + ReleaseMutex(g_hEP02_Serial_Mutex); + return SSI_STATUS_MOTION_NORMAL; +} //============================================================== SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_X() { @@ -4240,4 +4308,43 @@ 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; +} +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_ZSIGNAL_POS_X() +{ + g_machine.x._ZSignal_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer); + g_machine.x._ZSignal_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+1); + g_machine.x._ZSignal_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+2); + g_machine.x._ZSignal_pos._char_[3] = 0; + + if (g_machine.x._ZSignal_pos._long_ > 8388608) + g_machine.x._ZSignal_pos._long_=g_machine.x._ZSignal_pos._long_-16777216; + + return SSI_STATUS_MOTION_NORMAL; +} +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_ZSIGNAL_POS_Y() +{ + g_machine.y._ZSignal_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer); + g_machine.y._ZSignal_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+1); + g_machine.y._ZSignal_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+2); + g_machine.y._ZSignal_pos._char_[3] = 0; + + if (g_machine.y._ZSignal_pos._long_ > 8388608) + g_machine.y._ZSignal_pos._long_=g_machine.y._ZSignal_pos._long_-16777216; + + return SSI_STATUS_MOTION_NORMAL; +} +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_ZSIGNAL_POS_Z() +{ + g_machine.z._ZSignal_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer); + g_machine.z._ZSignal_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+1); + g_machine.z._ZSignal_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+2); + g_machine.z._ZSignal_pos._char_[3] = 0; + + if (g_machine.z._ZSignal_pos._long_ > 8388608) + g_machine.z._ZSignal_pos._long_=g_machine.z._ZSignal_pos._long_-16777216; + + 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 4045d01..19b40c7 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h @@ -83,6 +83,11 @@ typedef struct s_so7_axis // axis parameters long _long_; char _char_[4]; }_scale_pos; + union + { + long _long_; + char _char_[4]; + }_ZSignal_pos; double _d_cur_pos_; long _scale_probe; double _dSet_Zero_Pos; @@ -399,6 +404,9 @@ public: 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); + SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_ZSIGNAL_POS_X(); + SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Y(); + SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Z(); static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_X(); static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_Y(); @@ -429,6 +437,9 @@ public: 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(); + static SSI_STATUS_MOTION _process_SO7_CMD_READ_ZSIGNAL_POS_X(); + static SSI_STATUS_MOTION _process_SO7_CMD_READ_ZSIGNAL_POS_Y(); + static SSI_STATUS_MOTION _process_SO7_CMD_READ_ZSIGNAL_POS_Z(); }; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_Interface.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_Interface.cpp index c65e592..3273a2c 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_Interface.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_Interface.cpp @@ -32,7 +32,7 @@ CSo7_Interface::~CSo7_Interface() //======================================== void CSo7_Interface::InitDll(void) { - m_hImageDLL=LoadLibrary(_T("Image.dll")); + m_hImageDLL=(HMODULE)LoadLibrary(GetAppPath()+_T("\\Image.dll")); if(m_hImageDLL) { Pro_cmd=(PRO_CMD)GetProcAddress(m_hImageDLL,"Pro_Cmd"); @@ -44,12 +44,20 @@ void CSo7_Interface::InitDll(void) Pro_cmd(VINIT_DLL,(LPARAM)&Image_Info); Pro_cmd(MINIT_USB,(LPARAM)&Image_Info); } + else + { + MessageBox(NULL, _T("Load Image.dll failed!"), _T("Message"), MB_OK); + } //===================================== - m_hFitDLL=LoadLibrary(_T("FitDll.dll")); + m_hFitDLL=(HMODULE)LoadLibrary(GetAppPath()+_T("\\FitDll.dll")); if(m_hFitDLL) { g_FitFace_PCD=(FITTING_SURFACE_PCD)GetProcAddress(m_hFitDLL,"FaceFit"); } + else + { + MessageBox(NULL, _T("Load FitDll.dll failed!"), _T("Message"), MB_OK); + } } //======================================== void CSo7_Interface::StartStoreData(void) diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_Interface.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_Interface.h index e5af184..7faf2e2 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_Interface.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_Interface.h @@ -19,8 +19,8 @@ typedef int (_cdecl*FITTING_SURFACE_PCD)(MY3DPoint* pArr,int n, double* Coe, dou class CSo7_Interface { protected: - HINSTANCE m_hImageDLL; - HINSTANCE m_hFitDLL; + HMODULE m_hImageDLL; + HMODULE m_hFitDLL; Dev_Info Image_Info; public: 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 6c696cc..22188a1 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -1435,3 +1435,30 @@ 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. +Destruct Cso7_Proto. +Construct Cso7_Proto. +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/LITE/Utility_Lite/Utility_Lite.vcxproj b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/LITE/Utility_Lite/Utility_Lite.vcxproj index d9a4854..fd24e24 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/LITE/Utility_Lite/Utility_Lite.vcxproj +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/LITE/Utility_Lite/Utility_Lite.vcxproj @@ -5,6 +5,10 @@ Debug Win32 + + ReleaseSO7 + Win32 + Release Win32 @@ -29,6 +33,13 @@ Unicode Dynamic + + Application + false + true + Unicode + Dynamic + @@ -38,6 +49,9 @@ + + + true @@ -45,6 +59,9 @@ false + + false + Use @@ -93,6 +110,32 @@ $(IntDir);%(AdditionalIncludeDirectories) + + + Level3 + Use + MaxSpeed + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + + + Windows + true + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + @@ -109,6 +152,7 @@ Create Create + Create 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 ed79092..2976218 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log @@ -94,3 +94,16 @@ 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. +Destruct Cso7_Proto. +Construct Cso7_Proto. +Destruct Cso7_Proto. diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.cpp index a5c778a..80b29fd 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.cpp @@ -21,9 +21,6 @@ #include "afxdialogex.h" #include "So7_Option.h" - -#define _ONLY_USE_FOR_SO7 - #ifdef _DEBUG #define new DEBUG_NEW #endif @@ -74,7 +71,7 @@ BOOL CMv_UtilApp::InitInstance() // such as the name of your company or organization SetRegistryKey(_T("Local AppWizard-Generated Applications")); -#ifdef _ONLY_USE_FOR_SO7 +#ifdef _RELEASE_SO7_CONTROLER_ONLY CSo7_Option pSo7_Option; m_pMainWnd = &pSo7_Option; INT_PTR nResponse = pSo7_Option.DoModal(); 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 68e6d82..655126e 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 @@ -68,8 +68,8 @@ BEGIN 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,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 + PUSHBUTTON "To Get Laser",IDC_BUTTON_GET_LASER,98,235,61,14 + PUSHBUTTON "Home V",IDC_BUTTON_RESET_V,240,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 @@ -111,7 +111,7 @@ BEGIN EDITTEXT IDC_EDIT_ZM_POSITION_58,103,365,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP LTEXT "Scale Pulse",IDC_STATIC,40,309,36,8 LTEXT "mm",IDC_STATIC,123,310,12,8 - EDITTEXT IDC_EDIT_STATUS,15,404,385,56,ES_MULTILINE | ES_AUTOHSCROLL,WS_EX_CLIENTEDGE + EDITTEXT IDC_EDIT_STATUS,15,404,385,56,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL LTEXT "ms",IDC_STATIC_SEC,212,384,16,9 EDITTEXT IDC_EDIT_UPDATE_FREQ,183,383,25,13,ES_AUTOHSCROLL | ES_READONLY GROUPBOX "Scale Display",IDC_STATIC,15,264,224,136 @@ -120,7 +120,7 @@ BEGIN EDITTEXT IDC_EDIT_Y_POSITION_59,174,336,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP EDITTEXT IDC_EDIT_Z_POSITION_59,174,350,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP EDITTEXT IDC_EDIT_ZM_POSITION_59,174,364,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - LTEXT "Probe",IDC_STATIC,189,310,20,8 + LTEXT "Z Signal",IDC_STATIC,189,310,26,8 LTEXT "Pos Update Frequency",IDC_STATIC,104,384,74,8 LTEXT "Spare1",IDC_STATIC,232,112,24,8 CTEXT "X",IDC_STATIC,70,273,8,8 @@ -135,16 +135,17 @@ BEGIN 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 + PUSHBUTTON "Read IO Status",IDC_BUTTON_SO7_READ_IN_PORT_STATUS,311,235,61,14 + CONTROL "Continuous",IDC_CHECK_CONTINUOUS_READ_IO_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,320,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 + EDITTEXT IDC_EDIT_SO7_READ_IO_STATUS_ADDRESS,347,371,40,14,ES_AUTOHSCROLL | NOT WS_VISIBLE + LTEXT "Addr",IDC_STATIC,327,372,16,8,NOT WS_VISIBLE + PUSHBUTTON "Test Z Signal",IDC_BUTTON_SO7_TEST_Z_SIGNAL,169,235,61,14 END IDD_S07_UTIL_SEND_PARAMETER DIALOGEX 0, 0, 753, 481 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 a01accf..e2d951e 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 @@ -33,6 +33,12 @@ IMPLEMENT_DYNAMIC(CSO7_UtilDlg, CDialog) CSO7_UtilDlg::CSO7_UtilDlg(CWnd* pParent /*=NULL*/) : CDialog(CSO7_UtilDlg::IDD, pParent) { + m_TestZSignalNow=FALSE; + m_BeginReadIO=FALSE; + m_ReadIOStatusAddr=4; + m_ZsignalPosX=0; + m_ZsignalPosY=0; + m_ZsignalPosZ=0; } @@ -71,6 +77,9 @@ void CSO7_UtilDlg::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_ZOOM_IN, m_Button_MoveV_Zoom_In); DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_ZOOM_OUT, m_Button_MoveV_Zoom_Out); + DDX_Control(pDX, IDC_EDIT_STATUS, m_edMSG); + + } @@ -118,6 +127,7 @@ BEGIN_MESSAGE_MAP(CSO7_UtilDlg, CDialog) 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) + ON_BN_CLICKED(IDC_BUTTON_SO7_TEST_Z_SIGNAL, &CSO7_UtilDlg::OnBnClickedButtonSo7TestZSignal) END_MESSAGE_MAP() @@ -233,8 +243,6 @@ BOOL CSO7_UtilDlg::OnInitDialog() 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); @@ -301,7 +309,7 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() m_pSO7_Proto->_start_machine(); - m_OutMessage = _T("Machine Started."); + m_OutMessage = _T("Machine Started.\r\n"); GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage); ((CButton*)GetDlgItem(IDC_BUTTON_PROBE_ONOFF))->SetWindowTextW(_T("当前探头:激光")); @@ -585,7 +593,7 @@ void CSO7_UtilDlg::OnBnClickedButtonSo7GetResetFlag() CString csOutMessage; csOutMessage.Format(_T("%d"),m_pSO7_Proto->g_machine.Sys_Reset_Flag); m_OutMessage = _T("Sys_Reset_Flag : ")+csOutMessage; - GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage); + OutputWithScroll(m_OutMessage,m_edMSG); } @@ -774,7 +782,8 @@ void CSO7_UtilDlg::OnBnClickedButtonGetFixtureFlag() CString csOutMessage; csOutMessage.Format(_T("%d"),m_pSO7_Proto->g_machine.cFixtureFlag); m_OutMessage = _T("Fixture_Flag : ")+csOutMessage; - GetDlgItem(IDC_EDIT_STATUS)->SetWindowText(m_OutMessage); + OutputWithScroll(m_OutMessage,m_edMSG); + } @@ -986,6 +995,67 @@ void CSO7_UtilDlg::OnBnClickedButtonSetupSo7config() } SetTimer(1,150,NULL); } + +//================================================================================================ +void CSO7_UtilDlg::OnBnClickedButtonSo7TestZSignal() +{ + if (m_TestZSignalNow) + { + m_TestZSignalNow=FALSE; + ((CButton*)GetDlgItem(IDC_BUTTON_SO7_TEST_Z_SIGNAL))->SetWindowTextW(_T("Test Z Signal")); + } + else + { + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_X(); + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Y(); + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Z(); + m_ZsignalPosX=m_pSO7_Proto->g_machine.x._ZSignal_pos._long_; + m_ZsignalPosY=m_pSO7_Proto->g_machine.y._ZSignal_pos._long_; + m_ZsignalPosZ=m_pSO7_Proto->g_machine.z._ZSignal_pos._long_; + m_TestZSignalNow=TRUE; + ((CButton*)GetDlgItem(IDC_BUTTON_SO7_TEST_Z_SIGNAL))->SetWindowTextW(_T("STOP")); + } +} +void CSO7_UtilDlg::TestZSignal() +{ + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_X(); + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Y(); + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Z(); + + m_X_Pos.Format(_T("%8ld"),(m_pSO7_Proto->g_machine.x._ZSignal_pos._long_)); + GetDlgItem(IDC_EDIT_X_POSITION_59)->SetWindowText(m_X_Pos); + m_Y_Pos.Format(_T("%8ld"),(m_pSO7_Proto->g_machine.y._ZSignal_pos._long_)); + GetDlgItem(IDC_EDIT_Y_POSITION_59)->SetWindowText(m_Y_Pos); + m_Z_Pos.Format(_T("%8ld"),(m_pSO7_Proto->g_machine.z._ZSignal_pos._long_)); + GetDlgItem(IDC_EDIT_Z_POSITION_59)->SetWindowText(m_Z_Pos); + + double dTmp1(0.0),dTmp2(0.0); + if (labs(m_pSO7_Proto->g_machine.x._ZSignal_pos._long_-m_ZsignalPosX)>5) + { + dTmp1=m_pSO7_Proto->ScaleToMM(m_ZsignalPosX,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution); + dTmp2=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.x._ZSignal_pos._long_,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution); + m_OutMessage.Format(_T("[ZSignal-X] From: %-3.4f To: %-3.4f Dis: %-3.4f"),dTmp1,dTmp2,dTmp2-dTmp1); + OutputWithScroll(m_OutMessage,m_edMSG); + } + if (labs(m_pSO7_Proto->g_machine.y._ZSignal_pos._long_-m_ZsignalPosY)>5) + { + dTmp1=m_pSO7_Proto->ScaleToMM(m_ZsignalPosY,m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution); + dTmp2=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.y._ZSignal_pos._long_,m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution); + m_OutMessage.Format(_T("[ZSignal-Y] From: %-3.4f To: %-3.4f Dis: %-3.4f"),dTmp1,dTmp2,dTmp2-dTmp1); + OutputWithScroll(m_OutMessage,m_edMSG); + } + if (labs(m_pSO7_Proto->g_machine.z._ZSignal_pos._long_-m_ZsignalPosZ)>5) + { + dTmp1=m_pSO7_Proto->ScaleToMM(m_ZsignalPosZ,m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution); + dTmp2=m_pSO7_Proto->ScaleToMM(m_pSO7_Proto->g_machine.z._ZSignal_pos._long_,m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution); + m_OutMessage.Format(_T("[ZSignal-Z] From: %-3.4f To: %-3.4f Dis: %-3.4f"),dTmp1,dTmp2,dTmp2-dTmp1); + OutputWithScroll(m_OutMessage,m_edMSG); + } + m_ZsignalPosX=m_pSO7_Proto->g_machine.x._ZSignal_pos._long_; + m_ZsignalPosY=m_pSO7_Proto->g_machine.y._ZSignal_pos._long_; + m_ZsignalPosZ=m_pSO7_Proto->g_machine.z._ZSignal_pos._long_; + +} //================================================================================================ void CSO7_UtilDlg::OnEnKillfocusEditSo7ReadIoStatusAddress() { @@ -1019,7 +1089,8 @@ void CSO7_UtilDlg::OnBnClickedButtonSo7ReadInPortStatus() ((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); + OutputWithScroll(m_OutMessage,m_edMSG); + } } @@ -1110,6 +1181,10 @@ void CSO7_UtilDlg::OnTimer(UINT_PTR nIDEvent) { UpdateIOStatus(); } + if (m_TestZSignalNow) + { + TestZSignal(); + } m_pSO7_Proto->_send_cmd_SO7_CMD_READ_AXIS_XYZ(); m_pSO7_Proto->_send_cmd_SO7_CMD_READ_V_DATA(); @@ -1177,8 +1252,24 @@ BOOL CSO7_UtilDlg::PreTranslateMessage(MSG* pMsg) return CDialog::PreTranslateMessage(pMsg); } +//===================================================================================== +//Print message on edit control +void CSO7_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); +} \ No newline at end of file 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 e6dead1..a610849 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 @@ -15,7 +15,6 @@ public: enum { IDD = IDD_SO7_UTIL_DIALOG }; protected: - CButton ccc; virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() @@ -43,7 +42,7 @@ public: CString m_cs_YScaleCoeff; CString m_cs_ZScaleCoeff; - + CEdit m_edMSG; CProcessButton m_Button_MoveX_Left; CProcessButton m_Button_MoveX_Right; CProcessButton m_Button_MoveY_Front; @@ -54,7 +53,14 @@ public: CProcessButton m_Button_MoveV_Zoom_Out; char m_ReadIOStatusAddr; BOOL m_BeginReadIO; + BOOL m_TestZSignalNow; + long m_ZsignalPosX; + long m_ZsignalPosY; + long m_ZsignalPosZ; + void UpdateIOStatus(); + void TestZSignal(); + void OutputWithScroll(const CString &strNewText,CEdit &edtOutput); afx_msg void OnBnClickedButtonInitSo7usb(); afx_msg void OnBnClickedButtonTermSo7usb(); afx_msg void OnBnClickedButtonStartSo7machine(); @@ -105,4 +111,5 @@ public: afx_msg void OnBnClickedButtonSo7ReadInPortStatus(); afx_msg void OnBnClickedRadioSpeedGear5(); afx_msg void OnEnKillfocusEditSo7ReadIoStatusAddress(); + afx_msg void OnBnClickedButtonSo7TestZSignal(); }; 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 0a2d008..d5c5910 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 @@ -9,6 +9,7 @@ #include "..\..\..\SevenOcean\SO7_Proto.h" #include "ProcessButton.h" +#ifdef _RELEASE_FULL_VERSION #include "VideoCardDefine.h" #include "..\..\..\Videocard\SDK3000\sdk3000_7130.h" #include "Videocard_SDK3000.h" @@ -16,9 +17,9 @@ #include "..\..\..\Videocard\SV2000E\DXMediaCap.h" #include "..\..\..\Videocard\SV2000E\dataAcq.h" #include "Videocard_SV2000E.h" - #include "..\..\..\Videocard\TC4000\Sa7134Capture.h" #include "Videocard_TC4000.h" +#endif //_RELEASE_FULL_VERSION #include "SO7_UtilDlg.h" #include "..\..\..\Keyence\Keyence_Laser.h" @@ -37,7 +38,6 @@ #include "So7_Option.h" #include "afxdialogex.h" -#define _RELEASE_ONLY_ONE_FUNCTION //CSerial* m_pSO7_Serial=NULL; CPSerial* m_pSO7_PCDSerial=NULL; @@ -110,7 +110,7 @@ BOOL CSo7_Option::OnInitDialog() ((CButton *)GetDlgItem(IDC_RADIO__SO7_RS232))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_SO7_VERIFICATION_ALGORITHM))->SetCheck(FALSE); -#ifdef _RELEASE_ONLY_ONE_FUNCTION +#ifdef _RELEASE_SO7_CONTROLER_ONLY SetTimer(1,50,NULL); #endif return TRUE; // return TRUE unless you set the focus to a control @@ -178,21 +178,27 @@ void CSo7_Option::OnBnClickedOk() } else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->GetCheck()) { +#ifdef _RELEASE_FULL_VERSION CVideocard_SDK3000* pVideocard_SDK3000=new CVideocard_SDK3000(); pVideocard_SDK3000->DoModal(); delete pVideocard_SDK3000; +#endif //_RELEASE_FULL_VERSION } else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV2000E))->GetCheck()) { +#ifdef _RELEASE_FULL_VERSION CVideocard_SV2000E* pVideocard_SV2000E=new CVideocard_SV2000E(); pVideocard_SV2000E->DoModal(); delete pVideocard_SV2000E; +#endif //_RELEASE_FULL_VERSION } else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_TC4000))->GetCheck()) { +#ifdef _RELEASE_FULL_VERSION CVideocard_TC4000* pVideocard_TC4000=new CVideocard_TC4000(); pVideocard_TC4000->DoModal(); delete pVideocard_TC4000; +#endif //_RELEASE_FULL_VERSION } else if(((CButton *)GetDlgItem(IDC_RADIO_TEST_IMAGE_DLL))->GetCheck()) { @@ -243,7 +249,7 @@ void CSo7_Option::OnBnClickedOk() } -#ifdef _RELEASE_ONLY_ONE_FUNCTION +#ifdef _RELEASE_SO7_CONTROLER_ONLY OnBnClickedCancel(); #endif } 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 a8b6777..4e2bdd4 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 @@ -9,6 +9,14 @@ Debug x64 + + ReleaseSO7 + Win32 + + + ReleaseSO7 + x64 + Release Win32 @@ -39,12 +47,24 @@ Unicode true + + Application + Static + Unicode + true + Application Dynamic Unicode true + + Application + Dynamic + Unicode + true + Application Dynamic @@ -61,9 +81,15 @@ + + + + + + @@ -80,11 +106,17 @@ true true $(SolutionDir)$(Configuration)\ + $(SolutionDir)$(Configuration)\ $(SolutionDir)$(Configuration)\ + $(SolutionDir)$(Configuration)\ $(Configuration)\ + $(Configuration)\ $(Configuration)\ + $(Configuration)\ false + false false + false @@ -94,7 +126,7 @@ Disabled - WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;_RELEASE_FULL_VERSION;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL @@ -150,7 +182,7 @@ MaxSpeed true - WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_RELEASE_FULL_VERSION;%(PreprocessorDefinitions) false MultiThreadedDLL true @@ -173,6 +205,38 @@ ..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;%(AdditionalDependencies) + + + NDEBUG;%(PreprocessorDefinitions) + false + true + + + MaxSpeed + true + WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_RELEASE_SO7_CONTROLER_ONLY;%(PreprocessorDefinitions) + false + MultiThreaded + true + Use + Level4 + ProgramDatabase + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + $(IntDir);%(AdditionalIncludeDirectories) + + + true + Windows + true + true + MachineX86 + ..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;%(AdditionalDependencies) + + NDEBUG;%(PreprocessorDefinitions) @@ -203,6 +267,36 @@ ..\..\LibUsb_Win\Lib\Msvc\libusb.lib;%(AdditionalDependencies) + + + NDEBUG;%(PreprocessorDefinitions) + false + + + MaxSpeed + true + WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + false + MultiThreadedDLL + true + Use + Level4 + ProgramDatabase + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + $(IntDir);%(AdditionalIncludeDirectories) + + + true + Windows + true + true + ..\..\LibUsb_Win\Lib\Msvc\libusb.lib;%(AdditionalDependencies) + + @@ -249,7 +343,9 @@ Create Create Create + Create Create + Create diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SDK3000.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SDK3000.cpp index bea4d4a..1c30948 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SDK3000.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SDK3000.cpp @@ -82,16 +82,19 @@ BOOL CVideocard_SDK3000::OnInitDialog() //====================================== void CVideocard_SDK3000::OnBnClickedOk() { +#ifdef _RELEASE_FULL_VERSION 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); +#endif //_RELEASE_FULL_VERSION } //========================================== void CVideocard_SDK3000::OnBnClickedCancel() { +#ifdef _RELEASE_FULL_VERSION KillTimer(1); if(m_hCapThread) { @@ -103,6 +106,7 @@ void CVideocard_SDK3000::OnBnClickedCancel() g_hEventExt = NULL; } UnloadVideocard(); +#endif //_RELEASE_FULL_VERSION CDialog::OnCancel(); } //============================================ @@ -152,7 +156,8 @@ void CVideocard_SDK3000::OnBnClickedButtonSavePicture() //======================================= BOOL CVideocard_SDK3000::LoadVideocard() { - if ( VCAInitSdk() != S_OK ) + #ifdef _RELEASE_FULL_VERSION + if ( VCAInitSdk() != S_OK ) { ::AfxMessageBox(_T("SDK3000卡驱动初始化失败!")); return FALSE; @@ -219,16 +224,18 @@ BOOL CVideocard_SDK3000::LoadVideocard() VCASetVideoPropertyValue( m_dwCard, VideoProperty_Sharpness, SharpnessDefault - 5); - +#endif //_RELEASE_FULL_VERSION return TRUE; } //======================================= BOOL CVideocard_SDK3000::UnloadVideocard() { +#ifdef _RELEASE_FULL_VERSION VCAEnableCapSourceStream(m_dwCard , FALSE, Interlaced_Field, SDK3000PrcCapSourceStream); VCADisConnectDevice(m_dwCard); VCAUnInitSdk(); +#endif //_RELEASE_FULL_VERSION if ( m_pDev ) { diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SDK3000.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SDK3000.h index 1932624..393866e 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SDK3000.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SDK3000.h @@ -1,5 +1,4 @@ #pragma once - typedef struct DEVICE_INFO { HWND hWnd; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SV2000E.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SV2000E.cpp index e9c1e7c..3679f2c 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SV2000E.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SV2000E.cpp @@ -98,18 +98,22 @@ BOOL CVideocard_SV2000E::OnInitDialog() //=================================================== void CVideocard_SV2000E::OnBnClickedOk() { +#ifdef _RELEASE_FULL_VERSION bInitSdk=DXInitialize(); LoadVideocard(); SetTimer(1,50,NULL); GetDlgItem(IDOK)->EnableWindow(false); +#endif //_RELEASE_FULL_VERSION } //=================================================== void CVideocard_SV2000E::OnBnClickedCancel() { +#ifdef _RELEASE_FULL_VERSION KillTimer(1); UnloadVideocard(m_device); UnloadVideocard(m_device_Nav); DXUninitialize(); +#endif //_RELEASE_FULL_VERSION CDialog::OnCancel(); } //=================================================== @@ -157,6 +161,7 @@ void CVideocard_SV2000E::OnBnClickedButtonSv2000eSavefile() //=================================================== void CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel1() { +#ifdef _RELEASE_FULL_VERSION m_Channel=1; if (m_OpenDevNo==0) { @@ -176,11 +181,13 @@ void CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel1() UnloadVideocard(m_device_Nav); LoadVideocard(); } +#endif //_RELEASE_FULL_VERSION } //=================================================== void CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel2() { - m_Channel=2; + #ifdef _RELEASE_FULL_VERSION + m_Channel=2; if (m_OpenDevNo==0) { CloseDevice(m_device); @@ -199,10 +206,12 @@ void CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel2() UnloadVideocard(m_device_Nav); LoadVideocard(); } +#endif //_RELEASE_FULL_VERSION } //=================================================== void CVideocard_SV2000E::OnCbnSelchangeComboSv2000eSelectDevNumber() { +#ifdef _RELEASE_FULL_VERSION m_OpenDevNo=((CComboBox *)GetDlgItem(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER))->GetCurSel(); if (m_OpenDevNo==2)//both { @@ -216,10 +225,13 @@ void CVideocard_SV2000E::OnCbnSelchangeComboSv2000eSelectDevNumber() CloseDevice(m_device_Nav); OpenDevice(m_OpenDevNo,m_device); } +#endif //_RELEASE_FULL_VERSION } //======================================= BOOL CVideocard_SV2000E::LoadVideocard() { + BOOL rStatus(FALSE); +#ifdef _RELEASE_FULL_VERSION DEVICE_TAG devTags[100]; unsigned num = 100; DXEnumVideoCodecs(devTags, num); @@ -246,15 +258,21 @@ BOOL CVideocard_SV2000E::LoadVideocard() if((bInitSdk!=0)||(m_nDevNum<1)||(m_device==NULL)) { ::AfxMessageBox(_T("SV2000E卡初始化失败!")); - return FALSE; + rStatus=FALSE; + } + else + { + rStatus=TRUE; } - return TRUE; +#endif //_RELEASE_FULL_VERSION + return rStatus; } //======================================= void CVideocard_SV2000E::OpenDevice(unsigned int _DevNo,device_handle &_OpenedDevice) { - _OpenedDevice= DXOpenDevice(_DevNo, NULL); + #ifdef _RELEASE_FULL_VERSION + _OpenedDevice= DXOpenDevice(_DevNo, NULL); unsigned standard(VideoStandard_PAL_D); unsigned colorspace(cs_yuy2);//cs_rgb24 @@ -286,6 +304,11 @@ void CVideocard_SV2000E::OpenDevice(unsigned int _DevNo,device_handle &_OpenedDe m_status=DXSetRawVideoCallback(_OpenedDevice, SVAPrcVidCapCallBackNav, this); m_status=DXStartRawVideoCallback(_OpenedDevice,SVAPrcVidCapCallBackNav,this); } +#else + UNREFERENCED_PARAMETER(_DevNo); + UNREFERENCED_PARAMETER(_OpenedDevice); + +#endif //_RELEASE_FULL_VERSION }; //======================================= @@ -296,6 +319,7 @@ void CVideocard_SV2000E::CloseDevice(device_handle _Device) //======================================= BOOL CVideocard_SV2000E::UnloadVideocard(device_handle _Device) { +#ifdef _RELEASE_FULL_VERSION if (_Device) { m_status=DXStopRawVideoCallback(_Device); @@ -303,11 +327,15 @@ BOOL CVideocard_SV2000E::UnloadVideocard(device_handle _Device) m_status=DXDeviceStop(_Device); DXCloseDevice(_Device); } +#else + UNREFERENCED_PARAMETER(_Device); +#endif //_RELEASE_FULL_VERSION return TRUE; } //================================================================ void CVideocard_SV2000E::OnEnKillfocusEdittc4000SetDeinterlace() { +#ifdef _RELEASE_FULL_VERSION CString StrTmp; ((CEdit*)GetDlgItem(IDC_EDITTC4000_SET_DEINTERLACE))->GetWindowText(StrTmp); USES_CONVERSION; @@ -328,6 +356,7 @@ void CVideocard_SV2000E::OnEnKillfocusEdittc4000SetDeinterlace() m_status=DXEnableDeinterlace(m_device,iDein); m_status=DXEnableDeinterlace(m_device_Nav,iDein); } +#endif //_RELEASE_FULL_VERSION } //================================================================ void CVideocard_SV2000E::ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *_pSrcData,ConvertColorType _type,BOOL _bMirror) @@ -618,4 +647,3 @@ unsigned CALLBACK SVAPrcVidCapCallBackNav(unsigned char* buffer, unsigned colorS return 0; }; - diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SV2000E.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SV2000E.h index e3ba4da..a8c685a 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SV2000E.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_SV2000E.h @@ -1,6 +1,5 @@ #pragma once - // CVideocard_SV2000E dialog unsigned CALLBACK SVAPrcVidCapCallBack(unsigned char* buffer, unsigned colorSpace, unsigned width, unsigned height, unsigned bytesWidth, void* context); unsigned CALLBACK SVAPrcVidCapCallBackNav(unsigned char* buffer, unsigned colorSpace, unsigned width, unsigned height, unsigned bytesWidth, void* context); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_TC4000.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_TC4000.cpp index dbe3c9e..c4a0188 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_TC4000.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Videocard_TC4000.cpp @@ -138,35 +138,43 @@ void CVideocard_TC4000::OnBnClickedCheckMirrorVertically() //========================================== void CVideocard_TC4000::OnBnClickedRadioTc4000Channel1() { +#ifdef _RELEASE_FULL_VERSION VCAStopVideoCapture(SwitchChannel); SwitchChannel=0; VCAStartVideoCapture(SwitchChannel,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,""); +#endif //_RELEASE_FULL_VERSION; } //========================================== void CVideocard_TC4000::OnBnClickedRadioTc4000Channel2() { +#ifdef _RELEASE_FULL_VERSION VCAStopVideoCapture(SwitchChannel); SwitchChannel=1; VCAStartVideoCapture(SwitchChannel,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,""); +#endif //_RELEASE_FULL_VERSION } //========================================== void CVideocard_TC4000::OnBnClickedRadioTc4000Channel3() { +#ifdef _RELEASE_FULL_VERSION VCAStopVideoCapture(SwitchChannel); SwitchChannel=2; VCAStartVideoCapture(SwitchChannel,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,""); +#endif //_RELEASE_FULL_VERSION } //========================================== void CVideocard_TC4000::OnBnClickedRadioTc4000Channel4() { +#ifdef _RELEASE_FULL_VERSION VCAStopVideoCapture(SwitchChannel); SwitchChannel=3; VCAStartVideoCapture(SwitchChannel,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,""); +#endif //_RELEASE_FULL_VERSION } @@ -193,7 +201,9 @@ void CVideocard_TC4000::OnBnClickedButtonSavePicture() //======================================= BOOL CVideocard_TC4000::LoadVideocard() { - HWND mHwnd=GetDlgItem(IDC_STATIC_TC4000_PICTURE)->GetSafeHwnd(); + BOOL rStatus(FALSE); + #ifdef _RELEASE_FULL_VERSION + HWND mHwnd=GetDlgItem(IDC_STATIC_TC4000_PICTURE)->GetSafeHwnd(); m_Status=VCAInitSdk(mHwnd, PCI_MEMORY_VIDEOMEMORY,0);//PCI_MEMORY_VIDEOMEMORY); if(m_Status) { @@ -217,23 +227,27 @@ BOOL CVideocard_TC4000::LoadVideocard() } VCAStartVideoCapture(0,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,""); - return TRUE; + rStatus=TRUE; } else { - return FALSE; + rStatus=FALSE; } +#endif //_RELEASE_FULL_VERSION + return rStatus; } //======================================= BOOL CVideocard_TC4000::UnloadVideocard() { +#ifdef _RELEASE_FULL_VERSION for(int i=0;iH$*}+lo2Iw2#9#U4M<)Hao{sv zZz&*=w+zK)QVY@Ca?KQ7YyI0Ya;>c0EmCT?_AmeUJ2RuTwa@;?=Vi`!&Ubn5x1;6G zcCZjMk|fK5=GBT;hMvtO-I82&$@IvT0Na8fw7JXUD$_uaI<`PK z@A8_ANl7e{FYC1dMm2xi>kBQI_&0r~@OFc{W~ww<8ph-MJ`Rch_Ut3W6A;(@pzj6X zZz@B&52X#;2>-1|2k8f@o%PhLINsw<|t04cq8=?I0#eFGldy z1IF<;myD_oxd?@{e)7OkQo58YfXJqrY;WBjd6O5rl6Fz}>ZtU`8SrT_&SB>5yV(zmpriK0CtX+Q+Qhp zO)rI$n3gJs^Y$kdI7<7EKQWT_EL`b>w=$Vqk2%CE;+B*~$6NWitN~bvEQ;$>M#{UT zWE?VE*}!+k2f!x2-Dl1TQxm{Iemr5ClBFSWx+R9X{q*3$11E4(;(U)M=#6-gLcb9N zBl)SsW<@;Vg-I6OI(oF9fd4b8%(s?q>IlT!1N7TK@RAremn1Ke(VDFUYkCoO?dVYj z=dg7v=vg9gi=`GCiS=`M{al}BpVT9+F5phndx-&HLaz1J9dMbmdiba|$ zNuB(Ar9a<0J&V z(YdrkC9k?aoA?-^Nubd|UNW$X8=`z52KVn|2jHpZ2Qxw2yO@+RPf8}3Cq+o}Y36u> z222<)bAEWPH&kF?wz2`+BEgOHu#$Vsd&$<7ski~}Y{|j68t~$#XBFNy_X@nPYDeJ= zC74?mDlAsQbJrn;&}pD8D+tA09=AFaR`P3G2J>T<>HPA1KR8H>O6YkwvQj8TBQh;+ zX_7q^Ntz10cBSD&-UUTxpdE$~IG9&>l_zD4I#G0i>3Y!9zK`A%-%uh+QydOsnH%G! z@1%0qRi02LOo8|j$o^XdmBIB&Y|2O3Wtgm5} zcx4{(E1*Kl+2=9bk`si%N5Q{2uJpXjJ2zESZ+eXzN?zyZjizSPmNpr$&tw6#gBPIL zi_Jju=PU%y^T3L2%&MZ3gH8WKc6YSa9c~jH!|f|8+hksCTrJEh6gzu?jvHzfUb^=* z98~2hFO!xwKj5H!ELSR$ilqYjm*832;iRe{`Czy9^~uK zQ|l+8*GRdX)(2x{EqR#JeE*r}`GmEen(ydiRbal&_?3ij~&5a;O@t@ zcs?E0^0+2Fc8!vYdF2@|8WJCP=jkxKm&vAc^XVA8z8`j~UQJs}IN4Q)WEBZ|9(Kwb zs#UK{IyVyD<1<^2kl(Aif2jJbqTw`M=+7=*`G$d;UO&m}&+OxEw=aTly@R>sTo5+s z8KKvv)#(a|oBe2oUE7NqdkAARGW&M4cxW!=uVchtlj+@_6 z;D!hQqxroVS=?w0YF>YNOi$etG&A(!wq1XA({kgHg=kvp8=_HY)32N^JehZ%b%R== z@4|vcYF5xHyKxxqgpoQ~Ss!vQcP^-W6mCtmv-&S}J(3*Jpq8fFU0TO^5n0GcC4t9g>?j9s)gl*C4snz2PV}c*9Ysr&EUGgmif!)_Q{iuMxFdAKITA=6Jz} zP;UFNH*{0**;u*oksF6jT#%*g!LT?MN`&ku1P_xo>~c!6oF23i!%IXI55~29AwUSN z3Qpm^KZ75(`-2wt(u!=f^nqYoumL{Q@TNO)n)S5upna>EiXQTDTPP%8BG%;~m3;1UmyXkCV`kBJ5<_(GW$fxEBHY zNQv$7Md*^YF&r3SZ=xfGE)(|Sm|hjbE<86)iAO!ca?Ri9^%c_NszxIy{9ahBR``Ta zsCkl-fW#x8dje$UDP-B+)nkV7v$$QqX!1KevlbulWmrSe;gIFw#h9LHp zgqGgS!VCA9*$^NP1r}aA*A-op!BeC}o6r&~SQAT9z}pj87*9K((~PCFPY7gr8v0;c z9Px3VDz|c9=0$4ysf4wq#GQvJ)<8V|B%C74)S`JLgkVPu9BeVcTn1sb+(g&|xG!Dy z!P?=Z0j(;#gu?Uid@rn=48>>~OY#!@M{xoXwS$NnfrWK25`P#Cp4_;t1+zv&7{w}& zb&DKGrwF9;HY&7nGND*YIZ%m+BU;o?f&grv0Iy->1lWhwT&Jm*~5x z=64QFOa(WzOoqL9V-o3Xt*}T{%kau1+U>>^h=DDXMJ>hCQwY)eG!lSkeT*GHYZ`dM z`>Nh?^X>q&K1D>n&SBFY)isjr3+T9dJJp@7Uf_Xe(}5CvEJ>ALAfEZNPbA)Ydnf9R zvL0tmCe)2HK&d|ZIye6*nAYn_$sA$VxC5flG99!wuW678IO#Naqx&?XzMT)*b_UZj z!4JMdNRYpVRFSs+2~F8>f$~ui7u2|-y-Mh;mk`>aNJIiXT4%y)ypu(gZ&4j~;Y!sD zVn-HHB7DhKo_Z(%)3QLzy^hy9uu7(F8tewrHUk29sfB|0x8O?BJB3v_@QU5nJ9PxD zIiM!BcSJf-s0zOwU4_3s0L*(Rv9nofX1m zyyL~DWBXFyU`%^~dG-8|795o_q*y77YKdIigC#)ZbPNLvx~)>f5t<^g`S3C`OyN4(h+gb1FYlTJG}I2cAG z4#sn3L?U}0_CgJ@XqE5>L3n*D>`>Dj#HOtf#B-?o}i#VUQdthxAvy$5wo1H@twiYgh&r zPN(qcvn!bEdm6b>(b?K|fC(@?SQd_R6dh78T+*Xz2X15FWwuAuCZU+PlYER?oa`(D zQBtkOYc+5RR$|pGWg1V548ryrk{!9B9RefGUkJbJ9FCsh6k^ay=@Qh7Y6wxgpZI?- z49W$|Lp6V(i8YkHY!^XQlSm^G0{3%sdjN%{2{bNucr3$SGBJlX8Rn1<{{zp~K|=NX zXpERDyJ6x*@MDfd6OYz`H${I(N=(FiLMC3_4{K`bq01vq`y=ZZq51o&@ZSACFbp3N z$szqQw0_4F^glo;A@et()kQX9MH$l* z(sU^Ni$)lFY!#LqmwVY_-UBOByom>Dj$-Tj6S%oz^#&G%O&Opt1EA?0XoVAY6Qgs3 z)fX7|4w>P-C^II8QpHl~%k;LCI}i;X=4t)=KK;j8w||OSTXx^aH-3;HoLiH1w!@!7 zt;S<>%EUzr)>r*5@cx9o{$D}IJcgIN^xgJXawk~XXzh+6Cl@Px_FsG1 z_Wm6*dTAyTTjKCr#*#F`6HT#=l9?yn;qf4M|_VT(=1EyV~pp)Z8#(hF4&MLI- zhiE%3K8`44{ybIWmws@U!ge!HyBnN{Ker4_YzbngH6A;!jUC>!>)_iM8?d9L}| zh;6o+jbJ?vIL6{P$UgB#4(rnKl#Fm&*CG}t2RB}we_!`v;2-B$zki~2de55M#9^w@ ze{o@E0Xxi#=K0IxqpjeE^|_F;VUp=6o%!P*^E+a43y!X8d3 zAJ$%ET2}qDr9D=t{WE(IogtJv%lrI{u}8S$+M`qXE2a z@9k!Tpm85lTGq1F&?CbkA@SSWE|?SR*rb|zmSpEyJ)5in(dJU!WB1j>hxhGk@If6L zfDJlk&^8|3;K-enEIDk{052sNgBpIn(_t<^;lBs`||UNAN{^IaoU`%DF@6$ zRS#-vWw&IHTkJ)?d(0myCwaFHKJ!7wL3`K5UE1j}M>n>U%%c zPl-<#i*+SNNs4x(o?5Mo0Sz_a-FSfv>RetX8mT?2mZv?5tR`oF&q{$v4YkKEQ9z(_ z!yW}|E-`OXJCOo*`~afH^(NGJtDS?UubDrtf0w#P)VOFyUttw4n7-LJf|h5|a*=B<#nzkDA}xEDt>u=EIP6&CtJ72vMxuUN)A#{duIXzZ zXWG744TRWXg>cPWnp7jYDuHO81J9!Q6LJvA9c+2yZSsAl4d6q^2raUR#GEoOGqGFT&zU=Q zE~t#%!wuWqv}RgG4I%34W{T`5j+&t&5fbepmLXw8C;7JXbr9!BG=eCN&R)CCp0bJL z#&n-)DcL`l<=fK5?rJkeQD-}zU=l$hK>~q^U?M>pK@veS!Dxap1Y-$O2*wel5{xI9 zKrorW*?MjH7rUUGl#^s(YuZM#Ee5zcR1UK>$g-d-&}3_KkvIC|n;|mUK!}{CBokeZ zR3$`q*YNA}GSGMoqA1c>5hCP|Mcz)nBdJhvzcQhC&v$`-% z8HxHBNW;9ra+qLn02U?7(YELq`4aHNicB@Dt8tNg$!g%gkN^{cc~N5b{{E=4&x3{_Zi9C>Kje6E4KHCO`_}JMr*}>&Z@vmTTdiXt(4FO zYl*cs95r5^jMbllPqQ`oE;LS(88_@r!5ib{5H&v*C2?ps(UspJCF3`-@;Z#2D*K@! zUEa-aN9+*!d$48+z3)(sm8#_cjoQdpU5P$JF7(Dq7dcYIICopyLb;6To+3h@Rs~KU zLTts0&sefqJ1wCL5%7zBR5itp?AzKp+}kmJQgpT(+QPA6RT{E98v|CM{%< zxNNO_Md+HXc%6K^2hkl@g^Vr5I_Q^#A!_lSs42{A`s2De=RX zL_OJ3A-DBH6QQf}&1U!)yDK*~%D}H52*tZiRD`utVK0R0{c_vOvP<`TDNgF4e%z9< zY7OfvCi&o`0}#n?^>xR{QF1Uf&RlKz$K@Hll=%-C)Ag3@UeygF#K(j`<2OZ0Eq~@i zSDu~U4Xc(ZgWzq1Mat%0<8xQ#=FiE^a{Ojbn7uT&2(8PMa7x>0#uUwH+EVm8s0Se0 zLl?2%Gs+?AJd_NahMhC0i+)tp#6pyzm@!q}!J}fgsDg!$ux~bXtgN#XE8dx@92Gr{ z6PTB!yoK5#-_MZh>1e;-L?C;@`0Nxr7MBDT)$-JWVK^~IiN@J;l$W|?7UU%rEG|@M z;PAQ1MfgCFSm&NwysR*LX~D2L1^Le|m}lSNyh^F-#07JT3Nn{vO4;=+iev^4aXtArBfv|EFF!m{Fm#j}eS%*mcnP_Wp3+QuBEjyTy} zn>>D~(P*?Eaq$t7bqkd!q)GMqf??TD6)(uk9=CY*yxioxykD&Mv`gW-SU3Zl%*uLP zxYW0%X1VX*uw;QUrW;`WZ(FtO`D@aizj|y>Aw_tx+Oy`3m21-qAyc=1ZXK5$Wjhdy?eE*C~=b zeU~H4xW>P}GZ3dNQilC!y-D;IUn!l}Ai4=ANd7f43Etv!iSyb{H$gwq0dPnr;c9xy-5eSp1xlrYu*7l)Sj@)lhJD z9D@4E^3eaHaEZOdXIJ|b))woyOa7JGCE}rA+09jCBf@1QzolvbT8otN-aTC$%jl;M z-HT68$^Wj$?due8Z~uoA!`jGF)hqee`uge$CB>tXf~51>P4^1kDpp?l4;qZ>_G>A6 zIZXJo<)y|3Z zTSp++ll)7QN%a=r%biy+-H6Zm_6_TP(~=wl(9*OJG4;B7_Rq~G(R(z#a9-o+CWzn> zlBx+N{9@7~n((-o^o|hc0o&1qN(SI}Maq8L{(R+W==D2#X}|p1-k=-tp;lFnn<~d` z|0+}{T_O8>UmfFzOUY&W*kG;lDY%*KE9viZZFp;$vJ&0Tu;2lDdhp-=C%_2AGB!+n zm#YWr%Z2jz#d=l(Xgp74()FxzwLdoi6T@JZ`h`WCqspg6qcH;xIn5$#=2LTBCNuVe2u$g7g+H{*q)|j(vGCfn2 zbi%|@cV>FF>!#9h#-m5mJgH{QpmC=2+2*cko&=8(coFm>@FwU@;6va`;78Dhz@MNm zK>$HN0s}!HL6EI$TL1PJbh)(WO6R_|uD|!c%y?NKb)qM-Aga8>@G#Zk)SM$hZ1_I} C*Mo`x delta 7818 zcmai3dt6l2_CIT%bH)J?X9z|l!~sV|BpeVC31LJuv{Ez`Q$$qoQ9cM!%U1*9b(%k9UXqo{ z(cN{t(|@uT+@q)8{i=chCnPo93HZ?fN&J@wr|@)ZTVu#O;OQ6G-LL0xdUF%e!^^A_ zct@zI>Df>tpwmls@Qz>yIv!^Z-1d|lk5QYM30sRYU+$spod+dGOb?Y3s3M#Q3h_>upQ@5l`FX29?q{u zorDVrW8}B6p&II3RpTCntA%kNZ#QmkoZ6B->201xrwV=|OKh^^cwCETaCDoLU+n0~nI;T%#%0q(VLI%|*=%*&I({!LlyB$x_?SQ4Y7$kq@?T<`c+}z`Xuva> zz}WFh-gzs994iZ1G5w7Sj=-kJBIU{zy& z3)5SC|77YY?%Z%h1cnv17yeUoSZ9>PO*8n|r+aU;g@n3Rhb7xf| zhMi|gwG{@;kA;ouR2s3}!v<$nkiLRCo$B5sLF3pq5+c->sCcMLQdVQ&J7D6beFm)9 z0ZTFcBBT-fdlF}^@{bbUsVo2+)+azvQ__L6q~tTf%6bEj+O-Gv;F%mK#1bc1NId_^ zzmD34r8#8ltVb07-N9g8!9Ov4}n+ihT_ zZ7kyV{`vvb^D{Z26RZ54JC0lU*&|8Zel3sZ zH5j3s7e;6Bo8KnF$0Rq4xINdzJ5O5Be*qc2^pkejF0O$)--w6x_b-I|z7YgPIL`$u zdHL)9+;)Vt_DS$#3xJ<^s~Pj-DMY2*3vy^Vcorttf-b$;n%z|tgk0!`^) zRQu6VXN6XweKPp-18>K`eU*w4mutiJGEmeLG=a+_WH-Nc@S^Ky;ef7;+1JA`B?C(E zk4H&?UXb|m@86{_ii5r`j4$HNAQq;k zQJIVu8AHLmG@WI~`JCHtK-b#V+YT}Ug@emDDIndc5zPx=KjtOLk>KKI{*_FY>@i^q zEhIz*{P4d5$;}j08i178$Vf2$-SQwmF*{Y)c3;4dK5zx+Ti`U*ie*RP(PT*BM~#C> zGPCH&^>lN4dFeK9eJeX~u0I@uOWObTfgTDDI?Ni;*&nRPLZAhw_9KHkEnC^6I}h4i zHAWZ1Iy{gG-n?O!x7tAyx`}CX%dc3`)e98OW`)Zty2h|$FOF&2{4AyjpehG=56f(;|+ANlx3xa?7HSG$!4M$_Vr9#G+ohfE>*2m5#1 ziHT|hO;V@dC+(Gv=ZD8fK(65D3~?1x`DvqtW|>2?Tqe%VuB?YJEi3`90A5UjEm%Gp zzC&e}vYq^$MZHF|(PD$)7&om`;6;4&6Wn20net=*!0I~i>11nVn;Kxsds4u`)C8tVCh8gyQJT&M&A$yo?#P-GDk0sN=fK#WzPLh8*Om$D;e#}H~ zb~!rT%F?D*P@Rqg&^;BxNvTfYpR+{GqFHn!FzF*QUB zwP55HI*2l>h`d*<`UtW65DGhhRxhw%$qq0I1eEh12z(YXti&T)6a(nEBZLlBIQTiS zdIu5N&r&$inQVgmWE&qjZ z!S7-FK7y*FsO<3uUA8ETnCD5mf; z3lC!6COX-B)L85BY749A`01^5O#)7!wH54y6^ev11i}o$8|&~hmr&D@atOBvSu1Oy z)BHc<%AOn&_syzBqmRVRUVn0MG>54VVCg@Zg24yLAzL>yE58+L#hp*du_6HVffG2U z7LuFmpv6bA5o7fbRO@U2pFU_!kW+BH3xY%(_a<*ysE1)zY+I)o@$`Fyk4R?F>dz9$ z4v}~q({J!cIz+R_GJi@K;3_fYvUcx%c)-iNx*Q9S%K=*a z$56_YJ~U3pEn4TN;Ny*KjC``&h*)W7EkYeD--k3EOaGDx`?a+1AP&q2;~wZ=TF`3P z6>s`^^qi|r5#rRmA=Rk8dJSBvIWh41zPlGfo*i5K=||6Mmzb|;*OvbTMrK|bJ$=T} z7xAY&>2%g!ccZ_;=lv9*Rs9Up0@Ts8=oGxe*jRNky_&SqGV?RBn+i^OfF0x6H!`s# zfEfh1i}s*x0(Tbp8aD(nge|(%2wf1h>Q*}4c6=z5trA7-=))Aaj%AT@6Sf^?ahNSC zgs0ko^QSAXF+Ov4r$8EFUdgc6#uY2Q|n-HM2 z4`xvV%{4!cSk`;TujzeRMdkPT{q8Wqh@QC=I$8+>J}bp@b68(I>LnW}P8blzFUG7T z|7ED3#Ef{W8Inkg%)}%LnJCW3qYpBF9sWMY*H)TnD^XaT!RGOX++cZvv|PKF!3G$5 z9U-2GNBlmB$De0IwOLv05Afo8HHF^VylnO`>s8%V7QbPhj+f@MPNOoEmJ~8GM7#4e z8!g)^Zru50a`V2>&^+}{Ug~EBm#N(oxZk^HqF6qjR2FBfV6UPzk3~{eLLkP<*~&!q zNt${eev?X33OPgrX07S#uLe`)4FO7i&{5n3p8PaN(=pkbPCK2Z{zOlMpeX~QR3nwQ zQ3~RL$^tgXE52*T@!GHg_7<3vyUOA>j%WgISi%Ntw$*H>+DmvV@rd6D{djnN9SdxB zv9*8=>qtxccxoGK*rew5j2W;XfCXW2F-ga*jsYd;-lW99XE^2*d%M1fF?8-=getZ% zD^mvPETUWw7HnseMJfn8>BS2MQ^P>Lk&+Ntu*1`+bGme<| zo4!#=ySJGU0<m_C<{*QS-Q!+`TSZTP&$xVa9q#p)F5-7F-cNw*B4wA$<4W;R{` z;9&CFlXI6;B1>n7x}FpqRLXJ7yd3vE5YTYGut(<#A!%pt?6@hxSu; zDNvt0o7O7Vr?{RAKIR2fJW4q*5!p;55V9Qa?PbTz?aPe+UVb;Zs$?YK9QCxDq*X&)un7ZU`G~&YvEPwGr6*sjr9T%LO%2-vuZueGOQ(*+?4RQZ7c%o zjLfP;>V0%>A7qnp>}xDq>paLNLNAf!5s&!ox=zOtrf6$lVv}UA5A-%k`at{W5L*ex z7@9{QVBH{M!K>^;{pJc@>%OJen6;Tb8y} zp7ysO-FiAsvn#Uso9X9=jGMgoi+fj=&R_KHCP$R+Zw5ULL0aZnmI9HJHfF5&u1DvB z@)GA+mJOsxg?3U2A5wOgmle}Dfu+8MOyP6feCtI$Kp=>Ec3zHp5kQ@`Attw z1zq1${}Md~5VbZQKEa>bS+#JKJIhU^dso?InRhG>*9}Jw7Jkm2$L!G%MK~q8gB`=h zAK4^y&w)WWsDt^Ex9}t{4e0uj);=kYc1jJS9bY7$@G?4=2!+1EE~~t8l%EdrC_=8h zMJ&-B4TZ^`1P+@f;gt@8E+UJCYa?Zm#?nJLihHsBHrWmxGBjv2Fu_HzEaWy>5{ibb z&7JJJp`S=}CR4h(JK;Ho-W^@#KQ!=@e^*Y(V`Wd`JGEO>eCkON{HP?J3fZRB$?|2D za(AO8GXC^DEG0|md`gbd++OmgV2>~llG8DDkZjjF2g$xF&UdipUfn55VYYVO4}(0| z@PBEdL*4cx2943OAI!yFk@D9RKhqg^=;4=F_Y^vg(U_kq z$7yl#@;Tu1*QM%69V;G|Exc&(41&`m@avIsDDUQWrI#GQq+j_9+6HmazVNP|3ZpE9 z9m^-m3kBR}izPgrC~x;N4(=#bT&EZac@ z)m+3R;gE;NAC)JgbsVIivy$X|V!CXj2!DZ;fMwU9Z&O3+b*P^tGoE)kM$f!q-J`OJ z!Ym47PhsL(S)ki-l*FDYpQhA8;ozbFnc)~j9IFr_>ye?OQ{*7n*^NKK#C++*fIuw2 z27#K%PyWuR-OZGXdzsfu8PXEUJPfCh>|sGDS1F=rPsV41wr z2;CH&0l-&W8olU@waRioh4y6CiuFLiHGR62_By_ITvK8C+gY#wg%d!{0 zRU3}sFUvD|N`qa?J1)-*P*&Vuwewxsx6JS}eYNT-p=-DDHLA}jA7I7`5^Rg(Y5#L*S zn5f%!ir+&cV2uc0EEK1n$$4HRQCYc!j##>6vEWzK@3cs8iOgaIPkFistL7;oax0BB z2f#3#@{BSQe_x>t#pjkQS1@gX@)Ax)WjI=MlveH4d}W}bA4cgZrM{1$IZ8R&D-^Rf zfh*I1mxbq}dzliUs|2>K>}%J*46T&7^LjC69Z(!fJvnup*H5j+kQK@(bZ$^A+K%0d zH<(4n$MXca7t^~hy0$2!3h^5-vN=f2#>yFfX^P-L7Z{r1=lMP=5O`NrhM$gXw{~Xu5j{ZU zPZU68A?iaENYs}oi0DD0V4{9RAw>O&tVE$iVOnR#fVSO6Av&wN7tlI?9&nyvQ6hb| hy>yL>yjvAM$z>1{|7-AWOe`m