增加MV900视频卡测试功能。
This commit is contained in:
@@ -4768,3 +4768,10 @@ Usb Port Initialized.
|
||||
|
||||
Init:Open device succeed .
|
||||
|
||||
_start_machine
|
||||
Exit: Exit_SO7Usb
|
||||
|
||||
Destruct Cso7_Proto.
|
||||
|
||||
Construct Cso7_Proto.
|
||||
|
||||
|
||||
@@ -405,8 +405,8 @@ BEGIN
|
||||
CONTROL "SV2000E视频卡",IDC_RADIO_VIDEOCARD_SV2000E,"Button",BS_AUTORADIOBUTTON,24,48,69,10
|
||||
CONTROL "SV4000E视频卡",IDC_RADIO_VIDEOCARD_SV4000E,"Button",BS_AUTORADIOBUTTON,24,64,68,10
|
||||
CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,24,80,69,10
|
||||
CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON,24,96,62,10
|
||||
CONTROL "USB Camera",IDC_RADIO_SO7_USB_CAMERA,"Button",BS_AUTORADIOBUTTON,24,112,62,10
|
||||
CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,195,96,62,10
|
||||
CONTROL "USB Camera",IDC_RADIO_SO7_USB_CAMERA,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,195,112,62,10
|
||||
CONTROL "LK_G激光",IDC_RADIO_KEYENCE_LASER,"Button",BS_AUTORADIOBUTTON,100,32,76,10
|
||||
CONTROL "LK_H激光(USB)",IDC_RADIO_KEYENCE_LASER_LK_H,"Button",BS_AUTORADIOBUTTON,100,48,76,10
|
||||
CONTROL "LK_H激光(ETHERNET)",IDC_RADIO_KEYENCE_LASER_LKH_ETHERNET,
|
||||
@@ -423,6 +423,7 @@ BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,145,142,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,225,142,50,14
|
||||
GROUPBOX "测试选项",IDC_STATIC,10,8,265,123
|
||||
CONTROL "MV900视频卡",IDC_RADIO_VIDEOCARD_MV900,"Button",BS_AUTORADIOBUTTON,24,96,69,10
|
||||
END
|
||||
|
||||
IDD_SO7_VIDEOCARD_SDK3000 DIALOGEX 0, 0, 488, 316
|
||||
@@ -1015,6 +1016,22 @@ BEGIN
|
||||
PUSHBUTTON "Clear",IDC_BUTTON_SO7_EXTRIG_CLEAR_MSG,222,295,50,14,BS_CENTER
|
||||
END
|
||||
|
||||
IDD_SO7_VIDEOCARD_MV900 DIALOGEX 0, 0, 575, 356
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "MV900视频卡"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "开始",IDOK,520,309,53,14
|
||||
PUSHBUTTON "退出",IDCANCEL,520,338,53,14
|
||||
CONTROL "彩色图像",IDC_RADIO_MV900_RGB,"Button",BS_AUTORADIOBUTTON | WS_GROUP,520,22,53,10
|
||||
CONTROL "黑白图像",IDC_RADIO_MV900_GRAY,"Button",BS_AUTORADIOBUTTON,520,40,53,10
|
||||
CONTROL "垂直镜像",IDC_MV900_CHECK_MIRROR_VERTICALLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,520,66,53,10
|
||||
PUSHBUTTON "保存图片",IDC_BUTTON_MV900_SAVEFILE,520,163,53,14
|
||||
CONTROL "",IDC_STATIC_SV4000E_PICTURE,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,225,340,71,12
|
||||
PUSHBUTTON "调节参数",IDC_BUTTON_MV900_SET_PARA,520,97,53,14
|
||||
PUSHBUTTON "默认参数",IDC_BUTTON_MV900_DEFAULT_PARA,520,130,53,14
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -1186,6 +1203,15 @@ BEGIN
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 309
|
||||
END
|
||||
|
||||
IDD_SO7_VIDEOCARD_MV900, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 573
|
||||
VERTGUIDE, 520
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 352
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
#include "Videocard_TC4000.h"
|
||||
#include "..\..\..\Videocard\SV4000E\SV4000E.h"
|
||||
#include "Videocard_SV4000E.h"
|
||||
#include "..\..\..\Videocard\MV900\COMM.h"
|
||||
#include "..\..\..\Videocard\MV900\Convert.h"
|
||||
#include "..\..\..\Videocard\MV900\MVSDK.h"
|
||||
#include "Videocard_MV900.h"
|
||||
#endif //_RELEASE_FULL_VERSION
|
||||
|
||||
#include "..\..\..\STIL\Common\inc\cAcqEasy.h"
|
||||
@@ -129,6 +133,7 @@ BOOL CSo7_Option::OnInitDialog()
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV2000E))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV4000E))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_TC4000))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_MV900))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SO7_IP_CAMERA))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO__SO7_RS232))->SetCheck(FALSE);
|
||||
@@ -142,6 +147,7 @@ BOOL CSo7_Option::OnInitDialog()
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV2000E))->EnableWindow(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV4000E))->EnableWindow(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_TC4000))->EnableWindow(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_MV900))->EnableWindow(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SO7_IP_CAMERA))->EnableWindow(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_SO7_USB_CAMERA))->EnableWindow(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER))->EnableWindow(FALSE);
|
||||
@@ -399,6 +405,14 @@ void CSo7_Option::OnBnClickedOk()
|
||||
delete pVideocard_TC4000;
|
||||
#endif //_RELEASE_FULL_VERSION
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_MV900))->GetCheck())
|
||||
{
|
||||
#ifdef _RELEASE_FULL_VERSION
|
||||
CVideocard_MV900* pVideocard_MV900=new CVideocard_MV900();
|
||||
pVideocard_MV900->DoModal();
|
||||
delete pVideocard_MV900;
|
||||
#endif //_RELEASE_FULL_VERSION
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_TEST_IMAGE_DLL))->GetCheck())
|
||||
{
|
||||
if (!m_pSo7_Interface)
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;..\..\..\Videocard\SV4000E\dataAcq.lib;..\..\..\Videocard\SV4000E\DXMediaCap.lib;..\..\..\ART\PCI8622_32.lib;..\..\..\STIL\Dll_chr.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;..\..\..\Videocard\SV4000E\dataAcq.lib;..\..\..\Videocard\SV4000E\DXMediaCap.lib;..\..\..\ART\PCI8622_32.lib;..\..\..\STIL\Dll_chr.lib;..\..\..\Videocard\MV900\Convert.lib;..\..\..\Videocard\MV900\MVSDK.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
@@ -206,7 +206,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;..\..\..\Videocard\SV4000E\dataAcq.lib;..\..\..\Videocard\SV4000E\DXMediaCap.lib;..\..\..\ART\PCI8622_32.lib;..\..\..\STIL\Dll_chr.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;..\..\..\Videocard\SV4000E\dataAcq.lib;..\..\..\Videocard\SV4000E\DXMediaCap.lib;..\..\..\ART\PCI8622_32.lib;..\..\..\STIL\Dll_chr.lib;..\..\..\Videocard\MV900\Convert.lib;..\..\..\Videocard\MV900\MVSDK.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseSO7|Win32'">
|
||||
@@ -380,6 +380,7 @@
|
||||
</ClCompile>
|
||||
<ClCompile Include="STIL_CCS_PRIMA_Dlg.cpp" />
|
||||
<ClCompile Include="TestTesaStarEDialog.cpp" />
|
||||
<ClCompile Include="Videocard_MV900.cpp" />
|
||||
<ClCompile Include="Videocard_SDK3000.cpp" />
|
||||
<ClCompile Include="Videocard_SV2000E.cpp" />
|
||||
<ClCompile Include="Videocard_SV4000E.cpp" />
|
||||
@@ -466,6 +467,7 @@
|
||||
<ClInclude Include="targetver.h" />
|
||||
<ClInclude Include="TestTesaStarEDialog.h" />
|
||||
<ClInclude Include="VideoCardDefine.h" />
|
||||
<ClInclude Include="Videocard_MV900.h" />
|
||||
<ClInclude Include="Videocard_SDK3000.h" />
|
||||
<ClInclude Include="Videocard_SV2000E.h" />
|
||||
<ClInclude Include="Videocard_SV4000E.h" />
|
||||
|
||||
@@ -220,6 +220,7 @@
|
||||
<ClCompile Include="So7_Util_External_Trig.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Videocard_MV900.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="CaptureDataDlg.h">
|
||||
@@ -474,6 +475,7 @@
|
||||
<ClInclude Include="So7_Util_External_Trig.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Videocard_MV900.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
|
||||
@@ -21,4 +21,18 @@ typedef struct Image_Buffer
|
||||
}
|
||||
}
|
||||
};
|
||||
}Image_Buffer;
|
||||
}Image_Buffer;
|
||||
typedef struct Image_Buffer2
|
||||
{
|
||||
unsigned char ScanLine[576][768*3];
|
||||
Image_Buffer2()
|
||||
{
|
||||
for (int i=0;i<576;i++)
|
||||
{
|
||||
for (int j=0;j<768*3;j++)
|
||||
{
|
||||
ScanLine[i][j]=0;
|
||||
}
|
||||
}
|
||||
};
|
||||
}Image_Buffer2;
|
||||
@@ -0,0 +1,516 @@
|
||||
// Videocard_MV900.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "VideoCardDefine.h"
|
||||
#include "..\..\..\Videocard\MV900\COMM.h"
|
||||
#include "..\..\..\Videocard\MV900\Convert.h"
|
||||
#include "..\..\..\Videocard\MV900\MVSDK.h"
|
||||
#include "Videocard_MV900.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
#define WM_UPDATE_IMAGE WM_USER+100
|
||||
static BYTE g_DataBuffer[640*480*3];
|
||||
int m_VideoWidth=640;//640;
|
||||
int m_VideoHeight=480;//480;
|
||||
int m_VideoBitcount=3;
|
||||
int m_DisplayWidth=640;
|
||||
int m_DisplayHeight=480;
|
||||
// CVideocard_MV900 dialog
|
||||
HWND Msg_Hwnd=NULL;
|
||||
IMPLEMENT_DYNAMIC(CVideocard_MV900, CDialog)
|
||||
|
||||
CVideocard_MV900::CVideocard_MV900(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CVideocard_MV900::IDD, pParent)
|
||||
{
|
||||
m_ConvertColorType=RGB24TORGB;
|
||||
m_bSaveFile=FALSE;
|
||||
m_bMirror=FALSE;
|
||||
m_status=FALSE;
|
||||
m_hDev=NULL;
|
||||
m_nSharpness=0;
|
||||
m_nSaturation=0;
|
||||
m_nHue=0;
|
||||
m_nContrast=0;
|
||||
m_nBrightness=0;
|
||||
Msg_Hwnd=m_hWndTop;
|
||||
}
|
||||
|
||||
CVideocard_MV900::~CVideocard_MV900()
|
||||
{
|
||||
}
|
||||
|
||||
void CVideocard_MV900::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CVideocard_MV900, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDC_RADIO_MV900_RGB, &CVideocard_MV900::OnBnClickedRadioMv900Rgb)
|
||||
ON_BN_CLICKED(IDC_RADIO_MV900_GRAY, &CVideocard_MV900::OnBnClickedRadioMv900Gray)
|
||||
ON_BN_CLICKED(IDC_MV900_CHECK_MIRROR_VERTICALLY, &CVideocard_MV900::OnBnClickedMv900CheckMirrorVertically)
|
||||
ON_BN_CLICKED(IDC_BUTTON_MV900_SET_PARA, &CVideocard_MV900::OnBnClickedButtonMv900SetPara)
|
||||
ON_BN_CLICKED(IDC_BUTTON_MV900_SAVEFILE, &CVideocard_MV900::OnBnClickedButtonMv900Savefile)
|
||||
ON_BN_CLICKED(IDOK, &CVideocard_MV900::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDCANCEL, &CVideocard_MV900::OnBnClickedCancel)
|
||||
ON_BN_CLICKED(IDC_BUTTON_MV900_DEFAULT_PARA, &CVideocard_MV900::OnBnClickedButtonMv900DefaultPara)
|
||||
ON_MESSAGE(WM_UPDATE_IMAGE, &CVideocard_MV900::OnUpdateImage)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CVideocard_MV900 message handlers
|
||||
//==============================================================================
|
||||
BOOL CVideocard_MV900::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
Msg_Hwnd=AfxGetApp()->GetMainWnd()->m_hWnd;
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MV900_RGB))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_MV900_GRAY))->SetCheck(FALSE);
|
||||
UpdateData(FALSE);
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
//==============================================================================
|
||||
void CVideocard_MV900::OnBnClickedRadioMv900Rgb()
|
||||
{
|
||||
m_ConvertColorType=RGB24TORGB;
|
||||
}
|
||||
//==============================================================================
|
||||
void CVideocard_MV900::OnBnClickedRadioMv900Gray()
|
||||
{
|
||||
m_ConvertColorType=RGB24TOGRAY;
|
||||
}
|
||||
//==============================================================================
|
||||
void CVideocard_MV900::OnBnClickedMv900CheckMirrorVertically()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_MV900_CHECK_MIRROR_VERTICALLY))->GetCheck())
|
||||
{
|
||||
m_bMirror=TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bMirror=FALSE;
|
||||
}
|
||||
}
|
||||
//==============================================================================
|
||||
void CVideocard_MV900::OnBnClickedButtonMv900DefaultPara()
|
||||
{
|
||||
SetVideocardDefaultPara();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void CVideocard_MV900::OnBnClickedButtonMv900SetPara()
|
||||
{
|
||||
SetVideocardPara();
|
||||
}
|
||||
//==============================================================================
|
||||
void CVideocard_MV900::OnBnClickedButtonMv900Savefile()
|
||||
{
|
||||
CString CTmpString;
|
||||
CString PathName;
|
||||
CString path_and_fileName;
|
||||
|
||||
PathName=_T("MV900.bmp");
|
||||
CString szFilter=_T("BMP Files(*.bmp)|*.bmp|ALL Files(*.*)|*.*||");
|
||||
CFileDialog fdlg(FALSE,_T("BMP"),PathName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
|
||||
|
||||
if( fdlg.DoModal()==IDOK)
|
||||
{
|
||||
m_SaveFile=fdlg.GetPathName();
|
||||
m_bSaveFile=TRUE;
|
||||
}
|
||||
delete fdlg;
|
||||
}
|
||||
//==============================================================================
|
||||
void CVideocard_MV900::OnBnClickedOk()
|
||||
{
|
||||
LoadVideocard();
|
||||
SetTimer(1,50,NULL);
|
||||
GetDlgItem(IDOK)->EnableWindow(false);
|
||||
}
|
||||
//==============================================================================
|
||||
void CVideocard_MV900::OnBnClickedCancel()
|
||||
{
|
||||
KillTimer(1);
|
||||
UnloadVideocard();
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
//==============================================================================
|
||||
BOOL CVideocard_MV900::LoadVideocard()
|
||||
{
|
||||
#ifdef _RELEASE_FULL_VERSION
|
||||
long m_dwCard(0);
|
||||
m_dwCard=MV_GetCardNumber();
|
||||
m_hDev = Cap_Create("MVVGA", 0);
|
||||
|
||||
int m_Yoff(0),m_Xoff(0),m_Xmax(0),m_Ymax(0);
|
||||
m_Yoff = Cap_GetPropery( m_hDev, SIG_YOFF );
|
||||
m_Xoff = Cap_GetPropery( m_hDev, SIG_XOFF );
|
||||
m_Xmax = Cap_GetPropery( m_hDev, SIG_WIDTH);
|
||||
m_Ymax = Cap_GetPropery( m_hDev, SIG_HIGH );
|
||||
|
||||
|
||||
m_status=Cap_SetPropery(m_hDev,SIG_FRAME,25);
|
||||
m_status=Cap_SetPropery(m_hDev,PIEXL_BIT,24);
|
||||
m_status=Cap_SetOutSize(m_hDev,m_DisplayHeight,m_DisplayWidth);
|
||||
Cap_SetCallBack(m_hDev, (PUSERCALL)MV900_PrcVidCapCallBack, this );
|
||||
m_status=Cap_Start(m_hDev);
|
||||
#endif //_RELEASE_FULL_VERSION
|
||||
return TRUE;
|
||||
}
|
||||
//==============================================================================
|
||||
BOOL CVideocard_MV900::UnloadVideocard()
|
||||
{
|
||||
#ifdef _RELEASE_FULL_VERSION
|
||||
if (m_hDev)
|
||||
{
|
||||
Cap_Stop( m_hDev );
|
||||
Cap_Destroy(m_hDev);
|
||||
m_hDev=NULL;
|
||||
}
|
||||
#endif //_RELEASE_FULL_VERSION
|
||||
return TRUE;
|
||||
}
|
||||
//==============================================================================
|
||||
BOOL CVideocard_MV900::SetVideocardDefaultPara()
|
||||
{
|
||||
#ifdef _RELEASE_FULL_VERSION
|
||||
long min,max,def;
|
||||
Cap_GetProperyRange(m_hDev,_SHARPNESS,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_SHARPNESS,def);
|
||||
Cap_GetProperyRange(m_hDev,_SATURATION,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_SATURATION,def);
|
||||
Cap_GetProperyRange(m_hDev,_HUE,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_HUE,def);
|
||||
Cap_GetProperyRange(m_hDev,_CONTRAST,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_CONTRAST,def);
|
||||
Cap_GetProperyRange(m_hDev,_BRIGHTNESS,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_BRIGHTNESS,def);
|
||||
Cap_GetProperyRange(m_hDev,_R_GRAY,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_R_GRAY,def);
|
||||
Cap_GetProperyRange(m_hDev,_R_CONTRAST,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_R_CONTRAST,def);
|
||||
Cap_GetProperyRange(m_hDev,_G_GRAY,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_G_GRAY,def);
|
||||
Cap_GetProperyRange(m_hDev,_G_CONTRAST,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_G_CONTRAST,def);
|
||||
Cap_GetProperyRange(m_hDev,_B_GRAY,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_B_GRAY,def);
|
||||
Cap_GetProperyRange(m_hDev,_B_CONTRAST,&min,&max,&def);
|
||||
m_status=Cap_SetPropery(m_hDev,_B_CONTRAST,def);
|
||||
|
||||
m_nSharpness = Cap_GetPropery( m_hDev, _SHARPNESS );
|
||||
m_nSaturation = Cap_GetPropery( m_hDev, _SATURATION );
|
||||
m_nHue = Cap_GetPropery( m_hDev, _HUE );
|
||||
m_nContrast = Cap_GetPropery( m_hDev, _CONTRAST );
|
||||
m_nBrightness = Cap_GetPropery( m_hDev, _BRIGHTNESS );
|
||||
|
||||
#endif //_RELEASE_FULL_VERSION
|
||||
return TRUE;
|
||||
}
|
||||
//==============================================================================
|
||||
BOOL CVideocard_MV900::SetVideocardPara()
|
||||
{
|
||||
#ifdef _RELEASE_FULL_VERSION
|
||||
m_status=Cap_ShowOutputControl(m_hDev);
|
||||
#endif //_RELEASE_FULL_VERSION
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
//================================================================
|
||||
void CVideocard_MV900::ConvertVideoSubType(const Image_Buffer& _ImageBuffer,
|
||||
BYTE *_pSrcData,ConvertColorType _type,BOOL _bMirror)
|
||||
{
|
||||
int x=0;
|
||||
int y=0;
|
||||
long lCnt1=0;
|
||||
long lCnt2=0;
|
||||
long lCnt3=0;
|
||||
int Color_R=0,Color_G=0,Color_B=0;
|
||||
BYTE *pDstData=NULL;
|
||||
for(y=0;y<m_DisplayHeight;y++)
|
||||
{
|
||||
lCnt1=0;
|
||||
if(!_bMirror)
|
||||
pDstData=(BYTE*)_ImageBuffer.ScanLine[y];
|
||||
else
|
||||
pDstData=(BYTE*)_ImageBuffer.ScanLine[m_DisplayHeight-1-y];
|
||||
for(x=0;x<m_DisplayWidth*3;x+=3)
|
||||
{
|
||||
switch(_type)
|
||||
{
|
||||
case RGB24TORGB:
|
||||
{
|
||||
pDstData[x+2]=_pSrcData[y*m_VideoWidth*3+x+2];
|
||||
pDstData[x+1]=_pSrcData[y*m_VideoWidth*3+x+1];
|
||||
pDstData[x]=_pSrcData[y*m_VideoWidth*3+x];
|
||||
break;
|
||||
}
|
||||
case YUY2TORGB:
|
||||
{
|
||||
Color_R=(1164*(_pSrcData[lCnt2*2]-16)+1596*(_pSrcData[lCnt3+3]-128))/1000;
|
||||
if(Color_R>255)Color_R=255;
|
||||
if(Color_R<0)Color_R=0;
|
||||
pDstData[x+2]=static_cast<BYTE>(Color_R);
|
||||
|
||||
|
||||
Color_G=(1164*(_pSrcData[lCnt2*2]-16)-813*(_pSrcData[lCnt3+1]-128)-392*(_pSrcData[lCnt3+3]-128))/1000;
|
||||
if(Color_G>255)Color_G=255;
|
||||
if(Color_G<0)Color_G=0;
|
||||
pDstData[x+1]=static_cast<BYTE>(Color_G);
|
||||
|
||||
|
||||
Color_B=(1164*(_pSrcData[lCnt2*2]-16)+2017*(_pSrcData[lCnt3+1]-128))/1000;
|
||||
if(Color_B>255)Color_B=255;
|
||||
if(Color_B<0)Color_B=0;
|
||||
pDstData[x]=static_cast<BYTE>(Color_B);
|
||||
|
||||
break;
|
||||
}
|
||||
case RGB24TOGRAY:
|
||||
{
|
||||
pDstData[x+2]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
pDstData[x+1]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
pDstData[x]=(_pSrcData[lCnt2*3+2]+_pSrcData[lCnt2*3+1]+_pSrcData[lCnt2*3])/3;
|
||||
break;
|
||||
}
|
||||
case YUY2TOGRAY:
|
||||
{
|
||||
pDstData[x+2]=_pSrcData[2*lCnt2];
|
||||
pDstData[x+1]=_pSrcData[2*lCnt2];
|
||||
pDstData[x]=_pSrcData[2*lCnt2];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if((lCnt1%2)==1)
|
||||
lCnt3=lCnt3+4;
|
||||
lCnt2++;
|
||||
lCnt1++;
|
||||
}
|
||||
}
|
||||
}
|
||||
//================================================================
|
||||
BOOL CVideocard_MV900::SaveBitmapToFile(const CBitmap& _bitmap, CString _lpFileName)
|
||||
{
|
||||
HBITMAP hBitmap; // 为刚才的屏幕位图句柄
|
||||
HDC hDC; //设备描述表
|
||||
int iBits; //当前显示分辨率下每个像素所占字节数
|
||||
WORD wBitCount(24); //位图中每个像素所占字节数
|
||||
DWORD dwPaletteSize = 0, //定义调色板大小
|
||||
dwBmBitsSize, //位图中像素字节大小
|
||||
dwDIBSize, //位图文件大小
|
||||
dwWritten; //写入文件字节数
|
||||
BITMAP Bitmap; //位图属性结构
|
||||
BITMAPFILEHEADER bmhFiledr; //位图文件头结构
|
||||
BITMAPINFOHEADER bi; //位图信息头结构
|
||||
LPBITMAPINFOHEADER lpbi; //指向位图信息头结构
|
||||
HANDLE hFile, //定义文件
|
||||
hDib, //分配内存句柄
|
||||
hPal, //调色板句柄
|
||||
hOldPal = NULL;
|
||||
|
||||
//计算位图文件每个像素所占字节数
|
||||
hBitmap = (HBITMAP)_bitmap;
|
||||
hDC = CreateDC(_T("DISPLAY"),NULL,NULL,NULL);
|
||||
iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);
|
||||
DeleteDC(hDC);
|
||||
|
||||
if (iBits <= 1)
|
||||
wBitCount = 1;
|
||||
else if (iBits <= 4)
|
||||
wBitCount = 4;
|
||||
else if (iBits <= 8)
|
||||
wBitCount = 8;
|
||||
else if (iBits <= 24)
|
||||
wBitCount = 24;
|
||||
else if (iBits <= 32)
|
||||
wBitCount = 32;
|
||||
|
||||
//计算调色板大小
|
||||
if (wBitCount <= 8)
|
||||
dwPaletteSize = (1 << wBitCount) * sizeof (RGBQUAD);
|
||||
|
||||
//设置位图信息头结构
|
||||
GetObject(hBitmap, sizeof (BITMAP), (LPSTR)&Bitmap);
|
||||
bi.biSize = sizeof (BITMAPINFOHEADER);
|
||||
bi.biWidth = Bitmap.bmWidth;
|
||||
bi.biHeight = Bitmap.bmHeight;
|
||||
bi.biPlanes = 1;
|
||||
bi.biBitCount = wBitCount;
|
||||
bi.biCompression = BI_RGB;
|
||||
bi.biSizeImage = 0;
|
||||
bi.biXPelsPerMeter = 0;
|
||||
bi.biYPelsPerMeter = 0;
|
||||
bi.biClrUsed = 0;
|
||||
bi.biClrImportant = 0;
|
||||
|
||||
dwBmBitsSize = ((Bitmap.bmWidth * wBitCount+31) / 32) * 4 * Bitmap.bmHeight;
|
||||
|
||||
//为位图内容分配内存
|
||||
hDib = GlobalAlloc(GHND, dwBmBitsSize + dwPaletteSize + sizeof (BITMAPINFOHEADER));
|
||||
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
|
||||
*lpbi = bi;
|
||||
|
||||
// 处理调色板
|
||||
hPal = GetStockObject(DEFAULT_PALETTE);
|
||||
if (hPal)
|
||||
{
|
||||
hDC = ::GetDC(NULL);
|
||||
hOldPal = ::SelectPalette(hDC, (HPALETTE)hPal, FALSE);
|
||||
RealizePalette(hDC);
|
||||
}
|
||||
|
||||
// 获取该调色板下新的像素值
|
||||
GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight, (LPSTR)lpbi + sizeof (BITMAPINFOHEADER) + dwPaletteSize, (LPBITMAPINFO)lpbi, DIB_RGB_COLORS);
|
||||
|
||||
//恢复调色板
|
||||
if (hOldPal)
|
||||
{
|
||||
SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
|
||||
RealizePalette(hDC);
|
||||
::ReleaseDC(NULL, hDC);
|
||||
}
|
||||
|
||||
//创建位图文件
|
||||
hFile = CreateFile(_lpFileName, GENERIC_WRITE,
|
||||
0, NULL, CREATE_ALWAYS,
|
||||
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
return FALSE;
|
||||
|
||||
// 设置位图文件头
|
||||
bmhFiledr.bfType = 0x4D42; // "BM"
|
||||
dwDIBSize = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + dwPaletteSize + dwBmBitsSize;
|
||||
bmhFiledr.bfSize = dwDIBSize;
|
||||
bmhFiledr.bfReserved1 = 0;
|
||||
bmhFiledr.bfReserved2 = 0;
|
||||
bmhFiledr.bfOffBits = (DWORD)sizeof (BITMAPFILEHEADER) + (DWORD)sizeof (BITMAPINFOHEADER) + dwPaletteSize;
|
||||
|
||||
// 写入位图文件头
|
||||
WriteFile(hFile, (LPSTR)&bmhFiledr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);
|
||||
|
||||
// 写入位图文件其余内容
|
||||
WriteFile(hFile, (LPSTR)lpbi, dwDIBSize,&dwWritten, NULL);
|
||||
|
||||
//清除
|
||||
GlobalUnlock(hDib);
|
||||
GlobalFree(hDib);
|
||||
CloseHandle(hFile);
|
||||
|
||||
return TRUE;
|
||||
};
|
||||
//================================================================
|
||||
void CVideocard_MV900::OnPaint()
|
||||
{
|
||||
CDC* dc= this->GetDC();
|
||||
int nMode;
|
||||
CDC* pMemDC = new CDC;
|
||||
CBitmap pBitBmp;
|
||||
CBitmap pBitBmpNav;
|
||||
BYTE *pData;
|
||||
CBitmap* pOldBitmap;
|
||||
BITMAPINFO bmpInfo;
|
||||
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmpInfo.bmiHeader.biWidth = m_DisplayWidth;
|
||||
bmpInfo.bmiHeader.biHeight = m_DisplayHeight;
|
||||
bmpInfo.bmiHeader.biPlanes = 1;
|
||||
bmpInfo.bmiHeader.biBitCount = 24;//X位色
|
||||
bmpInfo.bmiHeader.biCompression = BI_RGB;
|
||||
bmpInfo.bmiHeader.biSizeImage = 0;
|
||||
bmpInfo.bmiHeader.biXPelsPerMeter = 30000;
|
||||
bmpInfo.bmiHeader.biYPelsPerMeter = 30000;
|
||||
bmpInfo.bmiHeader.biClrUsed = 0;
|
||||
bmpInfo.bmiHeader.biClrImportant = 0;
|
||||
|
||||
ConvertVideoSubType(m_ImageBuffer,g_DataBuffer,m_ConvertColorType,m_bMirror);
|
||||
|
||||
pData = (BYTE *)m_ImageBuffer.ScanLine;
|
||||
pBitBmp.CreateCompatibleBitmap(dc,m_DisplayWidth,m_DisplayHeight);
|
||||
SetDIBits(dc->m_hDC,pBitBmp,0,m_DisplayHeight,pData,&bmpInfo,DIB_RGB_COLORS);
|
||||
if (m_bSaveFile)
|
||||
{
|
||||
SaveBitmapToFile(pBitBmp,m_SaveFile);
|
||||
//CImage imgTemp;
|
||||
//imgTemp.Attach(pBitBmp.operator HBITMAP());
|
||||
//imgTemp.Save(m_SaveFile);
|
||||
m_bSaveFile=FALSE;
|
||||
}
|
||||
if (!pMemDC->m_hDC)
|
||||
{
|
||||
pMemDC->CreateCompatibleDC(dc);
|
||||
}
|
||||
pOldBitmap = pMemDC->SelectObject(&pBitBmp);
|
||||
nMode = pMemDC->SetBkMode(TRANSPARENT);
|
||||
dc->BitBlt(0, 0, m_DisplayWidth, m_DisplayHeight, pMemDC,0,0, SRCCOPY);
|
||||
|
||||
pMemDC->SetBkMode(nMode);
|
||||
pMemDC->SelectObject(pOldBitmap);
|
||||
ReleaseDC(pMemDC);
|
||||
delete pMemDC;
|
||||
ReleaseDC(dc);
|
||||
}
|
||||
|
||||
afx_msg LRESULT CVideocard_MV900::OnUpdateImage(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(wParam);
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
OnPaint();
|
||||
return 0;
|
||||
}
|
||||
|
||||
//================================================================================================
|
||||
void CVideocard_MV900::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
switch(nIDEvent)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
OnPaint();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
const int iStartX(0);
|
||||
const int iStartY(0);
|
||||
|
||||
//==================================SV4000E=====================================
|
||||
VOID CALLBACK MV900_PrcVidCapCallBack( PUCHAR pData, ULONG Length, PVOID pUserData)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(Length);
|
||||
UNREFERENCED_PARAMETER(pUserData);
|
||||
//memcpy(g_DataBuffer,(BYTE*)pData,Length);//640*480*m_VideoBitcount
|
||||
for(int y=iStartY;y<iStartY+480;y++)
|
||||
{
|
||||
for(int x=iStartX*3;x<(iStartX+640)*3;x++)
|
||||
{
|
||||
g_DataBuffer[(y-iStartY)*640*3+(x-iStartX)]=(BYTE)pData[y*768*3+x];
|
||||
}
|
||||
}
|
||||
//PostMessage(Msg_Hwnd,WM_UPDATE_IMAGE,0,0);
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
|
||||
VOID CALLBACK MV900_PrcVidCapCallBack( PUCHAR pData, ULONG Length, PVOID pUserData );
|
||||
// CVideocard_MV900 dialog
|
||||
|
||||
class CVideocard_MV900 : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CVideocard_MV900)
|
||||
|
||||
public:
|
||||
CVideocard_MV900(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CVideocard_MV900();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_SO7_VIDEOCARD_MV900 };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnPaint();
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
DECLARE_MESSAGE_MAP()
|
||||
private:
|
||||
Image_Buffer m_ImageBuffer;
|
||||
ConvertColorType m_ConvertColorType;
|
||||
BOOL m_bMirror;
|
||||
BOOL m_bSaveFile;
|
||||
CString m_SaveFile;
|
||||
void ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *pSrcData,ConvertColorType _type,BOOL _bMirror);
|
||||
BOOL SaveBitmapToFile(const CBitmap& bitmap, CString lpFileName);
|
||||
BOOL LoadVideocard();
|
||||
BOOL UnloadVideocard();
|
||||
BOOL SetVideocardPara();
|
||||
BOOL SetVideocardDefaultPara();
|
||||
|
||||
BOOL m_status;
|
||||
HANDLE m_hDev;
|
||||
int m_nSharpness;
|
||||
int m_nSaturation;
|
||||
int m_nHue;
|
||||
int m_nContrast;
|
||||
int m_nBrightness;
|
||||
public:
|
||||
afx_msg void OnBnClickedRadioMv900Rgb();
|
||||
afx_msg void OnBnClickedRadioMv900Gray();
|
||||
afx_msg void OnBnClickedMv900CheckMirrorVertically();
|
||||
afx_msg void OnBnClickedButtonMv900SetPara();
|
||||
afx_msg void OnBnClickedButtonMv900Savefile();
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedButtonMv900DefaultPara();
|
||||
protected:
|
||||
afx_msg LRESULT OnUpdateImage(WPARAM wParam, LPARAM lParam);
|
||||
};
|
||||
@@ -684,6 +684,7 @@
|
||||
#define IDC_BUTTON_SETTINGS 1558
|
||||
#define IDC_RADIO_VIDEOCARD_TC4000 1559
|
||||
#define IDC_BUTTON_READ_SETTINGS 1560
|
||||
#define IDC_RADIO_VIDEOCARD_MV900 1560
|
||||
#define IDC_BUTTON_WRITE_SETTINGS 1561
|
||||
#define IDC_STATIC_SDK3000_PICTURE 1562
|
||||
#define IDC_RADIO_GRAY 1563
|
||||
@@ -832,7 +833,10 @@
|
||||
#define IDC_RADIO_SV4000E_CHANNEL5 1685
|
||||
#define IDC_RADIO_SV4000E_CHANNEL_ALL 1685
|
||||
#define IDC_MFCBUTTON_SO7_PROGRAM_X_LEFT 1686
|
||||
#define IDC_BUTTON_MV900_SET_PARA 1686
|
||||
#define IDC_MFCBUTTON_SO7_PROGRAM_X_RIGHT 1687
|
||||
#define IDC_BUTTON_MV900_SET_PARA2 1687
|
||||
#define IDC_BUTTON_MV900_DEFAULT_PARA 1687
|
||||
#define IDC_MFCBUTTON_SO7_PROGRAM_Y_FRONTWARD 1688
|
||||
#define IDC_MFCBUTTON_SO7_PROGRAM_Y_BACKWARD 1689
|
||||
#define IDC_MFCBUTTON_SO7_PROGRAM_Z_UP 1690
|
||||
@@ -866,6 +870,7 @@
|
||||
#define IDD_SO7_UTIL_SETUP_SO7_CONFIG_MOTION 1720
|
||||
#define IDD_SO7_ART_PCI8622 1721
|
||||
#define IDD_DIALOG_STIL_CCS_PRIMA 1722
|
||||
#define IDD_SO7_VIDEOCARD_MV900 1723
|
||||
#define IDC_RADIO_SPEED_SLOW 1770
|
||||
#define IDC_RADIO_SCALE 1772
|
||||
#define IDC_EDIT_SPEED_X 1773
|
||||
@@ -1029,8 +1034,11 @@
|
||||
#define IDC_EDIT_ART_PCI8622_LAST_CHANNEL 1875
|
||||
#define IDC_EDIT_ART_PCI8622_FIRST_CHANNEL 1876
|
||||
#define IDC_LIST_SO7_MOTION_SEGMENT_DIS 1877
|
||||
#define IDC_CHECK4 1878
|
||||
#define IDC_CHECK_SO7_CONTROL_MODE_Z 1878
|
||||
#define IDC_BUTTON_MV900_SAVEFILE 1879
|
||||
#define IDC_MV900_CHECK_MIRROR_VERTICALLY 1880
|
||||
#define IDC_RADIO_MV900_GRAY 1881
|
||||
#define IDC_RADIO_MV900_RGB 1882
|
||||
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
|
||||
#define ID_EDIT_SO7_CONFIG_MOTION 32741
|
||||
|
||||
@@ -1040,7 +1048,7 @@
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 193
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 1879
|
||||
#define _APS_NEXT_CONTROL_VALUE 1883
|
||||
#define _APS_NEXT_SYMED_VALUE 104
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user