新增SV200E视频卡多设备测试
This commit is contained in:
@@ -381,22 +381,22 @@ BEGIN
|
||||
CONTROL "",IDC_STATIC_SDK3000_PICTURE,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,228,296,68,16
|
||||
END
|
||||
|
||||
IDD_SO7_VIDEOCARD_SV2000E DIALOGEX 0, 0, 488, 316
|
||||
IDD_SO7_VIDEOCARD_SV2000E DIALOGEX 0, 0, 910, 317
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "SV2000视频卡"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "彩色图像",IDC_RADIO_SV2000E_RGB,"Button",BS_AUTORADIOBUTTON | WS_GROUP,435,37,48,10
|
||||
CONTROL "黑白图像",IDC_RADIO_SV2000E_GRAY,"Button",BS_AUTORADIOBUTTON,435,58,48,10
|
||||
CONTROL "垂直镜像",IDC_CHECK_SV2000E_MIRROR_VERTICALLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,435,85,48,10
|
||||
PUSHBUTTON "保存图片",IDC_BUTTON_SV2000E_SAVEFILE,435,115,50,14
|
||||
DEFPUSHBUTTON "开始",IDOK,372,298,50,14
|
||||
PUSHBUTTON "退出",IDCANCEL,435,298,50,14
|
||||
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
|
||||
CONTROL "彩色图像",IDC_RADIO_SV2000E_RGB,"Button",BS_AUTORADIOBUTTON | WS_GROUP,861,38,48,10
|
||||
CONTROL "黑白图像",IDC_RADIO_SV2000E_GRAY,"Button",BS_AUTORADIOBUTTON,861,59,48,10
|
||||
CONTROL "垂直镜像",IDC_CHECK_SV2000E_MIRROR_VERTICALLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,861,86,48,10
|
||||
PUSHBUTTON "保存图片",IDC_BUTTON_SV2000E_SAVEFILE,859,116,50,14
|
||||
DEFPUSHBUTTON "开始",IDOK,793,300,50,14
|
||||
PUSHBUTTON "退出",IDCANCEL,854,300,50,14
|
||||
GROUPBOX "通道选择",IDC_STATIC,864,142,42,61
|
||||
CONTROL "1",IDC_RADIO_SV2000E_CHANNEL1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,876,161,23,10
|
||||
CONTROL "2",IDC_RADIO_SV2000E_CHANNEL2,"Button",BS_AUTORADIOBUTTON,876,183,26,10
|
||||
GROUPBOX "设备选择",IDC_STATIC,863,208,42,61
|
||||
COMBOBOX IDC_COMBO_SV2000E_SELECT_DEV_NUMBER,868,223,31,35,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_SO7_UTIL_SETUP_CONFIGURE DIALOGEX 0, 0, 476, 451
|
||||
@@ -597,8 +597,10 @@ BEGIN
|
||||
IDD_SO7_VIDEOCARD_SV2000E, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 1
|
||||
RIGHTMARGIN, 485
|
||||
RIGHTMARGIN, 909
|
||||
VERTGUIDE, 435
|
||||
VERTGUIDE, 853
|
||||
BOTTOMMARGIN, 314
|
||||
END
|
||||
|
||||
IDD_SO7_UTIL_SETUP_CONFIGURE, DIALOG
|
||||
|
||||
@@ -105,7 +105,8 @@ void CVideocard_SV2000E::OnBnClickedOk()
|
||||
void CVideocard_SV2000E::OnBnClickedCancel()
|
||||
{
|
||||
KillTimer(1);
|
||||
UnloadVideocard();
|
||||
UnloadVideocard(m_device);
|
||||
UnloadVideocard(m_device_Nav);
|
||||
DXUninitialize();
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
@@ -153,24 +154,66 @@ void CVideocard_SV2000E::OnBnClickedButtonSv2000eSavefile()
|
||||
}
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel1()
|
||||
{
|
||||
UnloadVideocard();
|
||||
{
|
||||
m_Channel=1;
|
||||
LoadVideocard();
|
||||
if (m_OpenDevNo==0)
|
||||
{
|
||||
CloseDevice(m_device);
|
||||
CloseDevice(m_device_Nav);
|
||||
OpenDevice(0,m_device);
|
||||
}
|
||||
else if (m_OpenDevNo==1)
|
||||
{
|
||||
CloseDevice(m_device);
|
||||
CloseDevice(m_device_Nav);
|
||||
OpenDevice(1,m_device_Nav);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnloadVideocard(m_device);
|
||||
UnloadVideocard(m_device_Nav);
|
||||
LoadVideocard();
|
||||
}
|
||||
}
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnBnClickedRadioSv2000eChannel2()
|
||||
{
|
||||
UnloadVideocard();
|
||||
m_Channel=2;
|
||||
LoadVideocard();
|
||||
if (m_OpenDevNo==0)
|
||||
{
|
||||
CloseDevice(m_device);
|
||||
CloseDevice(m_device_Nav);
|
||||
OpenDevice(0,m_device);
|
||||
}
|
||||
else if (m_OpenDevNo==1)
|
||||
{
|
||||
CloseDevice(m_device);
|
||||
CloseDevice(m_device_Nav);
|
||||
OpenDevice(1,m_device_Nav);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnloadVideocard(m_device);
|
||||
UnloadVideocard(m_device_Nav);
|
||||
LoadVideocard();
|
||||
}
|
||||
}
|
||||
//===================================================
|
||||
void CVideocard_SV2000E::OnCbnSelchangeComboSv2000eSelectDevNumber()
|
||||
{
|
||||
m_OpenDevNo=((CComboBox *)GetDlgItem(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER))->GetCurSel();
|
||||
CloseDevice();
|
||||
OpenDevice(m_OpenDevNo);
|
||||
if (m_OpenDevNo==2)//both
|
||||
{
|
||||
CloseDevice(m_device);
|
||||
OpenDevice(0,m_device);
|
||||
OpenDevice(1,m_device_Nav);
|
||||
}
|
||||
else
|
||||
{
|
||||
CloseDevice(m_device);
|
||||
CloseDevice(m_device_Nav);
|
||||
OpenDevice(m_OpenDevNo,m_device);
|
||||
}
|
||||
}
|
||||
//=======================================
|
||||
BOOL CVideocard_SV2000E::LoadVideocard()
|
||||
@@ -191,9 +234,13 @@ BOOL CVideocard_SV2000E::LoadVideocard()
|
||||
csTmp.Format(_T("%d"),i+1);
|
||||
((CComboBox *)GetDlgItem(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER))->InsertString(i,csTmp);
|
||||
}
|
||||
if (m_nDevNum>1)
|
||||
{
|
||||
((CComboBox *)GetDlgItem(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER))->InsertString(m_nDevNum,_T("Both"));
|
||||
}
|
||||
((CComboBox *)GetDlgItem(IDC_COMBO_SV2000E_SELECT_DEV_NUMBER))->SetCurSel(0);
|
||||
m_OpenDevNo=0;
|
||||
OpenDevice(m_OpenDevNo);
|
||||
OpenDevice(m_OpenDevNo,m_device);
|
||||
if((bInitSdk!=0)||(m_nDevNum<1)||(m_device==NULL))
|
||||
{
|
||||
::AfxMessageBox(_T("SV2000E卡初始化失败!"));
|
||||
@@ -203,48 +250,56 @@ BOOL CVideocard_SV2000E::LoadVideocard()
|
||||
return TRUE;
|
||||
}
|
||||
//=======================================
|
||||
void CVideocard_SV2000E::OpenDevice(unsigned int _DevNo)
|
||||
void CVideocard_SV2000E::OpenDevice(unsigned int _DevNo,device_handle &_OpenedDevice)
|
||||
{
|
||||
m_device= DXOpenDevice(_DevNo, NULL);
|
||||
_OpenedDevice= DXOpenDevice(_DevNo, NULL);
|
||||
|
||||
unsigned standard(VideoStandard_PAL_D);
|
||||
unsigned colorspace(cs_yuy2);//cs_rgb24
|
||||
unsigned width(640);//640
|
||||
unsigned height(480);//480
|
||||
float framerate(25);
|
||||
m_status=DXSetVideoPara(m_device,standard,colorspace,width,height,framerate);
|
||||
m_status=DXSetVideoPara(_OpenedDevice,standard,colorspace,width,height,framerate);
|
||||
|
||||
DXDeviceRun(m_device);
|
||||
DXDeviceRun(_OpenedDevice);
|
||||
|
||||
m_dwCard=2;
|
||||
m_status=DXSetVideoSource(m_device, m_Channel);
|
||||
m_status=DXSetVideoSource(_OpenedDevice, m_Channel);
|
||||
|
||||
//==============================消除隔行=========================================
|
||||
m_status=DXSetVideoPara(m_device,standard,colorspace,width,height,framerate);
|
||||
m_status=DXSetVideoPara(_OpenedDevice,standard,colorspace,width,height,framerate);
|
||||
//================================================================================
|
||||
m_status=DXSetDisplayPara( m_device, BRIGHTNESS, 5000,2);
|
||||
m_status=DXSetDisplayPara( m_device, SATURATION, 5000,2);
|
||||
m_status=DXSetDisplayPara( m_device, CONTRAST, 5000,2);
|
||||
m_status=DXSetDisplayPara( m_device, HUE, 5000,2);
|
||||
m_status=DXSetDisplayPara( m_device, SHARPNESS, 4,2);
|
||||
m_status=DXSetDisplayPara( _OpenedDevice, BRIGHTNESS, 5000,2);
|
||||
m_status=DXSetDisplayPara( _OpenedDevice, SATURATION, 5000,2);
|
||||
m_status=DXSetDisplayPara( _OpenedDevice, CONTRAST, 5000,2);
|
||||
m_status=DXSetDisplayPara( _OpenedDevice, HUE, 5000,2);
|
||||
m_status=DXSetDisplayPara( _OpenedDevice, SHARPNESS, 4,2);
|
||||
if (_DevNo==0)
|
||||
{
|
||||
m_status=DXSetRawVideoCallback(_OpenedDevice, SVAPrcVidCapCallBack, this);
|
||||
m_status=DXStartRawVideoCallback(_OpenedDevice,SVAPrcVidCapCallBack,this);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_status=DXSetRawVideoCallback(_OpenedDevice, SVAPrcVidCapCallBackNav, this);
|
||||
m_status=DXStartRawVideoCallback(_OpenedDevice,SVAPrcVidCapCallBackNav,this);
|
||||
}
|
||||
|
||||
m_status=DXSetRawVideoCallback(m_device, SVAPrcVidCapCallBack, this);
|
||||
m_status=DXStartRawVideoCallback(m_device,SVAPrcVidCapCallBack,this);
|
||||
};
|
||||
//=======================================
|
||||
void CVideocard_SV2000E::CloseDevice()
|
||||
void CVideocard_SV2000E::CloseDevice(device_handle _Device)
|
||||
{
|
||||
UnloadVideocard();
|
||||
UnloadVideocard(_Device);
|
||||
};
|
||||
//=======================================
|
||||
BOOL CVideocard_SV2000E::UnloadVideocard()
|
||||
BOOL CVideocard_SV2000E::UnloadVideocard(device_handle _Device)
|
||||
{
|
||||
if (m_device)
|
||||
if (_Device)
|
||||
{
|
||||
m_status=DXStopRawVideoCallback(m_device);
|
||||
m_status=DXSetRawVideoCallback(m_device, NULL, NULL);
|
||||
m_status=DXDeviceStop(m_device);
|
||||
DXCloseDevice(m_device);
|
||||
m_status=DXStopRawVideoCallback(_Device);
|
||||
m_status=DXSetRawVideoCallback(_Device, NULL, NULL);
|
||||
m_status=DXDeviceStop(_Device);
|
||||
DXCloseDevice(_Device);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -437,7 +492,17 @@ void CVideocard_SV2000E::OnPaint()
|
||||
int nMode;
|
||||
CDC* pMemDC = new CDC;
|
||||
CBitmap pBitBmp;
|
||||
ConvertVideoSubType(m_ImageBuffer,g_DataBuffer,m_ConvertColorType,m_bMirror);
|
||||
CBitmap pBitBmpNav;
|
||||
if (m_OpenDevNo==1)
|
||||
{
|
||||
ConvertVideoSubType(m_ImageBuffer,g_DataBuffer_NAV,m_ConvertColorType,m_bMirror);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConvertVideoSubType(m_ImageBuffer,g_DataBuffer,m_ConvertColorType,m_bMirror);
|
||||
}
|
||||
|
||||
|
||||
BYTE *pData = (BYTE *)m_ImageBuffer.ScanLine;
|
||||
BITMAPINFO bmpInfo;
|
||||
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
@@ -454,6 +519,13 @@ void CVideocard_SV2000E::OnPaint()
|
||||
|
||||
pBitBmp.CreateCompatibleBitmap(dc,640,480);
|
||||
SetDIBits(dc->m_hDC,pBitBmp,0,480,pData,&bmpInfo,DIB_RGB_COLORS);
|
||||
if (m_OpenDevNo==2)//both
|
||||
{
|
||||
ConvertVideoSubType(m_ImageBuffer_Nav,g_DataBuffer_NAV,m_ConvertColorType,m_bMirror);
|
||||
BYTE *pDataNav = (BYTE *)m_ImageBuffer_Nav.ScanLine;
|
||||
pBitBmpNav.CreateCompatibleBitmap(dc,640,480);
|
||||
SetDIBits(dc->m_hDC,pBitBmpNav,0,480,pDataNav,&bmpInfo,DIB_RGB_COLORS);
|
||||
}
|
||||
if (m_bSaveFile)
|
||||
{
|
||||
SaveBitmapToFile(pBitBmp,m_SaveFile);
|
||||
@@ -469,8 +541,16 @@ void CVideocard_SV2000E::OnPaint()
|
||||
}
|
||||
CBitmap* pOldBitmap = pMemDC->SelectObject(&pBitBmp);
|
||||
nMode = pMemDC->SetBkMode(TRANSPARENT);
|
||||
|
||||
dc->BitBlt(0, 0, 640, 480, pMemDC,0,0, SRCCOPY);
|
||||
if (m_OpenDevNo==2)//both
|
||||
{
|
||||
dc->BitBlt(0, 0, 640, 480, pMemDC,0,0, SRCCOPY);
|
||||
pMemDC->SelectObject(&pBitBmpNav);
|
||||
dc->BitBlt(645, 0, 640, 480, pMemDC,0,0, SRCCOPY);
|
||||
}
|
||||
else
|
||||
{
|
||||
dc->BitBlt(0, 0, 640, 480, pMemDC,0,0, SRCCOPY);
|
||||
}
|
||||
|
||||
pMemDC->SetBkMode(nMode);
|
||||
pMemDC->SelectObject(pOldBitmap);
|
||||
|
||||
@@ -37,6 +37,7 @@ protected:
|
||||
int m_nDevNum;
|
||||
DWORD m_dwCard;
|
||||
Image_Buffer m_ImageBuffer;
|
||||
Image_Buffer m_ImageBuffer_Nav;
|
||||
ConvertColorType m_ConvertColorType;
|
||||
BOOL m_bMirror;
|
||||
BOOL m_bSaveFile;
|
||||
@@ -46,9 +47,9 @@ protected:
|
||||
unsigned int m_OpenDevNo;
|
||||
public:
|
||||
BOOL LoadVideocard();
|
||||
BOOL UnloadVideocard();
|
||||
void OpenDevice(unsigned int _DevNo);
|
||||
void CloseDevice();
|
||||
BOOL UnloadVideocard(device_handle _Device);
|
||||
void OpenDevice(unsigned int _DevNo,device_handle &_OpenedDevice);
|
||||
void CloseDevice(device_handle _Device);
|
||||
void ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *pSrcData,ConvertColorType _type,BOOL _bMirror);
|
||||
BOOL SaveBitmapToFile(const CBitmap& bitmap, CString lpFileName);
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user