新增TC4000视频卡测试
This commit is contained in:
@@ -350,7 +350,7 @@ BEGIN
|
||||
PUSHBUTTON "MoveTo",IDC_BUTTON_ZOOM_MOVETO,263,43,50,14
|
||||
END
|
||||
|
||||
IDD_S07_OPTION_DIALOG DIALOGEX 0, 0, 297, 150
|
||||
IDD_S07_OPTION_DIALOG DIALOGEX 0, 0, 298, 166
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Option Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
@@ -359,10 +359,12 @@ BEGIN
|
||||
CONTROL "Keyence激光",IDC_RADIO_KEYENCE_LASER,"Button",BS_AUTORADIOBUTTON,175,64,76,10
|
||||
CONTROL "SDK3000视频卡",IDC_RADIO_VIDEOCARD_SDK3000,"Button",BS_AUTORADIOBUTTON,48,39,69,10
|
||||
CONTROL "SV2000E视频卡",IDC_RADIO_VIDEOCARD_SV2000E,"Button",BS_AUTORADIOBUTTON,48,64,69,10
|
||||
CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,48,89,69,10
|
||||
DEFPUSHBUTTON "OK",IDOK,181,129,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,240,129,50,14
|
||||
GROUPBOX "测试选项",IDC_STATIC,23,17,263,92
|
||||
CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,48,89,69,10
|
||||
DEFPUSHBUTTON "OK",IDOK,181,145,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,241,145,50,14
|
||||
GROUPBOX "测试选项",IDC_STATIC,29,15,243,120
|
||||
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON,175,89,45,10
|
||||
CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON,48,114,62,10
|
||||
END
|
||||
|
||||
IDD_SO7_VIDEOCARD_SDK3000 DIALOGEX 0, 0, 488, 316
|
||||
@@ -507,6 +509,37 @@ BEGIN
|
||||
CONTROL "V",IDC_CHECK_REPETESTV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,267,20,10
|
||||
END
|
||||
|
||||
IDD_SO7_UTIL_IMAGE_DLL DIALOGEX 0, 0, 316, 183
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Test Imae.dll"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
PUSHBUTTON "Exit",IDCANCEL,259,162,50,14
|
||||
PUSHBUTTON "Start",IDC_BUTTON_IMAGEDLL_START_SCAN_LASER,55,41,50,14
|
||||
PUSHBUTTON "Get Data",IDC_BUTTON_IMAGEDLL_GET_SCAN_LASER_DATA,127,41,50,14
|
||||
PUSHBUTTON "Pause &Get",IDC_BUTTON_IMAGEDLL_PAUSE_AND_GET_SCAN_LASER_DATA,129,70,50,14
|
||||
PUSHBUTTON "Stop",IDC_BUTTON_IMAGEDLL_STOP_SCAN_LASER,55,71,50,14
|
||||
END
|
||||
|
||||
IDD_SO7_VIDEOCARD_TC4000 DIALOGEX 0, 0, 488, 316
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "TC4000视频卡"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "开始",IDOK,372,298,50,14
|
||||
PUSHBUTTON "退出",IDCANCEL,435,298,50,14
|
||||
CONTROL "彩色图像",IDC_RADIO_RGB,"Button",BS_AUTORADIOBUTTON | WS_GROUP,435,49,48,10
|
||||
CONTROL "黑白图像",IDC_RADIO_GRAY,"Button",BS_AUTORADIOBUTTON,435,67,48,10
|
||||
CONTROL "垂直镜像",IDC_CHECK_MIRROR_VERTICALLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,435,93,48,10
|
||||
PUSHBUTTON "保存图片",IDC_BUTTON_SAVE_PICTURE,435,117,50,14
|
||||
GROUPBOX "通道选择",IDC_STATIC,438,145,43,87
|
||||
CONTROL "",IDC_STATIC_TC4000_PICTURE,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,228,296,68,16
|
||||
CONTROL "1",IDC_RADIO_TC4000_CHANNEL1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,451,162,20,10
|
||||
CONTROL "2",IDC_RADIO_TC4000_CHANNEL2,"Button",BS_AUTORADIOBUTTON,451,179,20,10
|
||||
CONTROL "3",IDC_RADIO_TC4000_CHANNEL3,"Button",BS_AUTORADIOBUTTON,451,196,20,10
|
||||
CONTROL "4",IDC_RADIO_TC4000_CHANNEL4,"Button",BS_AUTORADIOBUTTON,451,213,20,10
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -542,9 +575,9 @@ BEGIN
|
||||
IDD_S07_OPTION_DIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 290
|
||||
RIGHTMARGIN, 291
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 143
|
||||
BOTTOMMARGIN, 159
|
||||
END
|
||||
|
||||
IDD_SO7_VIDEOCARD_SDK3000, DIALOG
|
||||
@@ -578,6 +611,23 @@ BEGIN
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 429
|
||||
END
|
||||
|
||||
IDD_SO7_UTIL_IMAGE_DLL, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 309
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 176
|
||||
END
|
||||
|
||||
IDD_SO7_VIDEOCARD_TC4000, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 485
|
||||
VERTGUIDE, 435
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 312
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "resource.h"
|
||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||
#include "ProcessButton.h"
|
||||
|
||||
#include "VideoCardDefine.h"
|
||||
#include "..\..\..\Videocard\SDK3000\sdk3000_7130.h"
|
||||
#include "Videocard_SDK3000.h"
|
||||
@@ -12,11 +13,19 @@
|
||||
#include "..\..\..\Videocard\SV2000E\DXMediaCap.h"
|
||||
#include "..\..\..\Videocard\SV2000E\dataAcq.h"
|
||||
#include "Videocard_SV2000E.h"
|
||||
|
||||
#include "..\..\..\Videocard\TC4000\Sa7134Capture.h"
|
||||
#include "Videocard_TC4000.h"
|
||||
|
||||
#include "SO7_UtilDlg.h"
|
||||
#include "..\..\..\Keyence\Keyence_Laser.h"
|
||||
#include "..\..\..\Keyence\Keyence_Laser_LK_H.h"
|
||||
#include "..\..\..\Keyence\\Keyence_Proto.h"
|
||||
#include "Keyence_UtilDlg.h"
|
||||
|
||||
#include "..\..\..\SevenOcean\dll.h"
|
||||
#include "..\..\..\SevenOcean\So7_Interface.h"
|
||||
#include "So7_Util_ImageDll.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "So7_Option.h"
|
||||
|
||||
@@ -24,6 +33,8 @@ CSO7_Proto* m_pSO7_Proto=NULL;
|
||||
CKeyence_Laser* m_pKeyence_Laser=NULL;
|
||||
CKeyence_Laser_LK_H* m_pKeyence_Laser_LK_H=NULL;
|
||||
CKeyence_Proto* m_pKeyence_Proto=NULL;
|
||||
|
||||
CSo7_Interface* m_pSo7_Interface=NULL;
|
||||
// CSo7_Option dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CSo7_Option, CDialog)
|
||||
@@ -129,7 +140,7 @@ void CSo7_Option::OnBnClickedOk()
|
||||
m_pKeyence_Proto=NULL;
|
||||
delete m_pSO7_Proto;
|
||||
m_pSO7_Proto=NULL;
|
||||
}
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->GetCheck())
|
||||
{
|
||||
CVideocard_SDK3000* pVideocard_SDK3000=new CVideocard_SDK3000();
|
||||
@@ -141,6 +152,27 @@ void CSo7_Option::OnBnClickedOk()
|
||||
CVideocard_SV2000E* pVideocard_SV2000E=new CVideocard_SV2000E();
|
||||
pVideocard_SV2000E->DoModal();
|
||||
delete pVideocard_SV2000E;
|
||||
}
|
||||
else if (((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_TC4000))->GetCheck())
|
||||
{
|
||||
CVideocard_TC4000* pVideocard_TC4000=new CVideocard_TC4000();
|
||||
pVideocard_TC4000->DoModal();
|
||||
delete pVideocard_TC4000;
|
||||
}
|
||||
else if(((CButton *)GetDlgItem(IDC_RADIO_TEST_IMAGE_DLL))->GetCheck())
|
||||
{
|
||||
if (!m_pSo7_Interface)
|
||||
{
|
||||
m_pSo7_Interface=new CSo7_Interface();
|
||||
}
|
||||
CSo7_Util_ImageDll* pSo7_Util_ImageDll=new CSo7_Util_ImageDll();
|
||||
pSo7_Util_ImageDll->DoModal();
|
||||
delete pSo7_Util_ImageDll;
|
||||
if (m_pSo7_Interface)
|
||||
{
|
||||
delete m_pSo7_Interface;
|
||||
m_pSo7_Interface=NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
// So7_Util_ImageDll.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "..\..\..\SevenOcean\dll.h"
|
||||
#include "..\..\..\SevenOcean\So7_Interface.h"
|
||||
#include "So7_Util_ImageDll.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
extern CSo7_Interface* m_pSo7_Interface;
|
||||
// CSo7_Util_ImageDll dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CSo7_Util_ImageDll, CDialog)
|
||||
|
||||
CSo7_Util_ImageDll::CSo7_Util_ImageDll(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CSo7_Util_ImageDll::IDD, pParent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CSo7_Util_ImageDll::~CSo7_Util_ImageDll()
|
||||
{
|
||||
}
|
||||
|
||||
void CSo7_Util_ImageDll::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSo7_Util_ImageDll, CDialog)
|
||||
ON_BN_CLICKED(IDC_BUTTON_IMAGEDLL_START_SCAN_LASER, &CSo7_Util_ImageDll::OnBnClickedButtonImagedllStartScanLaser)
|
||||
ON_BN_CLICKED(IDC_BUTTON_IMAGEDLL_STOP_SCAN_LASER, &CSo7_Util_ImageDll::OnBnClickedButtonImagedllStopScanLaser)
|
||||
ON_BN_CLICKED(IDC_BUTTON_IMAGEDLL_GET_SCAN_LASER_DATA, &CSo7_Util_ImageDll::OnBnClickedButtonImagedllGetScanLaserData)
|
||||
ON_BN_CLICKED(IDC_BUTTON_IMAGEDLL_PAUSE_AND_GET_SCAN_LASER_DATA, &CSo7_Util_ImageDll::OnBnClickedButtonImagedllPauseAndGetScanLaserData)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CSo7_Util_ImageDll message handlers
|
||||
|
||||
//===================================================
|
||||
BOOL CSo7_Util_ImageDll::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);
|
||||
}
|
||||
}
|
||||
|
||||
m_pSo7_Interface->InitDll();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
|
||||
}
|
||||
|
||||
//======================================================
|
||||
void CSo7_Util_ImageDll::OnBnClickedButtonImagedllStartScanLaser()
|
||||
{
|
||||
m_pSo7_Interface->StartStoreData();
|
||||
}
|
||||
|
||||
//======================================================
|
||||
void CSo7_Util_ImageDll::OnBnClickedButtonImagedllStopScanLaser()
|
||||
{
|
||||
m_pSo7_Interface->StopStoreData();
|
||||
}
|
||||
|
||||
//======================================================
|
||||
void CSo7_Util_ImageDll::OnBnClickedButtonImagedllGetScanLaserData()
|
||||
{
|
||||
m_pSo7_Interface->GetStoredData();
|
||||
}
|
||||
|
||||
//======================================================
|
||||
void CSo7_Util_ImageDll::OnBnClickedButtonImagedllPauseAndGetScanLaserData()
|
||||
{
|
||||
m_pSo7_Interface->PauseScanAndGetData();
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CSo7_Util_ImageDll dialog
|
||||
|
||||
class CSo7_Util_ImageDll : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CSo7_Util_ImageDll)
|
||||
|
||||
public:
|
||||
CSo7_Util_ImageDll(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CSo7_Util_ImageDll();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_SO7_UTIL_IMAGE_DLL };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnBnClickedButtonImagedllStartScanLaser();
|
||||
afx_msg void OnBnClickedButtonImagedllStopScanLaser();
|
||||
afx_msg void OnBnClickedButtonImagedllGetScanLaserData();
|
||||
afx_msg void OnBnClickedButtonImagedllPauseAndGetScanLaserData();
|
||||
};
|
||||
@@ -109,7 +109,7 @@
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
@@ -170,7 +170,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\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;..\..\..\Keyence\LKIF2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>..\..\..\..\..\..\..\ThirdParty\UsbSupport\LibUsb_Win\Lib\Msvc\libusb.lib;..\..\..\Videocard\SDK3000\sdk3000_7130.lib;..\..\..\Videocard\SV2000E\dataAcq.lib;..\..\..\Videocard\SV2000E\DXMediaCap.lib;..\..\..\Videocard\TC4000\Sa7134Capture.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
@@ -213,6 +213,7 @@
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\SevenOcean\CMMIO_BASE.CPP" />
|
||||
<ClCompile Include="..\..\..\SevenOcean\CMMIO_SERIAL.CPP" />
|
||||
<ClCompile Include="..\..\..\SevenOcean\So7_Interface.cpp" />
|
||||
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto.cpp" />
|
||||
<ClCompile Include="..\LOGGER.CPP" />
|
||||
<ClCompile Include="..\Proto_Util.cpp" />
|
||||
@@ -238,6 +239,7 @@
|
||||
<ClCompile Include="So7_Option.cpp" />
|
||||
<ClCompile Include="SO7_Send_Parameter.cpp" />
|
||||
<ClCompile Include="SO7_UtilDlg.cpp" />
|
||||
<ClCompile Include="So7_Util_ImageDll.cpp" />
|
||||
<ClCompile Include="SO7_VolComp.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
@@ -247,6 +249,7 @@
|
||||
</ClCompile>
|
||||
<ClCompile Include="Videocard_SDK3000.cpp" />
|
||||
<ClCompile Include="Videocard_SV2000E.cpp" />
|
||||
<ClCompile Include="Videocard_TC4000.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\Animatics\Animatics_Proto.h" />
|
||||
@@ -260,6 +263,8 @@
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMD_H.h" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMMIO_BASE.H" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\CMMIO_SERIAL.H" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\DLL.h" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\NewDataStruct.h" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\So7_Interface.h" />
|
||||
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto.h" />
|
||||
<ClInclude Include="..\..\..\Videocard\SDK3000\sdk3000_7130.h" />
|
||||
@@ -287,6 +292,7 @@
|
||||
<ClInclude Include="So7_Option.h" />
|
||||
<ClInclude Include="SO7_Send_Parameter.h" />
|
||||
<ClInclude Include="SO7_UtilDlg.h" />
|
||||
<ClInclude Include="So7_Util_ImageDll.h" />
|
||||
<ClInclude Include="SO7_VolComp.h" />
|
||||
<ClInclude Include="STATUS_MOTION.H" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
@@ -294,6 +300,7 @@
|
||||
<ClInclude Include="VideoCardDefine.h" />
|
||||
<ClInclude Include="Videocard_SDK3000.h" />
|
||||
<ClInclude Include="Videocard_SV2000E.h" />
|
||||
<ClInclude Include="Videocard_TC4000.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\..\Animatics\IntegMotorInterface.tlb" />
|
||||
|
||||
@@ -109,6 +109,15 @@
|
||||
<ClCompile Include="..\..\..\Keyence\Keyence_Laser_LK_H.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\SevenOcean\So7_Interface.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="So7_Util_ImageDll.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Videocard_TC4000.cpp">
|
||||
<Filter>Sources Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="CaptureDataDlg.h">
|
||||
@@ -246,6 +255,18 @@
|
||||
<ClInclude Include="..\..\..\Keyence\LKIFCommonDefine.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\SevenOcean\DLL.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\SevenOcean\NewDataStruct.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="So7_Util_ImageDll.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Videocard_TC4000.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "afxdialogex.h"
|
||||
|
||||
static BYTE g_DataBuffer[640*480*2];
|
||||
int g_nPic(0);
|
||||
|
||||
HANDLE g_hEventCap = NULL;
|
||||
HANDLE g_hEventExt = NULL;
|
||||
|
||||
@@ -16,29 +16,6 @@ static const long SaturationDefault = 5000;
|
||||
static const long HueDefault = 5000;
|
||||
static const long SharpnessDefault = 4;
|
||||
|
||||
//ÊÓÆµÖÆÊ½
|
||||
typedef enum
|
||||
{
|
||||
VideoStandard_None = 0x00000000,
|
||||
VideoStandard_NTSC_M = 0x00000001,
|
||||
VideoStandard_NTSC_M_J = 0x00000002,
|
||||
VideoStandard_NTSC_433 = 0x00000004,
|
||||
VideoStandard_PAL_B = 0x00000010,
|
||||
VideoStandard_PAL_D = 0x00000020,
|
||||
VideoStandard_PAL_H = 0x00000080,
|
||||
VideoStandard_PAL_I = 0x00000100,
|
||||
VideoStandard_PAL_M = 0x00000200,
|
||||
VideoStandard_PAL_N = 0x00000400,
|
||||
VideoStandard_PAL_60 = 0x00000800,
|
||||
VideoStandard_SECAM_B = 0x00001000,
|
||||
VideoStandard_SECAM_D = 0x00002000,
|
||||
VideoStandard_SECAM_G = 0x00004000,
|
||||
VideoStandard_SECAM_H = 0x00008000,
|
||||
VideoStandard_SECAM_K = 0x00010000,
|
||||
VideoStandard_SECAM_K1 = 0x00020000,
|
||||
VideoStandard_SECAM_L = 0x00040000,
|
||||
VideoStandard_SECAM_L1 = 0x00080000,
|
||||
} VideoStandard;
|
||||
static BYTE g_DataBuffer[640*480*2];
|
||||
// CVideocard_SV2000E dialog
|
||||
|
||||
|
||||
@@ -0,0 +1,509 @@
|
||||
// Videocard_SDK3000.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "VideoCardDefine.h"
|
||||
#include "..\..\..\Videocard\TC4000\Sa7134Capture.h"
|
||||
#include "Videocard_TC4000.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
static const ULONG BrightnessDefault = 0x80;
|
||||
static const ULONG ContrastDefault = 0x46;//0x44;
|
||||
static const ULONG SaturationDefault = 0x44;//0x3C;
|
||||
static const ULONG HueDefault = 0x00;
|
||||
static const ULONG SharpnessDefault = 0x01;
|
||||
|
||||
static BYTE g_DataBuffer[640*480*2];
|
||||
static DWORD SwitchChannel=0;
|
||||
// CVideocard_TC4000 dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CVideocard_TC4000, CDialog)
|
||||
|
||||
CVideocard_TC4000::CVideocard_TC4000(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CVideocard_TC4000::IDD, pParent)
|
||||
{
|
||||
m_Status=FALSE;
|
||||
m_dwCard=0;
|
||||
m_nDevNum=0;
|
||||
m_hCapThread = NULL;
|
||||
m_bMirror=FALSE;
|
||||
m_ConvertColorType=YUY2TORGB;
|
||||
m_bSaveFile=FALSE;
|
||||
}
|
||||
|
||||
CVideocard_TC4000::~CVideocard_TC4000()
|
||||
{
|
||||
}
|
||||
|
||||
void CVideocard_TC4000::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CVideocard_TC4000, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDOK, &CVideocard_TC4000::OnBnClickedOk)
|
||||
ON_BN_CLICKED(IDCANCEL, &CVideocard_TC4000::OnBnClickedCancel)
|
||||
ON_BN_CLICKED(IDC_RADIO_RGB, &CVideocard_TC4000::OnBnClickedRadioRgb)
|
||||
ON_BN_CLICKED(IDC_RADIO_GRAY, &CVideocard_TC4000::OnBnClickedRadioGray)
|
||||
ON_BN_CLICKED(IDC_CHECK_MIRROR_VERTICALLY, &CVideocard_TC4000::OnBnClickedCheckMirrorVertically)
|
||||
ON_BN_CLICKED(IDC_BUTTON_SAVE_PICTURE, &CVideocard_TC4000::OnBnClickedButtonSavePicture)
|
||||
ON_BN_CLICKED(IDC_RADIO_TC4000_CHANNEL1, &CVideocard_TC4000::OnBnClickedRadioTc4000Channel1)
|
||||
ON_BN_CLICKED(IDC_RADIO_TC4000_CHANNEL2, &CVideocard_TC4000::OnBnClickedRadioTc4000Channel2)
|
||||
ON_BN_CLICKED(IDC_RADIO_TC4000_CHANNEL3, &CVideocard_TC4000::OnBnClickedRadioTc4000Channel3)
|
||||
ON_BN_CLICKED(IDC_RADIO_TC4000_CHANNEL4, &CVideocard_TC4000::OnBnClickedRadioTc4000Channel4)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CVideocard_TC4000 message handlers
|
||||
//====================================
|
||||
BOOL CVideocard_TC4000::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);
|
||||
}
|
||||
}
|
||||
((CButton *)GetDlgItem(IDC_RADIO_RGB))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_GRAY))->SetCheck(FALSE);
|
||||
|
||||
((CButton *)GetDlgItem(IDC_RADIO_TC4000_CHANNEL1))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_TC4000_CHANNEL2))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_TC4000_CHANNEL3))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_TC4000_CHANNEL4))->SetCheck(FALSE);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
//======================================
|
||||
void CVideocard_TC4000::OnBnClickedOk()
|
||||
{
|
||||
BOOL LoadStatus=LoadVideocard();
|
||||
if(LoadStatus)
|
||||
{
|
||||
SetTimer(1,50,NULL);
|
||||
GetDlgItem(IDOK)->EnableWindow(false);
|
||||
}
|
||||
|
||||
}
|
||||
//==========================================
|
||||
void CVideocard_TC4000::OnBnClickedCancel()
|
||||
{
|
||||
KillTimer(1);
|
||||
UnloadVideocard();
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
//============================================
|
||||
void CVideocard_TC4000::OnBnClickedRadioRgb()
|
||||
{
|
||||
m_ConvertColorType=YUY2TORGB;
|
||||
}
|
||||
|
||||
//============================================
|
||||
void CVideocard_TC4000::OnBnClickedRadioGray()
|
||||
{
|
||||
m_ConvertColorType=YUY2TOGRAY;
|
||||
}
|
||||
|
||||
//============================================
|
||||
void CVideocard_TC4000::OnBnClickedCheckMirrorVertically()
|
||||
{
|
||||
if (((CButton *)GetDlgItem(IDC_CHECK_MIRROR_VERTICALLY))->GetCheck())
|
||||
{
|
||||
m_bMirror=TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bMirror=FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================
|
||||
void CVideocard_TC4000::OnBnClickedRadioTc4000Channel1()
|
||||
{
|
||||
VCAStopVideoCapture(SwitchChannel);
|
||||
SwitchChannel=0;
|
||||
VCAStartVideoCapture(SwitchChannel,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,"");
|
||||
}
|
||||
|
||||
//==========================================
|
||||
void CVideocard_TC4000::OnBnClickedRadioTc4000Channel2()
|
||||
{
|
||||
VCAStopVideoCapture(SwitchChannel);
|
||||
SwitchChannel=1;
|
||||
VCAStartVideoCapture(SwitchChannel,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,"");
|
||||
|
||||
}
|
||||
|
||||
//==========================================
|
||||
void CVideocard_TC4000::OnBnClickedRadioTc4000Channel3()
|
||||
{
|
||||
VCAStopVideoCapture(SwitchChannel);
|
||||
SwitchChannel=2;
|
||||
VCAStartVideoCapture(SwitchChannel,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,"");
|
||||
|
||||
}
|
||||
|
||||
//==========================================
|
||||
void CVideocard_TC4000::OnBnClickedRadioTc4000Channel4()
|
||||
{
|
||||
VCAStopVideoCapture(SwitchChannel);
|
||||
SwitchChannel=3;
|
||||
VCAStartVideoCapture(SwitchChannel,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,"");
|
||||
|
||||
}
|
||||
|
||||
//============================================
|
||||
void CVideocard_TC4000::OnBnClickedButtonSavePicture()
|
||||
{
|
||||
CString CTmpString;
|
||||
CString PathName;
|
||||
CString path_and_fileName;
|
||||
|
||||
PathName=_T("TC4000.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;
|
||||
|
||||
|
||||
}
|
||||
//=======================================
|
||||
BOOL CVideocard_TC4000::LoadVideocard()
|
||||
{
|
||||
HWND mHwnd=GetDlgItem(IDC_STATIC_TC4000_PICTURE)->GetSafeHwnd();
|
||||
m_Status=VCAInitSdk(mHwnd, PCI_MEMORY_VIDEOMEMORY,0);//PCI_MEMORY_VIDEOMEMORY);
|
||||
if(m_Status)
|
||||
{
|
||||
m_nDevNum = VCAGetDevNum();
|
||||
for(int i=0;i<m_nDevNum;i++)
|
||||
{
|
||||
m_Status=VCAOpenDevice( i, mHwnd);
|
||||
m_Status=VCARegVidCapCallBack( i, TC4000VCAPrcVidCapCallBack );
|
||||
m_Status=VCASetKeyFrmInterval( i, 250 );
|
||||
m_Status=VCASetBitRate( i, 256 );
|
||||
m_Status=VCASetVidCapFrameRate( i, 15, FALSE);
|
||||
m_Status=VCASetVidCapSize( i, 640,480);
|
||||
m_Status=VCASetXVIDQuality( i, 7, 1 );
|
||||
m_Status=VCASetXVIDCompressMode( i, XVID_VBR_MODE );
|
||||
|
||||
VCASetVidDeviceColor( i, BRIGHTNESS, BrightnessDefault );
|
||||
VCASetVidDeviceColor( i, SATURATION, SaturationDefault );
|
||||
VCASetVidDeviceColor( i, CONTRAST, ContrastDefault );
|
||||
VCASetVidDeviceColor( i, HUE, HueDefault );
|
||||
VCASetVidDeviceColor( i, SHARPNESS, SharpnessDefault );
|
||||
}
|
||||
|
||||
VCAStartVideoCapture(0,CAP_ORIGIN_STREAM,MPEG4_AVIFILE_ONLY,"");
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================
|
||||
BOOL CVideocard_TC4000::UnloadVideocard()
|
||||
{
|
||||
for(int i=0;i<m_nDevNum;i++)
|
||||
{
|
||||
m_Status=VCAStopVideoCapture(i);
|
||||
m_Status=VCACloseDevice(i);
|
||||
}
|
||||
VCAUnInitSdk();
|
||||
return TRUE;
|
||||
}
|
||||
//================================================================
|
||||
void CVideocard_TC4000::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<480;y++)
|
||||
{
|
||||
lCnt1=0;
|
||||
if(_bMirror)
|
||||
pDstData=(BYTE*)_ImageBuffer.ScanLine[479-y];
|
||||
else
|
||||
pDstData=(BYTE*)_ImageBuffer.ScanLine[y];
|
||||
for(x=0;x<640*3;x+=3)
|
||||
{
|
||||
switch(_type)
|
||||
{
|
||||
case RGB24TORGB:
|
||||
{
|
||||
pDstData[x+2]=_pSrcData[y*640*3+x+2];
|
||||
pDstData[x+1]=_pSrcData[y*640*3+x+1];
|
||||
pDstData[x]=_pSrcData[y*640*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_TC4000::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_TC4000::OnPaint()
|
||||
{
|
||||
CDC* dc= this->GetDC();
|
||||
int nMode;
|
||||
CDC* pMemDC = new CDC;
|
||||
CBitmap pBitBmp;
|
||||
ConvertVideoSubType(m_ImageBuffer,g_DataBuffer,m_ConvertColorType,m_bMirror);
|
||||
BYTE *pData = (BYTE *)m_ImageBuffer.ScanLine;
|
||||
BITMAPINFO bmpInfo;
|
||||
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmpInfo.bmiHeader.biWidth = 640;
|
||||
bmpInfo.bmiHeader.biHeight = 480;
|
||||
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;
|
||||
|
||||
pBitBmp.CreateCompatibleBitmap(dc,640,480);
|
||||
SetDIBits(dc->m_hDC,pBitBmp,0,480,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);
|
||||
}
|
||||
CBitmap* pOldBitmap = pMemDC->SelectObject(&pBitBmp);
|
||||
nMode = pMemDC->SetBkMode(TRANSPARENT);
|
||||
|
||||
dc->BitBlt(0, 0, 640, 480, pMemDC,0,0, SRCCOPY);
|
||||
|
||||
pMemDC->SetBkMode(nMode);
|
||||
pMemDC->SelectObject(pOldBitmap);
|
||||
ReleaseDC(pMemDC);
|
||||
delete pMemDC;
|
||||
ReleaseDC(dc);
|
||||
}
|
||||
//================================================================================================
|
||||
void CVideocard_TC4000::OnTimer(UINT_PTR nIDEvent)
|
||||
{
|
||||
switch(nIDEvent)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
OnPaint();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
//==========================================
|
||||
void CALLBACK TC4000VCAPrcVidCapCallBack(DWORD dwCard, BYTE *pbuff,DWORD dwSize)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwSize);
|
||||
UNREFERENCED_PARAMETER(dwCard);
|
||||
|
||||
memcpy(g_DataBuffer,pbuff,640*480*2);
|
||||
/*
|
||||
switch(dwCard)
|
||||
{
|
||||
case 0:
|
||||
memcpy(g_DataBuffer,pbuff,640*480*2);
|
||||
break;
|
||||
case 1:
|
||||
memcpy(g_DataBuffer,pbuff,640*480*2);
|
||||
break;
|
||||
case 2:
|
||||
memcpy(g_DataBuffer,pbuff,640*480*2);
|
||||
break;
|
||||
case 3:
|
||||
memcpy(g_DataBuffer,pbuff,640*480*2);
|
||||
break;
|
||||
default:break;
|
||||
}
|
||||
*/
|
||||
};
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
|
||||
//==========================================
|
||||
void CALLBACK TC4000VCAPrcVidCapCallBack(DWORD dwCard, BYTE *pbuff,DWORD dwSize);
|
||||
|
||||
|
||||
// CVideocard_TC4000 dialog
|
||||
|
||||
class CVideocard_TC4000 : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CVideocard_TC4000)
|
||||
|
||||
public:
|
||||
CVideocard_TC4000(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CVideocard_TC4000();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_SO7_VIDEOCARD_TC4000 };
|
||||
|
||||
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()
|
||||
public:
|
||||
BOOL LoadVideocard();
|
||||
BOOL UnloadVideocard();
|
||||
void ConvertVideoSubType(const Image_Buffer& _ImageBuffer, BYTE *pSrcData,ConvertColorType _type,BOOL _bMirror);
|
||||
BOOL SaveBitmapToFile(const CBitmap& bitmap, CString lpFileName);
|
||||
|
||||
protected:
|
||||
int m_nDevNum;
|
||||
DWORD m_dwCard;
|
||||
RECT m_rcShowWin;
|
||||
Image_Buffer m_ImageBuffer;
|
||||
ConvertColorType m_ConvertColorType;
|
||||
BOOL m_Status;
|
||||
BOOL m_bMirror;
|
||||
BOOL m_bSaveFile;
|
||||
CString m_SaveFile;
|
||||
public:
|
||||
HANDLE m_hCapThread;
|
||||
afx_msg void OnBnClickedOk();
|
||||
afx_msg void OnBnClickedCancel();
|
||||
afx_msg void OnBnClickedRadioRgb();
|
||||
afx_msg void OnBnClickedRadioGray();
|
||||
afx_msg void OnBnClickedCheckMirrorVertically();
|
||||
afx_msg void OnBnClickedButtonSavePicture();
|
||||
afx_msg void OnBnClickedRadioTc4000Channel1();
|
||||
afx_msg void OnBnClickedRadioTc4000Channel2();
|
||||
afx_msg void OnBnClickedRadioTc4000Channel3();
|
||||
afx_msg void OnBnClickedRadioTc4000Channel4();
|
||||
};
|
||||
@@ -40,6 +40,8 @@
|
||||
#define IDD_DIALOG1 163
|
||||
#define IDD_SO7_VIDEOCARD_SV2000E 163
|
||||
#define IDD_SO7_UTIL_SETUP_CONFIGURE 164
|
||||
#define IDD_SO7_UTIL_IMAGE_DLL 165
|
||||
#define IDD_SO7_VIDEOCARD_TC4000 166
|
||||
#define IDC_BUTTON_INIT_MVUSB 1001
|
||||
#define IDC_BUTTON_START_MACHINE 1002
|
||||
#define IDC_BUTTON_START_POLL_58 1004
|
||||
@@ -603,6 +605,7 @@
|
||||
#define IDC_BTN_CONFIGURE_CALIBRATEV 1518
|
||||
#define IDC_BUTTON_SETUP_SO7CONFIG 1518
|
||||
#define IDC_BUTTON_SCAN_KEYENCE_LK_GLASER 1518
|
||||
#define IDC_BUTTON_IMAGEDLL_START_SCAN_LASER 1518
|
||||
#define IDC_STATIC_CANVAS 1519
|
||||
#define IDC_BUTTON_SCAN_KEYENCE_LK_HLASER 1519
|
||||
#define IDC_BUTTON_STATUS_OVERHEAT_X 1520
|
||||
@@ -616,6 +619,7 @@
|
||||
#define IDC_BUTTON_STOP_SAMPLE_SCURVE 1524
|
||||
#define IDC_BTN_CONFIGURE_MOVEVOUT 1524
|
||||
#define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_GLASER 1524
|
||||
#define IDC_BUTTON_IMAGEDLL_GET_SCAN_LASER_DATA 1524
|
||||
#define IDC_CUSTOM1 1525
|
||||
#define IDC_CUSTOM_CANVAS 1525
|
||||
#define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_HLASER 1525
|
||||
@@ -648,18 +652,27 @@
|
||||
#define IDC_BUTTON_GET_SCAN_DATA_KEYENCE_LK_GLASER 1555
|
||||
#define IDC_EDIT_TEST_KEYENCE_MESSAGE 1556
|
||||
#define IDC_RADIO_MACHINE_KEYENCE_TM3000 1557
|
||||
#define IDC_BUTTON_GET_SCAN_DATA_KEYENCE_LK_GLASER2 1557
|
||||
#define IDC_BUTTON_GET_SCAN_DATA_KEYENCE_LK_HLASER 1557
|
||||
#define IDC_RADIO_KEYENCE_LASER_LK_G 1558
|
||||
#define IDC_RADIO_KEYENCE_LASER_LK_H 1559
|
||||
#define IDC_RADIO_TEST_IMAGE_DLL 1560
|
||||
#define IDC_BUTTON3 1562
|
||||
#define IDC_BUTTON_IMAGEDLL_PAUSE_AND_GET_SCAN_LASER_DATA 1562
|
||||
#define IDC_BUTTON_IMAGEDLL_STOP_SCAN_LASER 1563
|
||||
#define IDC_STATIC_TC4000_PICTURE 1564
|
||||
#define IDC_RADIO_SO7_IP_CAMERA 1565
|
||||
#define IDC_RADIO_TC4000_CHANNEL1 1566
|
||||
#define IDC_RADIO_TC4000_CHANNEL2 1567
|
||||
#define IDC_RADIO_TC4000_CHANNEL3 1568
|
||||
#define IDC_RADIO_TC4000_CHANNEL4 1569
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 165
|
||||
#define _APS_NEXT_RESOURCE_VALUE 166
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 1560
|
||||
#define _APS_NEXT_CONTROL_VALUE 1570
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user