#include "stdafx.h"
#include "DLCWBDEMO.h"
#include "DLCWBDEMODlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_USER_RW WM_USER + 505
// 通过读取的状态值,得到第bits引脚的状态
#define GETBITSTATUS( btIn, bits ) ( btIn & ( 0x01 << bits ) ) ? 1 : 0
// 设置将第bits引脚设为高时的Out值
#define SETBIT( usOut, bits ) usOut |= ( 0x0100 << bits ); \
usOut |= ( 0x01 << bits );
// 设置将第bits引脚设为低时的Out值
#define CLEARBIT( usOut, bits ) usOut |= ( 0x0100 << bits ); \
usOut &= ( ~( 0x01 << bits ) );
// 设置读第bits引脚时的Out值
#define GETBIT( usOut, bits ) usOut &= ( ~( 0x0100 << bits ) );
/*--------------------------------------------------------------------
any question, please send email: mike.lab@huaqi.com
==================================================================*/
VOID CALLBACK AWBCallback( DWORD dw1, LPVOID lpContext )
{
CDLCWBDEMODlg *pDlgDemo = ( CDLCWBDEMODlg*)lpContext;
DWORD dwResult = dw1;
pDlgDemo->FinishAWB( dwResult );
}
VOID CALLBACK AECallback( DWORD dw1, LPVOID lpContext )
{
CDLCWBDEMODlg *pDlgDemo = ( CDLCWBDEMODlg*)lpContext;
DWORD dwResult = dw1;
pDlgDemo->FinishAE( dwResult );
}
VOID CALLBACK WINAPI FrameCallBack( LPVOID lpParam1, LPVOID lpPoint, LPVOID lpContext )
{
UCHAR *pRgb = (UCHAR*)lpParam1;
OutputDebugString( "Frame CallBack!!!!!!!");
CDLCWBDEMODlg* pDLDlg = (CDLCWBDEMODlg*)lpContext;
static Count = 0;
TCHAR Buf[256];
_stprintf( Buf, "%d", Count );
OutputDebugString( Buf );
// 每读一帧,就读取一个引脚
pDLDlg->ReadPin( Count % 8 );
Count++;
}
CDLCWBDEMODlg::CDLCWBDEMODlg(CWnd* pParent /*=NULL*/)
: CDialog(CDLCWBDEMODlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDLCWBDEMODlg)
m_bPlay = FALSE;
m_bCapture = FALSE;
m_strMessage = _T("");
m_bRawDataShow = FALSE;
m_bUpDown = FALSE;
m_bClearPreview = FALSE;
m_bBW = FALSE;
m_bPause = FALSE;
//}}AFX_DATA_INIT
m_hDevice = NULL;
}
void CDLCWBDEMODlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDLCWBDEMODlg)
DDX_Control(pDX, IDC_COMBOVALUE, m_comboValue);
DDX_Control(pDX, IDC_COMBORW, m_comboRW);
DDX_Control(pDX, IDC_COMBOPIN, m_comboPin);
DDX_Control(pDX, IDC_STATIC_VIDEO, m_staticVideo);
DDX_Control(pDX, IDC_SLIDER_COLOR, m_sliderColor);
DDX_Control(pDX, IDC_COMBO_COLOR, m_comboColor);
DDX_Control(pDX, IDC_COMBO_SIZE, m_comboSize);
DDX_Check(pDX, IDC_CHECK_PLAY, m_bPlay);
DDX_Text(pDX, IDC_STATIC_MESSAGE, m_strMessage);
DDX_Check(pDX, IDC_CHECK_RAWDATA, m_bRawDataShow);
DDX_Check(pDX, IDC_CHECK_UPDOWN, m_bUpDown);
DDX_Check(pDX, IDC_CHECK_CLEARE, m_bClearPreview);
DDX_Check(pDX, IDC_CHECK_BW, m_bBW);
DDX_Check(pDX, IDC_CHECK_PAUSE, m_bPause);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDLCWBDEMODlg, CDialog)
//{{AFX_MSG_MAP(CDLCWBDEMODlg)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_CHECK_PLAY, OnCheckPlay)
ON_CBN_SELCHANGE(IDC_COMBO_SIZE, OnSelchangeComboSize)
ON_CBN_SELCHANGE(IDC_COMBO_COLOR, OnSelchangeComboColor)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_COLOR, OnReleasedcaptureSliderColor)
ON_BN_CLICKED(IDC_BUTTON_CAP, OnButtonCap)
ON_BN_CLICKED(IDC_CHECK_BW, OnCheckBw)
ON_BN_CLICKED(IDC_CHECK_CLEARE, OnCheckCleare)
ON_BN_CLICKED(IDC_CHECK_RAWDATA, OnCheckRawdata)
ON_BN_CLICKED(IDC_CHECK_UPDOWN, OnCheckUpdown)
ON_BN_CLICKED(IDC_BUTTON_AWB, OnButtonAwb)
ON_BN_CLICKED(IDC_BUTTON_AE, OnButtonAe)
ON_BN_CLICKED(IDC_CHECK_PAUSE, OnCheckPause)
ON_BN_CLICKED(IDC_BUTTON_TESTREAD, OnButtonTestread)
ON_BN_CLICKED(IDC_BUTTON_TESTWRITE, OnButtonTestwrite)
ON_BN_CLICKED(IDC_BUTTONRW, OnButtonrw)
ON_WM_SYSCOMMAND()
ON_WM_QUERYDRAGICON()
ON_CBN_SELCHANGE(IDC_COMBORW, OnSelchangeComborw)
ON_MESSAGE( WM_USER_RW, UserRW )
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CDLCWBDEMODlg::OnPaint()
{
CDialog::OnPaint();
}
BOOL CDLCWBDEMODlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_nROff = m_nGOff = m_nBOff = 0;
memset( &m_CamFeature, 0, sizeof( CAMFEATURE ) );
m_pRawData = NULL;
m_pRawData = ( BYTE* ) new BYTE [ MAXWIDTH * MAXHEIGHT + 512 ];
m_pRgbData = NULL;
m_pRgbData = ( BYTE* ) new BYTE [ MAXWIDTH * MAXHEIGHT * 3 ];
memset( &m_CapInfo, 0, sizeof( CapInfoStruct ) );
m_CapInfo.Buffer = m_pRawData;
m_CapInfo.Width = 640;
m_CapInfo.Height = 480;
m_CapInfo.Exposure = 60;
memset( m_CapInfo.Gain, 44, 3 );
///////////////////////////////////////////////////////////////
m_comboSize.SetCurSel( 2 );
m_comboColor.SetCurSel( 0 );
int nIndex;
if( ResSuccess != HqDLInitialize(_T("Golden Hawk"), &nIndex, &m_CapInfo, &m_hDevice ) )
{
HqDLUninitialize( &m_hDevice );
m_hDevice = NULL;
::MessageBox( NULL, _T("Initial Error"), _T("Demo"), 0 );
return FALSE;
}
SetCamFeature();
HqDLEnableColorOffset( m_hDevice, 0, 0, 0, TRUE );
// IO
m_comboRW.SetCurSel( 0 );
m_comboPin.SetCurSel( 0 );
m_comboValue.EnableWindow( m_comboRW.GetCurSel() ? TRUE : FALSE );
m_comboValue.SetCurSel( 0 );
m_Out = 0x0000;
m_In = 0x00;
GETBIT( m_Out, 0 );
HqDLBitOperationX( m_hDevice, m_Out, &m_In );
m_comboValue.SetCurSel( GETBITSTATUS( m_In, 0 ) );
UpdateData( FALSE );
return TRUE;
}
BOOL CDLCWBDEMODlg::DestroyWindow()
{
Play( FALSE );
if( m_pRawData )
{
delete [] m_pRawData;
m_pRawData = NULL;
}
if( m_pRgbData )
{
delete [] m_pRgbData;
m_pRgbData = NULL;
}
if( m_hDevice != NULL )
HqDLUninitialize( &m_hDevice );
return CDialog::DestroyWindow();
}
void CDLCWBDEMODlg::OnCheckPlay()
{
UpdateData();
Play( m_bPlay ); // 开始采集/停止采集
}
void CDLCWBDEMODlg::OnSelchangeComboSize()
{
int nSize = m_comboSize.GetCurSel();
ULONG Width, Height;
switch( nSize )
{
case 0: Width = 320; Height = 240; break;
case 1: Width = 640; Height = 480; break;
case 2: Width = 1280; Height = 1024; break;
}
m_CapInfo.Width = Width;
m_CapInfo.Height = Height;
HqDLSetCapInfo( m_hDevice, &m_CapInfo );
UpdateData( FALSE );
}
void CDLCWBDEMODlg::OnSelchangeComboColor()
{
if( m_hDevice == NULL ) return;
int nColor = m_comboColor.GetCurSel();
ULONG Min = 1;
ULONG Max = 1;
ULONG Value;
switch( nColor )
{
case 0: Max = 63; Value = m_CapInfo.Gain[0]; break;
case 1: Max = 63; Value = m_CapInfo.Gain[1]; break;
case 2: Max = 63; Value = m_CapInfo.Gain[2]; break;
case 3: Max = 500; Value = m_CapInfo.Exposure; break;
case 4: Min = -255; Max = 255; Value = m_nROff; break;
case 5: Min = -255; Max = 255; Value = m_nGOff; break;
case 6: Min = -255; Max = 255; Value = m_nBOff; break;
case 7: Min = 0; Max = MAXWIDTH - m_CapInfo.Width; Value = m_CapInfo.OffsetX; break;
case 8: Min = 0; Max = MAXHEIGHT - m_CapInfo.Height; Value = m_CapInfo.OffsetY; break;
}
m_sliderColor.SetRange( Min, Max );
m_sliderColor.SetPos( Value );
UpdateData(FALSE);
}
void CDLCWBDEMODlg::OnReleasedcaptureSliderColor(NMHDR* pNMHDR, LRESULT* pResult)
{
int nPos = m_sliderColor.GetPos();
int nColor = m_comboColor.GetCurSel();
switch( nColor )
{
#ifdef DLC131
case 0:
case 1:
case 2:
m_CapInfo.Gain[0] = m_CapInfo.Gain[1] = m_CapInfo.Gain[2] = nPos;
HqDLSetCapInfo( m_hDevice, &m_CapInfo );
break;
#else
case 0: m_CapInfo.Gain[0] = nPos; HqDLSetCapInfo( m_hDevice, &m_CapInfo ); break;
case 1: m_CapInfo.Gain[1] = nPos; HqDLSetCapInfo( m_hDevice, &m_CapInfo ); break;
case 2: m_CapInfo.Gain[2] = nPos; HqDLSetCapInfo( m_hDevice, &m_CapInfo ); break;
#endif
case 3: m_CapInfo.Exposure = nPos; HqDLSetCapInfo( m_hDevice, &m_CapInfo ); break;
#ifdef DLC131
// for mono camera, you must set Gain[0] = Gain[1] = Gain[2]
// and m_nROff = m_nGOff = m_nBOff
case 4:
case 5:
case 6
没有合适的资源?快使用搜索试试~ 我知道了~
DLCW-L3.0驱动

共51个文件
exe:6个
sbr:6个
obj:6个


温馨提示
DLCW-L3.0驱动 DLCW-L3.0驱动 华旗爱国相机300万像素驱动
资源推荐
资源详情
资源评论











收起资源包目录

































































共 51 条
- 1

chengg0769
- 粉丝: 440
- 资源: 18
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
- 3
前往页