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 a84ee13..63beaa3 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 @@ -395,6 +395,8 @@ BEGIN GROUPBOX "通道选择",IDC_STATIC,439,140,42,61 CONTROL "1",IDC_RADIO_SV2000E_CHANNEL1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,450,160,23,10 CONTROL "2",IDC_RADIO_SV2000E_CHANNEL2,"Button",BS_AUTORADIOBUTTON,450,182,26,10 + GROUPBOX "设备选择",IDC_STATIC,438,207,42,61 + COMBOBOX IDC_COMBO_SV2000E_SELECT_DEV_NUMBER,443,222,31,35,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP END IDD_SO7_UTIL_SETUP_CONFIGURE DIALOGEX 0, 0, 476, 451 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 91a639c..cf6900d 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 @@ -17,6 +17,8 @@ static const long HueDefault = 5000; static const long SharpnessDefault = 4; static BYTE g_DataBuffer[640*480*2]; +static BYTE g_DataBuffer_NAV[640*480*2]; + // CVideocard_SV2000E dialog IMPLEMENT_DYNAMIC(CVideocard_SV2000E, CDialog) @@ -52,6 +54,7 @@ BEGIN_MESSAGE_MAP(CVideocard_SV2000E, CDialog) ON_BN_CLICKED(IDOK, &CVideocard_SV2000E::OnBnClickedOk) ON_BN_CLICKED(IDC_RADIO_SV2000E_CHANNEL1, &CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel1) ON_BN_CLICKED(IDC_RADIO_SV2000E_CHANNEL2, &CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel2) + ON_CBN_SELCHANGE(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER, &CVideocard_SV2000E::OnCbnSelchangeComboSv2000eSelectDevNumber) END_MESSAGE_MAP() @@ -82,8 +85,9 @@ BOOL CVideocard_SV2000E::OnInitDialog() } ((CButton *)GetDlgItem(IDC_RADIO_SV2000E_RGB))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_RADIO_SV2000E_GRAY))->SetCheck(FALSE); - + bInitSdk=123; m_Channel=1; + m_OpenDevNo=0; ((CButton *)GetDlgItem(IDC_RADIO_SV2000E_CHANNEL1))->SetCheck(TRUE); ((CButton *)GetDlgItem(IDC_RADIO_SV2000E_CHANNEL2))->SetCheck(FALSE); @@ -92,6 +96,7 @@ BOOL CVideocard_SV2000E::OnInitDialog() //=================================================== void CVideocard_SV2000E::OnBnClickedOk() { + bInitSdk=DXInitialize(); LoadVideocard(); SetTimer(1,50,NULL); GetDlgItem(IDOK)->EnableWindow(false); @@ -101,6 +106,7 @@ void CVideocard_SV2000E::OnBnClickedCancel() { KillTimer(1); UnloadVideocard(); + DXUninitialize(); CDialog::OnCancel(); } //=================================================== @@ -130,7 +136,7 @@ void CVideocard_SV2000E::OnBnClickedCheckSv2000eMirrorVertically() //=================================================== void CVideocard_SV2000E::OnBnClickedButtonSv2000eSavefile() { - CString CTmpString; + CString CTmpString; CString PathName; CString path_and_fileName; @@ -159,11 +165,16 @@ void CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel2() m_Channel=2; LoadVideocard(); } +//=================================================== +void CVideocard_SV2000E::OnCbnSelchangeComboSv2000eSelectDevNumber() +{ + m_OpenDevNo=((CComboBox *)GetDlgItem(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER))->GetCurSel(); + CloseDevice(); + OpenDevice(m_OpenDevNo); +} //======================================= BOOL CVideocard_SV2000E::LoadVideocard() { - unsigned int bInitSdk=DXInitialize(); - DEVICE_TAG devTags[100]; unsigned num = 100; DXEnumVideoCodecs(devTags, num); @@ -173,13 +184,29 @@ BOOL CVideocard_SV2000E::LoadVideocard() //DXEnumSoundDevices(devTags, num); m_nDevNum = DXGetDeviceCount(); - m_device= DXOpenDevice(0, NULL); + CString csTmp=_T(""); + ((CComboBox *)GetDlgItem(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER))->ResetContent(); + for(int i=0;iInsertString(i,csTmp); + } + ((CComboBox *)GetDlgItem(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER))->SetCurSel(0); + m_OpenDevNo=0; + OpenDevice(m_OpenDevNo); if((bInitSdk!=0)||(m_nDevNum<1)||(m_device==NULL)) { ::AfxMessageBox(_T("SV2000E卡初始化失败!")); return FALSE; } + return TRUE; +} +//======================================= +void CVideocard_SV2000E::OpenDevice(unsigned int _DevNo) +{ + m_device= DXOpenDevice(_DevNo, NULL); + unsigned standard(VideoStandard_PAL_D); unsigned colorspace(cs_yuy2);//cs_rgb24 unsigned width(640);//640 @@ -203,11 +230,12 @@ BOOL CVideocard_SV2000E::LoadVideocard() m_status=DXSetRawVideoCallback(m_device, SVAPrcVidCapCallBack, this); m_status=DXStartRawVideoCallback(m_device,SVAPrcVidCapCallBack,this); - return true; - - return TRUE; -} - +}; +//======================================= +void CVideocard_SV2000E::CloseDevice() +{ + UnloadVideocard(); +}; //======================================= BOOL CVideocard_SV2000E::UnloadVideocard() { @@ -217,7 +245,6 @@ BOOL CVideocard_SV2000E::UnloadVideocard() m_status=DXSetRawVideoCallback(m_device, NULL, NULL); m_status=DXDeviceStop(m_device); DXCloseDevice(m_device); - DXUninitialize(); } return TRUE; } @@ -475,6 +502,16 @@ unsigned CALLBACK SVAPrcVidCapCallBack(unsigned char* buffer, unsigned colorSpac memcpy(g_DataBuffer,(BYTE*)buffer,width*height*2); return 0; } +//==================================SV2000E===================================== +unsigned CALLBACK SVAPrcVidCapCallBackNav(unsigned char* buffer, unsigned colorSpace, unsigned width, unsigned height, unsigned bytesWidth, void* context) +{ + UNREFERENCED_PARAMETER(colorSpace); + UNREFERENCED_PARAMETER(context); + UNREFERENCED_PARAMETER(bytesWidth); + memcpy(g_DataBuffer_NAV,(BYTE*)buffer,width*height*2); + 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 d4b6aae..ba59aa0 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 @@ -3,6 +3,8 @@ // 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); + class CVideocard_SV2000E : public CDialog { DECLARE_DYNAMIC(CVideocard_SV2000E) @@ -30,6 +32,8 @@ public: protected: unsigned int m_status; device_handle m_device; + device_handle m_device_Nav; + int m_nDevNum; DWORD m_dwCard; Image_Buffer m_ImageBuffer; @@ -38,12 +42,17 @@ protected: BOOL m_bSaveFile; CString m_SaveFile; unsigned int m_Channel; + unsigned int bInitSdk; + unsigned int m_OpenDevNo; public: BOOL LoadVideocard(); BOOL UnloadVideocard(); + void OpenDevice(unsigned int _DevNo); + void CloseDevice(); void ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *pSrcData,ConvertColorType _type,BOOL _bMirror); BOOL SaveBitmapToFile(const CBitmap& bitmap, CString lpFileName); afx_msg void OnBnClickedRadioSv2000eChannel1(); afx_msg void OnBnClickedRadioSv2000eChannel2(); + afx_msg void OnCbnSelchangeComboSv2000eSelectDevNumber(); }; 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 d33410b..332fda5 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -665,9 +665,10 @@ #define IDC_RADIO_TC4000_CHANNEL2 1567 #define IDC_RADIO_TC4000_CHANNEL3 1568 #define IDC_RADIO_TC4000_CHANNEL4 1569 -#define IDC_RADIO1 1570 #define IDC_RADIO_SV2000E_CHANNEL1 1570 #define IDC_RADIO_SV2000E_CHANNEL2 1571 +#define IDC_COMBO_SV200E 1573 +#define IDC_COMBO_SV2000E_SELECT_DEV_NUMBER 1573 // Next default values for new objects // @@ -675,7 +676,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 166 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1572 +#define _APS_NEXT_CONTROL_VALUE 1574 #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 44cbfda..fc6fbf0 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