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 3c73ee3..ac0d057 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 @@ -33,7 +33,8 @@ void CKeyence_Laser_LK_H::KeyenceLaserInit(void) m_hLkif=(HMODULE)LoadLibrary(GetAppPath()+_T("\\LKIF2.dll")); if(m_hLkif) { - m_pGetCalcDataMulti=(pLKIF2_GetCalcDataMulti)GetProcAddress(m_hLkif,"LKIF2_GetCalcDataMulti"); + m_pGetCalcDataMulti=(pLKIF2_GetCalcDataMulti)GetProcAddress(m_hLkif,"LKIF2_GetCalcDataMulti"); + m_pOpenDeviceETHER=(pLKIF2_OpenDeviceETHER)GetProcAddress(m_hLkif,"LKIF2_OpenDeviceETHER"); m_pOpenDeviceUsb=(pLKIF2_OpenDeviceUsb)GetProcAddress(m_hLkif,"LKIF2_OpenDeviceUsb"); m_pCloseDevice=(pLKIF2_CloseDevice)GetProcAddress(m_hLkif,"LKIF2_CloseDevice"); @@ -54,7 +55,6 @@ void CKeyence_Laser_LK_H::KeyenceLaserInit(void) m_pDataStorageGetStatus=(pLKIF2_DataStorageGetStatus)GetProcAddress(m_hLkif,"LKIF2_DataStorageGetStatus"); m_pSetDataStorage=(pLKIF2_SetDataStorage)GetProcAddress(m_hLkif,"LKIF2_SetDataStorage"); - m_result = m_pOpenDeviceUsb(); } else { @@ -62,6 +62,46 @@ void CKeyence_Laser_LK_H::KeyenceLaserInit(void) } } } +//======================================== +BOOL CKeyence_Laser_LK_H::OpenDeviceUsb(void) +{ + BOOL ReturnStatus(FALSE); + m_result = m_pOpenDeviceUsb(); + if (m_result==RC_OK) + { + ReturnStatus=TRUE; + } + else + { + ReturnStatus=FALSE; + } + return ReturnStatus; + +} +//======================================== +BOOL CKeyence_Laser_LK_H::OpenDeviceEthernet(IN_ADDR _IPAddr) +{ + BOOL ReturnStatus(FALSE); + LKIF_OPENPARAM_ETHERNET paramEther; + paramEther.IPAddress = _IPAddr; + if(paramEther.IPAddress.S_un.S_addr == INADDR_NONE) + { + ReturnStatus=FALSE; + } + else + { + m_result = LKIF2_OpenDeviceETHER(¶mEther); + if (m_result==RC_OK) + { + ReturnStatus=TRUE; + } + else + { + ReturnStatus=FALSE; + } + } + return ReturnStatus; +} //============================================== /*********************************************** LaserValue1:为第一个OUT01值 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 e2c9df4..b33d1a7 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 @@ -12,6 +12,7 @@ #include "LKIF2.h" typedef RC (WINAPI* pLKIF2_GetCalcDataMulti)(IN LKIF_OUTNO OutNo, OUT LKIF_FLOATVALUE_OUT * CalcData); +typedef RC (WINAPI* pLKIF2_OpenDeviceETHER)(LKIF_OPENPARAM_ETHERNET * OpenParam); typedef RC (WINAPI* pLKIF2_OpenDeviceUsb)(void); typedef RC (WINAPI* pLKIF2_CloseDevice)(void); typedef RC (WINAPI* pLKIF2_SetNumOfUsedOut)(IN int NumOfUsedHeads);//rang2-12 @@ -54,6 +55,7 @@ public: //获取数据的函数指针 pLKIF2_GetCalcDataMulti m_pGetCalcDataMulti; + pLKIF2_OpenDeviceETHER m_pOpenDeviceETHER; pLKIF2_OpenDeviceUsb m_pOpenDeviceUsb; pLKIF2_CloseDevice m_pCloseDevice; pLKIF2_SetNumOfUsedOut m_SetNumOfUsedOut; @@ -77,7 +79,9 @@ public: BOOL m_bIsStorage; void KeyenceLaserInit(void); void Get_KeyenceLaserData(float *LaserValue1,float *LaserValue2); - + BOOL OpenDeviceUsb(void); + BOOL OpenDeviceEthernet(IN_ADDR _IPAddr); + BOOL StartStoreData(int _StorageOutNumber,int _NeedStorageDataNumber,int _SampleTime); BOOL StopStoreData(); BOOL GetStoreDataStatus(); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/KeyenceLKH_Dlg.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/KeyenceLKH_Dlg.cpp index 08fc10d..d730c5d 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/KeyenceLKH_Dlg.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/KeyenceLKH_Dlg.cpp @@ -53,6 +53,7 @@ BOOL CKeyenceLKH_Dlg::OnInitDialog() m_LK_H_Interval=100; ((CButton*)(GetDlgItem(IDC_EDIT_TEST_LK_G_INTERVAL)))->SetWindowText(_T("100")); m_pKeyence_Laser_LK_H->KeyenceLaserInit(); + m_pKeyence_Laser_LK_H->OpenDeviceUsb(); return TRUE; // return TRUE unless you set the focus to a control } diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/KeyenceLKH_Dlg.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/KeyenceLKH_Dlg.h index c0b8190..3df45df 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/KeyenceLKH_Dlg.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/KeyenceLKH_Dlg.h @@ -12,7 +12,7 @@ public: virtual ~CKeyenceLKH_Dlg(); // Dialog Data - enum { IDD = IDD_DIALOG_TEST_KEYENCE_LK_H }; + enum { IDD = IDD_DIALOG_KEYENCE_LKG5000 }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Keyence_LKG5000_Ethernet.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Keyence_LKG5000_Ethernet.cpp new file mode 100644 index 0000000..6d899c2 --- /dev/null +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Keyence_LKG5000_Ethernet.cpp @@ -0,0 +1,133 @@ +// Keyence_LKG5000_Ethernet.cpp : 实现文件 +// + +#include "stdafx.h" +#include "Resource.h" +#include "..\..\..\Keyence\Keyence_Laser_LK_H.h" +#include "Keyence_LKG5000_Ethernet.h" +#include "afxdialogex.h" + +const int DEVICENO=4; +CKeyence_Laser_LK_H g_Keyence_LKG5000[DEVICENO]; +// CKeyence_LKG5000_Ethernet 对话框 + +IMPLEMENT_DYNAMIC(CKeyence_LKG5000_Ethernet, CDialogEx) + +CKeyence_LKG5000_Ethernet::CKeyence_LKG5000_Ethernet(CWnd* pParent /*=NULL*/) + : CDialogEx(CKeyence_LKG5000_Ethernet::IDD, pParent) +{ + +} + +CKeyence_LKG5000_Ethernet::~CKeyence_LKG5000_Ethernet() +{ +} + +void CKeyence_LKG5000_Ethernet::DoDataExchange(CDataExchange* pDX) +{ + DDX_Control(pDX, IDC_EDIT_KEYENCE_LKG5000_MSG, m_edMSG); + DDX_Control(pDX, IDC_KEYENCE_LKG5000_IPADDRESS1, m_IPAddress[0]); + DDX_Control(pDX, IDC_KEYENCE_LKG5000_IPADDRESS2, m_IPAddress[1]); + CDialogEx::DoDataExchange(pDX); +} + + +BEGIN_MESSAGE_MAP(CKeyence_LKG5000_Ethernet, CDialogEx) + ON_BN_CLICKED(IDCANCEL, &CKeyence_LKG5000_Ethernet::OnBnClickedCancel) + ON_BN_CLICKED(IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT1, &CKeyence_LKG5000_Ethernet::OnBnClickedBtnKeyenceLkg5000EthernetConnect1) + ON_BN_CLICKED(IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT1, &CKeyence_LKG5000_Ethernet::OnBnClickedBtnKeyenceLkg5000EthernetReadout1) + ON_BN_CLICKED(IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT2, &CKeyence_LKG5000_Ethernet::OnBnClickedBtnKeyenceLkg5000EthernetConnect2) + ON_BN_CLICKED(IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT2, &CKeyence_LKG5000_Ethernet::OnBnClickedBtnKeyenceLkg5000EthernetReadout2) +END_MESSAGE_MAP() + + +// CKeyence_LKG5000_Ethernet 消息处理程序 +//====================================================== +BOOL CKeyence_LKG5000_Ethernet::OnInitDialog() +{ + CDialog::OnInitDialog(); + m_IPAddress[0].SetAddress(192,168,10,12); + m_IPAddress[1].SetAddress(192,168,10,13); + for (int i=0;iSetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_SO7_VERIFICATION_ALGORITHM))->SetCheck(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_TEST_IMAGE_DLL))->SetCheck(FALSE); - + #ifdef _RELEASE_SO7_CONTROLER_ONLY ((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->EnableWindow(FALSE); ((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV2000E))->EnableWindow(FALSE); @@ -176,26 +177,32 @@ void CSo7_Option::OnBnClickedOk() m_pEF8000_Interface=NULL; } } - else if(((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER_LK_H))->GetCheck()) + else if (((CButton *)GetDlgItem(IDC_RADIO__SO7_RS232))->GetCheck()) { if (!m_pSO7_Proto) { m_pSO7_Proto = new CSO7_Proto(); } - if (!m_pKeyence_Laser_LK_H) + if (!m_pSO7_PCDSerial) { - m_pKeyence_Laser_LK_H=new CKeyence_Laser_LK_H(); + m_pSO7_PCDSerial = new CPSerial(); } - CKeyenceLKH_Dlg* pKeyence_LKHDlg=new CKeyenceLKH_Dlg(); - pKeyence_LKHDlg->DoModal(); - delete pKeyence_LKHDlg; + CSo7_Manual_Machine* pSo7_Manual_Machine=new CSo7_Manual_Machine(); + pSo7_Manual_Machine->DoModal(); + delete pSo7_Manual_Machine; - delete m_pKeyence_Laser_LK_H; - m_pKeyence_Laser_LK_H=NULL; - delete m_pSO7_Proto; - m_pSO7_Proto=NULL; - } + if (m_pSO7_PCDSerial) + { + delete m_pSO7_PCDSerial; + m_pSO7_PCDSerial=NULL; + } + if (m_pSO7_Proto) + { + delete m_pSO7_Proto; + m_pSO7_Proto=NULL; + } + } else if(((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER))->GetCheck()) { if (!m_pSO7_Proto) @@ -222,6 +229,33 @@ void CSo7_Option::OnBnClickedOk() delete m_pSO7_Proto; m_pSO7_Proto=NULL; } + else if(((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER_LK_H))->GetCheck()) + { + if (!m_pSO7_Proto) + { + m_pSO7_Proto = new CSO7_Proto(); + } + if (!m_pKeyence_Laser_LK_H) + { + m_pKeyence_Laser_LK_H=new CKeyence_Laser_LK_H(); + } + + CKeyenceLKH_Dlg* pKeyence_LKHDlg=new CKeyenceLKH_Dlg(); + pKeyence_LKHDlg->DoModal(); + delete pKeyence_LKHDlg; + + delete m_pKeyence_Laser_LK_H; + m_pKeyence_Laser_LK_H=NULL; + delete m_pSO7_Proto; + m_pSO7_Proto=NULL; + } + else if(((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER_LKH_ETHERNET))->GetCheck()) + { + CKeyence_LKG5000_Ethernet* pKeyence_LKG5000_Ethernet=new CKeyence_LKG5000_Ethernet(); + pKeyence_LKG5000_Ethernet->DoModal(); + delete pKeyence_LKG5000_Ethernet; + pKeyence_LKG5000_Ethernet=nullptr; + } else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->GetCheck()) { #ifdef _RELEASE_FULL_VERSION @@ -275,32 +309,6 @@ void CSo7_Option::OnBnClickedOk() pSO7_Verfication_Algorithm->DoModal(); delete pSO7_Verfication_Algorithm; } - else if (((CButton *)GetDlgItem(IDC_RADIO__SO7_RS232))->GetCheck()) - { - if (!m_pSO7_Proto) - { - m_pSO7_Proto = new CSO7_Proto(); - } - if (!m_pSO7_PCDSerial) - { - m_pSO7_PCDSerial = new CPSerial(); - } - - CSo7_Manual_Machine* pSo7_Manual_Machine=new CSo7_Manual_Machine(); - pSo7_Manual_Machine->DoModal(); - delete pSo7_Manual_Machine; - - if (m_pSO7_PCDSerial) - { - delete m_pSO7_PCDSerial; - m_pSO7_PCDSerial=NULL; - } - if (m_pSO7_Proto) - { - delete m_pSO7_Proto; - m_pSO7_Proto=NULL; - } - } #ifdef _RELEASE_ONLY_ONE_FUNCTION @@ -311,7 +319,7 @@ void CSo7_Option::OnBnClickedOk() //=================================== void CSo7_Option::OnBnClickedCancel() { - CDialog::OnCancel(); + CDialog::OnCancel(); } //=================================== void CSo7_Option::OnTimer(UINT_PTR nIDEvent) diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.h index 775cb58..7db5a5d 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.h @@ -12,7 +12,7 @@ public: virtual ~CSo7_Option(); // Dialog Data - enum { IDD = IDD_S07_OPTION_DIALOG }; + enum { IDD = IDD_SO7_OPTION_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 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 5649cb0..5450d89 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 @@ -118,6 +118,8 @@ false false Utility for So7 Controller + true + true @@ -331,6 +333,7 @@ + @@ -410,6 +413,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 50328ad..69df0b0 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 @@ -190,6 +190,9 @@ Sources Files + + Sources Files + @@ -414,6 +417,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 e0f78fc..f68763d 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -24,8 +24,8 @@ #define IDD_DIALOG_FILE_UTILITIES 114 #define IDD_SO7_UTIL_DIALOG 115 #define IDD_SO7_UTIL_MOVE_LOCATION 116 -#define IDD_DIALOG_TEST_KEYENCE 117 -#define IDD_S07_UTIL_SEND_PARAMETER 118 +#define IDD_DIALOG_KEYENCE_LKG3000 117 +#define IDD_SO7_UTIL_SEND_PARAMETER 118 #define IDI_ICON1 119 #define IDR_MAINFRAME 120 #define IDD_SO7_UTIL_AUTO_ZOOM 121 @@ -35,7 +35,7 @@ #define IDI_ICON_WHITE 125 #define IDI_ICON_RED 126 #define IDI_ICON_BLACK 127 -#define IDD_S07_OPTION_DIALOG 128 +#define IDD_SO7_OPTION_DIALOG 128 #define IDD_DIALOG_VIDEOCARD_SDK3000 129 #define IDD_SO7_VIDEOCARD_SDK3000 130 #define IDD_DIALOG1 131 @@ -55,6 +55,7 @@ #define IDB_BITMAP_X_RIGHT 145 #define IDC_BUTTON_INIT_MVUSB 146 #define IDD_DIALOG_TESA_STAR_E 188 +#define IDD_DIALOG_KEYENCE_LKG5000_ETHERNET 190 #define IDC_BUTTON_START_MACHINE 1000 #define IDC_BUTTON_START_MACHINE3 1001 #define IDC_BUTTON_START_POLL_58 1002 @@ -641,7 +642,9 @@ #define IDC_BUTTON_SO7_READDATAFROMFPGA 1542 #define IDC_BUTTON_TESA_STAR_STOP_MACHINE 1542 #define IDC_BUTTON_SO7_MOTION_CONFIG_OK 1542 +#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT1 1542 #define IDC_BUTTON_STOP_SAMPLE_SCURVE 1543 +#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT2 1543 #define IDC_BTN_CONFIGURE_MOVEVOUT 1544 #define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_GLASER 1545 #define IDC_BUTTON_SET_TRIGGER 1546 @@ -699,6 +702,8 @@ #define IDC_RADIO_KEYENCE_LASER_LK_H 1594 #define IDC_RADIO_TEST_IMAGE_DLL 1595 #define IDC_BUTTON_IMAGEDLL_PAUSE_AND_GET_SCAN_LASER_DATA 1596 +#define IDC_RADIO_KEYENCE_LASER_LK_H2 1596 +#define IDC_RADIO_KEYENCE_LASER_LKH_ETHERNET 1596 #define IDC_BUTTON_TEST_KEYENCE_SAVE_LOG 1597 #define IDC_BUTTON_SO7_MANUAL_MACHINE_SEND_DATA 1598 #define IDC_BUTTON_SO7_CNC_PROGRAM 1599 @@ -820,7 +825,7 @@ #define IDD_SO7_UTIL_MANUAL_MACHINE 1716 #define IDC_BUTTON_READ_PROGRAM 1717 #define IDD_SO7_VIDEOCARD_TC4000 1718 -#define IDD_DIALOG_TEST_KEYENCE_LK_H 1719 +#define IDD_DIALOG_KEYENCE_LKG5000 1719 #define IDD_SO7_UTIL_SETUP_SO7_CONFIG_MOTION 1720 #define IDC_RADIO_SPEED_SLOW 1770 #define IDC_RADIO_SCALE 1772 @@ -851,7 +856,9 @@ #define IDC_BUTTON_TESA_STAR_START_MACHINE 1794 #define IDC_BUTTON_SO7_MOVETO_CLEAR_ALL_LOG 1794 #define IDC_BUTTON_SO7_MOTION_CONFIG_CANCEL 1794 +#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT1 1794 #define IDC_COMBO_RWDATA_ADDR 1795 +#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT2 1795 #define IDC_EDIT_MOTION_SPEEDY 1796 #define IDC_COMBO_OUTPORT_NUMBER 1796 #define IDC_EDIT4 1797 @@ -890,6 +897,9 @@ #define IDC_RADIO_RELATIVE 1825 #define IDC_RADIO_ABS 1826 #define IDC_RADIO_ABSOLUTE 1826 +#define IDC_KEYENCE_LKG5000_IPADDRESS1 1827 +#define IDC_KEYENCE_LKG5000_IPADDRESS2 1828 +#define IDC_EDIT_KEYENCE_LKG5000_MSG 1830 #define IDC_BUTTON_DIY_EXIT_BUTTON 32740 #define ID_EDIT_SO7_CONFIG_MOTION 32741 @@ -897,9 +907,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 189 +#define _APS_NEXT_RESOURCE_VALUE 191 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1827 +#define _APS_NEXT_CONTROL_VALUE 1831 #define _APS_NEXT_SYMED_VALUE 104 #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 b249e53..6ad171e 100644 Binary files a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo and b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo differ