新增TC4000视频卡测试
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,460 @@
|
|||||||
|
|
||||||
|
#pragma once
|
||||||
|
#ifndef __NEWDATASRUCT_H
|
||||||
|
#define __NEWDATASRUCT_H
|
||||||
|
#include<vector>
|
||||||
|
#include <math.h>
|
||||||
|
#define ROW 12 //所能输入的最多点数
|
||||||
|
#define COL ROW
|
||||||
|
using namespace std;
|
||||||
|
struct Mat
|
||||||
|
{
|
||||||
|
Mat()
|
||||||
|
{
|
||||||
|
m_pArr=NULL;
|
||||||
|
m_nRow=0;
|
||||||
|
m_nCol=0;
|
||||||
|
}
|
||||||
|
Mat(int row,int col)
|
||||||
|
{
|
||||||
|
if(row>0&&col>0)
|
||||||
|
{
|
||||||
|
m_nRow=row;
|
||||||
|
m_nCol=col;
|
||||||
|
m_pArr=new double[row*col]; //自动选取 automatism 自动化 automatization 边沿 edge fringe 边缘
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_nRow=0;
|
||||||
|
m_nCol=0;
|
||||||
|
m_pArr=NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Mat(Mat& mat)
|
||||||
|
{
|
||||||
|
m_nRow=mat.m_nRow;
|
||||||
|
m_nCol=mat.m_nCol;
|
||||||
|
int length=m_nRow*m_nCol;
|
||||||
|
m_pArr=new double[length];
|
||||||
|
for(int i=0;i<length;i++)
|
||||||
|
m_pArr[i]=mat.m_pArr[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat& operator=(Mat& mat)
|
||||||
|
{
|
||||||
|
m_nRow=mat.m_nRow;
|
||||||
|
m_nCol=mat.m_nCol;
|
||||||
|
int length=m_nRow*m_nCol;
|
||||||
|
if(m_pArr)
|
||||||
|
delete []m_pArr;
|
||||||
|
m_pArr=new double[length];
|
||||||
|
for(int i=0;i<length;i++)
|
||||||
|
m_pArr[i]=mat.m_pArr[i];
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReSet(int row,int col)
|
||||||
|
{
|
||||||
|
if(m_pArr)
|
||||||
|
delete []m_pArr;
|
||||||
|
m_nRow=row;
|
||||||
|
m_nCol=col;
|
||||||
|
m_pArr=new double[row*col];
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetRow(int row)
|
||||||
|
{
|
||||||
|
if(m_pArr)
|
||||||
|
delete []m_pArr;
|
||||||
|
m_nRow=row;
|
||||||
|
if(m_nRow>0&&m_nCol>0)
|
||||||
|
m_pArr=new double[m_nRow*m_nCol];
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetCol(int col)
|
||||||
|
{
|
||||||
|
if(m_pArr)
|
||||||
|
delete []m_pArr;
|
||||||
|
m_nCol=col;
|
||||||
|
if(m_nRow>0&&m_nCol>0)
|
||||||
|
m_pArr=new double[m_nRow*m_nCol];
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL SetData(int row,int col,double data)
|
||||||
|
{
|
||||||
|
if(row<0||row>=m_nRow||col<0||col>=m_nCol)
|
||||||
|
return FALSE;
|
||||||
|
m_pArr[row*m_nCol+col]=data;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
double GetData(int row,int col)
|
||||||
|
{
|
||||||
|
return m_pArr[row*m_nCol+col];
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat TurnSet()
|
||||||
|
{
|
||||||
|
Mat temp(m_nCol,m_nRow);
|
||||||
|
|
||||||
|
for(int i=0;i<temp.m_nRow;i++)
|
||||||
|
for(int j=0;j<temp.m_nCol;j++)
|
||||||
|
temp.SetData(i,j,GetData(j,i));
|
||||||
|
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat operator *(Mat& mat)
|
||||||
|
{
|
||||||
|
Mat temp;
|
||||||
|
|
||||||
|
if(m_nCol!=mat.m_nRow)
|
||||||
|
return temp;
|
||||||
|
temp.ReSet(m_nRow,mat.m_nCol);
|
||||||
|
for(int i=0;i<m_nRow;i++)
|
||||||
|
{
|
||||||
|
for(int j=0;j<mat.m_nCol;j++)
|
||||||
|
{
|
||||||
|
temp.SetData(i,j,0.0);
|
||||||
|
|
||||||
|
for(int k=0;k<m_nCol;k++)
|
||||||
|
temp.SetData(i,j,temp.GetData(i,j)+GetData(i,k)*mat.GetData(k,j));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL IsEmpty()
|
||||||
|
{
|
||||||
|
return m_pArr==NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
~Mat()
|
||||||
|
{
|
||||||
|
if(m_pArr)
|
||||||
|
{
|
||||||
|
delete []m_pArr;
|
||||||
|
m_pArr=NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double* m_pArr;
|
||||||
|
int m_nRow;
|
||||||
|
int m_nCol;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PointDB
|
||||||
|
{
|
||||||
|
double _x;
|
||||||
|
double _y;
|
||||||
|
PointDB()
|
||||||
|
{
|
||||||
|
_x=0.0;
|
||||||
|
_y=0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB(double x,double y)
|
||||||
|
{
|
||||||
|
_x=x;
|
||||||
|
_y=y;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB operator-(PointDB& pot)
|
||||||
|
{
|
||||||
|
PointDB temp;
|
||||||
|
temp._x=_x-pot._x;
|
||||||
|
temp._y=_y-pot._y;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB operator+(PointDB& pot)
|
||||||
|
{
|
||||||
|
PointDB temp;
|
||||||
|
temp._x=_x+pot._x;
|
||||||
|
temp._y=_y+pot._y;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB operator/(double div)
|
||||||
|
{
|
||||||
|
PointDB temp;
|
||||||
|
temp._x=_x/div;
|
||||||
|
temp._y=_y/div;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB operator*(double mul)
|
||||||
|
{
|
||||||
|
PointDB temp;
|
||||||
|
temp._x=_x*mul;
|
||||||
|
temp._y=_y*mul;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
double length()
|
||||||
|
{
|
||||||
|
return sqrt(_x*_x+_y*_y);
|
||||||
|
}
|
||||||
|
BOOL operator ==(PointDB& pot)
|
||||||
|
{
|
||||||
|
return fabs(_x-pot._x)<0.0001&&fabs(_y-pot._y)<0.0001;
|
||||||
|
}
|
||||||
|
//PointDB& operator =(PointDB& pot)
|
||||||
|
//{
|
||||||
|
// _x=(double)pot._x;
|
||||||
|
// _y=(double)pot._y;
|
||||||
|
// return *this;
|
||||||
|
//}
|
||||||
|
PointDB operator=(PointDB pot) { _x=pot._x; _y=pot._y; return (*this); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct Point
|
||||||
|
{
|
||||||
|
int _x;
|
||||||
|
int _y;
|
||||||
|
|
||||||
|
Point() { _x=0; _y=0; }
|
||||||
|
Point(int x,int y) { _x=x; _y=y; }
|
||||||
|
Point(PointDB pot) { _x=(int)(pot._x+0.5); _y=(int)(pot._y+0.5); }
|
||||||
|
Point(CPoint pot) { _x=pot.x; _y=pot.y; }
|
||||||
|
|
||||||
|
void Empty() { _x=0; _y=0; }
|
||||||
|
BOOL IsEmpty() { return (_x==0&&_y==0); }
|
||||||
|
|
||||||
|
void Left(int i=1) { _x-=i; }
|
||||||
|
void Right(int i=1) { _x+=i; }
|
||||||
|
void Top(int i=1) { _y-=i; }
|
||||||
|
void Bottom(int i=1) { _y+=i; }
|
||||||
|
|
||||||
|
operator CPoint() { return CPoint(_x,_y); }
|
||||||
|
operator PointDB() { return PointDB(_x,_y); };
|
||||||
|
Point operator=(CPoint pot) { _x=pot.x; _y=pot.y; return (*this); }
|
||||||
|
Point operator=(Point pot) { _x=pot._x; _y=pot._y; return (*this); }
|
||||||
|
Point operator=(PointDB pot) { _x=(int)(pot._x+0.5); _y=(int)(pot._y+0.5); return (*this); }
|
||||||
|
BOOL operator==(Point& pot) { return _x==pot._x&&_y==pot._y; }
|
||||||
|
Point operator+(CPoint pot) { int x=_x+pot.x; int y=_y+pot.y; return Point(x,y); }
|
||||||
|
Point operator-(CPoint pot) { int x=_x-pot.x; int y=_y-pot.y; return Point(x,y); }
|
||||||
|
Point operator+(Point pot) { int x=_x+pot._x; int y=_y+pot._y; return Point(x,y); }
|
||||||
|
Point operator-(Point pot) { int x=_x-pot._x; int y=_y-pot._y; return Point(x,y); }
|
||||||
|
Point operator*(int mul) { int x=_x*mul; int y=_y*mul; return Point(x,y); }
|
||||||
|
Point operator*(double mul) { int x=(int)(_x*mul+0.5); int y=(int)(_y*mul+0.5); return Point(x,y); }
|
||||||
|
Point operator/(double mul) { int x=(int)(_x/mul+0.5); int y=(int)(_y/mul+0.5); return Point(x,y); }
|
||||||
|
Point operator/(int mul) { int x=_x/mul; int y=_y/mul; return Point(x,y); }
|
||||||
|
Point& operator +=(int add) { _x+=add; _y+=add; return *this; }
|
||||||
|
Point& operator /=(int mul) { _x/=mul; _y/=mul; return *this; }
|
||||||
|
|
||||||
|
double length() { return sqrt((double)(_x*_x+_y*_y)); }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct PointEx:public PointDB
|
||||||
|
{
|
||||||
|
double _length;
|
||||||
|
PointEx& operator =(PointEx& pot) { _x=pot._x;_y=pot._y;_length=pot._length;return *this; }
|
||||||
|
PointEx& operator =(PointDB& pot) { _x=pot._x;_y=pot._y;_length=0.0;return *this; }
|
||||||
|
operator CRect() { return CRect((int)_x-2,(int)_y-2,(int)_x+2,(int)_y+2); }
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SimpleLine
|
||||||
|
{
|
||||||
|
double k;
|
||||||
|
double m;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MYPIXEL
|
||||||
|
{
|
||||||
|
BYTE R;
|
||||||
|
BYTE G;
|
||||||
|
BYTE B;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Rect
|
||||||
|
{
|
||||||
|
int left;
|
||||||
|
int top;
|
||||||
|
int right;
|
||||||
|
int bottom;
|
||||||
|
void SetRect(int l,int t,int r,int b)
|
||||||
|
{
|
||||||
|
left=l;
|
||||||
|
top=t;
|
||||||
|
right=r;
|
||||||
|
bottom=b;
|
||||||
|
}
|
||||||
|
void SetRectEmpty()
|
||||||
|
{
|
||||||
|
left=0;
|
||||||
|
top=0;
|
||||||
|
right=0;
|
||||||
|
bottom=0;
|
||||||
|
}
|
||||||
|
Rect& operator=(CRect& rc)
|
||||||
|
{
|
||||||
|
left=rc.left;
|
||||||
|
top=rc.top;
|
||||||
|
right=rc.right;
|
||||||
|
bottom=rc.bottom;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
struct PointInt
|
||||||
|
{
|
||||||
|
INT x;
|
||||||
|
INT y;
|
||||||
|
PointInt()
|
||||||
|
{
|
||||||
|
x=0;
|
||||||
|
y=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointInt(INT xPara,INT yPara)
|
||||||
|
{
|
||||||
|
this->x=xPara;
|
||||||
|
this->y=yPara;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointInt operator+(PointInt& pot)
|
||||||
|
{
|
||||||
|
PointInt temp;
|
||||||
|
temp.x=x+pot.x;
|
||||||
|
temp.y=y+pot.y;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointInt operator*(INT mul)
|
||||||
|
{
|
||||||
|
PointInt temp;
|
||||||
|
temp.x=x*mul;
|
||||||
|
temp.y=y*mul;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PointDB_New
|
||||||
|
{
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
PointDB_New()
|
||||||
|
{
|
||||||
|
x=0.0;
|
||||||
|
y=0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB_New(double xPara,double yPara)
|
||||||
|
{
|
||||||
|
this->x=xPara;
|
||||||
|
this->y=yPara;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB_New operator+(PointDB_New& pot)
|
||||||
|
{
|
||||||
|
PointDB_New temp;
|
||||||
|
temp.x=x+pot.x;
|
||||||
|
temp.y=y+pot.y;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB_New operator-(PointDB_New& pot)
|
||||||
|
{
|
||||||
|
PointDB_New temp;
|
||||||
|
temp.x=x-pot.x;
|
||||||
|
temp.y=y-pot.y;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB_New operator+(CPoint& pot)
|
||||||
|
{
|
||||||
|
PointDB_New temp;
|
||||||
|
temp.x=x+(double)pot.x;
|
||||||
|
temp.y=y+(double)pot.y;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB_New operator-(CPoint& pot)
|
||||||
|
{
|
||||||
|
PointDB_New temp;
|
||||||
|
temp.x=x-(double)pot.x;
|
||||||
|
temp.y=y-(double)pot.y;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB_New operator*(double mul)
|
||||||
|
{
|
||||||
|
PointDB_New temp;
|
||||||
|
temp.x=x*mul;
|
||||||
|
temp.y=y*mul;
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB_New& operator=(CPoint& pot)
|
||||||
|
{
|
||||||
|
x=(double)pot.x;
|
||||||
|
y=(double)pot.y;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointDB_New& operator=(PointDB_New& pot)
|
||||||
|
{
|
||||||
|
x=pot.x;
|
||||||
|
y=pot.y;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
double Length()
|
||||||
|
{
|
||||||
|
return sqrt(x*x+y*y);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tagdrawpoint
|
||||||
|
{
|
||||||
|
double X_COOR;
|
||||||
|
double Y_COOR;
|
||||||
|
}DRAWPoint;
|
||||||
|
|
||||||
|
typedef struct{
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
double z;
|
||||||
|
}MY3DPoint/*点*//*,MY3DVector向量*/;
|
||||||
|
|
||||||
|
typedef struct Squ
|
||||||
|
{
|
||||||
|
double ppA[ROW][COL];
|
||||||
|
int row;
|
||||||
|
int col;
|
||||||
|
}Squ;
|
||||||
|
|
||||||
|
typedef struct tagpoint
|
||||||
|
{
|
||||||
|
double X;
|
||||||
|
double Y;
|
||||||
|
double R;
|
||||||
|
tagpoint operator=(tagpoint pot) { X=pot.X; Y=pot.Y; R=pot.R; return (*this); }
|
||||||
|
}READPOINT;
|
||||||
|
|
||||||
|
|
||||||
|
struct SetCtrl{
|
||||||
|
short THREAD_WIDTH; //线宽
|
||||||
|
short AVER_NUMS; //做一个平均值的个数
|
||||||
|
short RETURN_NUM_POINTS; //返回点数
|
||||||
|
short MIN_POINTS; //认为是曲线的最少点数
|
||||||
|
SetCtrl(void) {THREAD_WIDTH=5; AVER_NUMS=5; RETURN_NUM_POINTS=200; MIN_POINTS=100;}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LinkVec{
|
||||||
|
vector <Point> vec;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LinkVecDB{
|
||||||
|
vector <PointDB> vec;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct{
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
int value;
|
||||||
|
double r;
|
||||||
|
}PointDBV;
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,238 +1,74 @@
|
|||||||
#include "StdAfx.h"
|
#include "StdAfx.h"
|
||||||
#include <WinDef.h>
|
#include <WinDef.h>
|
||||||
#include <WinBase.h>
|
#include <WinBase.h>
|
||||||
#include "..\Keyence\LkIF.h"
|
#include "dll.h"
|
||||||
#include "So7_Interface.h "
|
#include "So7_Interface.h "
|
||||||
|
|
||||||
#define MAX_STORAGE_DATA_SIZE 65536
|
#define MAX_STORAGE_DATA_SIZE 65536
|
||||||
|
|
||||||
CSo7_Interface::CSo7_Interface()
|
CSo7_Interface::CSo7_Interface()
|
||||||
{
|
{
|
||||||
m_bIsStorage=FALSE;
|
|
||||||
m_iSetOutNo=0;
|
|
||||||
m_StoredDataNumber=0;
|
|
||||||
m_NeedStorageDataNumber=0;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CSo7_Interface::~CSo7_Interface()
|
CSo7_Interface::~CSo7_Interface()
|
||||||
{
|
{
|
||||||
FreeLibrary(m_hImageDLL);
|
if(m_hImageDLL)
|
||||||
|
{
|
||||||
|
Pro_cmd(Exit_DLL,(LPARAM)&Image_Info);
|
||||||
|
Pro_cmd(VQUIT_DLL,(LPARAM)&Image_Info);
|
||||||
|
Pro_cmd(MCLOSE,(LPARAM)&Image_Info);
|
||||||
|
FreeLibrary(m_hImageDLL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//========================================
|
//========================================
|
||||||
void CSo7_Interface::KeyenceLaserInit(void)
|
void CSo7_Interface::InitDll(void)
|
||||||
{
|
{
|
||||||
m_hImageDLL=LoadLibrary(_T("Image.dll"));
|
m_hImageDLL=LoadLibrary(_T("Image.dll"));
|
||||||
if(m_hImageDLL)
|
if(m_hImageDLL)
|
||||||
{
|
{
|
||||||
m_pGetCalcData=(pLKIF_GetCalcData)GetProcAddress(m_hImageDLL,"LKIF_GetCalcData");
|
Pro_cmd=(PRO_CMD)GetProcAddress(m_hImageDLL,"Pro_Cmd");
|
||||||
m_pDataStorageStart=(pLKIF_DataStorageStart)GetProcAddress(m_hImageDLL,"LKIF_DataStorageStart");
|
m_pGET_LASER_STORED_DATA=(GET_LASER_STORED_DATA)GetProcAddress(m_hImageDLL,"GetLaserStoredData");
|
||||||
m_pDataStorageStop=(pLKIF_DataStorageStop)GetProcAddress(m_hImageDLL,"LKIF_DataStorageStop");
|
m_pPAUSE_SCAN_AND_GET_LASER_DATA=(PAUSE_SCAN_AND_GET_LASER_DATA)GetProcAddress(m_hImageDLL,"PauseScanAndGetLaserData");
|
||||||
m_pDataStorageInit=(pLKIF_DataStorageInit)GetProcAddress(m_hImageDLL,"LKIF_DataStorageInit");
|
m_pGET_SCAN_LASER_STORAGE_STATUS=(GET_SCAN_LASER_STORAGE_STATUS)GetProcAddress(m_hImageDLL,"GetKeyenceStorageStatus");
|
||||||
m_pDataStorageGetData=(pLKIF_DataStorageGetData)GetProcAddress(m_hImageDLL,"LKIF_DataStorageGetData");
|
|
||||||
m_pDataStorageGetStatus=(pLKIF_DataStorageGetStatus)GetProcAddress(m_hImageDLL,"LKIF_DataStorageGetStatus");
|
|
||||||
m_pSetDataStorage=(pLKIF_SetDataStorage)GetProcAddress(m_hImageDLL,"LKIF_SetDataStorage");
|
|
||||||
|
|
||||||
}
|
Pro_cmd(VINIT_DLL,(LPARAM)&Image_Info);
|
||||||
|
Pro_cmd(MINIT_USB,(LPARAM)&Image_Info);
|
||||||
|
|
||||||
}
|
|
||||||
//==============================================
|
|
||||||
void CSo7_Interface::Get_KeyenceLaserData(float *LaserValue1,float *LaserValue2)
|
|
||||||
{
|
|
||||||
*LaserValue1=10;
|
|
||||||
*LaserValue2=10;
|
|
||||||
LKIF_FLOATVALUE GetVal1,GetVal2;
|
|
||||||
if(m_pGetCalcData(&GetVal1,&GetVal2)!=1)
|
|
||||||
{
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
switch(GetVal1.FloatResult)
|
|
||||||
{
|
|
||||||
case LKIF_FLOATRESULT_RANGEOVER_P:
|
|
||||||
{
|
|
||||||
*LaserValue1=50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LKIF_FLOATRESULT_RANGEOVER_N:
|
|
||||||
{
|
|
||||||
*LaserValue1=-50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LKIF_FLOATRESULT_WAITING:
|
|
||||||
{
|
|
||||||
*LaserValue1=0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
*LaserValue1=GetVal1.Value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(GetVal2.FloatResult)
|
|
||||||
{
|
|
||||||
case LKIF_FLOATRESULT_RANGEOVER_P:
|
|
||||||
{
|
|
||||||
*LaserValue2=50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LKIF_FLOATRESULT_RANGEOVER_N:
|
|
||||||
{
|
|
||||||
*LaserValue2=-50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LKIF_FLOATRESULT_WAITING:
|
|
||||||
{
|
|
||||||
*LaserValue2=0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
*LaserValue2=GetVal2.Value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//========================================
|
||||||
//==============================================
|
void CSo7_Interface::StartStoreData(void)
|
||||||
BOOL CSo7_Interface::StartStoreData(int _NeedStorageDataNumber,int _SampleTime)
|
|
||||||
{
|
{
|
||||||
BOOL bStatus(FALSE);
|
Image_Info.gScanLaserPntsNumber=500;
|
||||||
GetStoreDataStatus();
|
Image_Info.gScanLaserPntsSampleTime=20;
|
||||||
if (!m_bIsStorage)
|
Pro_cmd(START_SCAN_LASER_POINTS,(LPARAM)&Image_Info);
|
||||||
{
|
}
|
||||||
bStatus=m_pDataStorageInit();
|
//========================================
|
||||||
if (_NeedStorageDataNumber<1)
|
void CSo7_Interface::StopStoreData(void)
|
||||||
{
|
|
||||||
_NeedStorageDataNumber=1;
|
|
||||||
}
|
|
||||||
else if (_NeedStorageDataNumber>65536)
|
|
||||||
{
|
|
||||||
_NeedStorageDataNumber=65536;
|
|
||||||
}
|
|
||||||
m_NeedStorageDataNumber=_NeedStorageDataNumber;
|
|
||||||
|
|
||||||
if (_SampleTime<0.4)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_1;
|
|
||||||
}
|
|
||||||
else if (_SampleTime<1)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_2;
|
|
||||||
}
|
|
||||||
else if (_SampleTime<2)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_5;
|
|
||||||
}
|
|
||||||
else if (_SampleTime<4)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_10;
|
|
||||||
}
|
|
||||||
else if (_SampleTime<10)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_20;
|
|
||||||
}
|
|
||||||
else if (_SampleTime<20)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_50;
|
|
||||||
}
|
|
||||||
else if (_SampleTime<40)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_100;
|
|
||||||
}
|
|
||||||
else if (_SampleTime<100)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_200;
|
|
||||||
}
|
|
||||||
else if (_SampleTime<200)
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_500;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_StorageCycle=LKIF_STORAGECYCLE_1000;
|
|
||||||
}
|
|
||||||
bStatus=m_pSetDataStorage(LKIF_TARGETOUT_OUT1,m_NeedStorageDataNumber,m_StorageCycle);
|
|
||||||
|
|
||||||
if (bStatus)
|
|
||||||
{
|
|
||||||
bStatus=m_pDataStorageStart();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bStatus;
|
|
||||||
};
|
|
||||||
//==============================================
|
|
||||||
BOOL CSo7_Interface::StopStoreData()
|
|
||||||
{
|
{
|
||||||
BOOL bStatus(FALSE);
|
Pro_cmd(STOP_SCAN_LASER_POINTS,(LPARAM)&Image_Info);
|
||||||
GetStoreDataStatus();
|
}
|
||||||
if (m_bIsStorage)
|
//========================================
|
||||||
{
|
void CSo7_Interface::GetStorageStatus(void)
|
||||||
bStatus=m_pDataStorageStop();
|
|
||||||
}
|
|
||||||
return bStatus;
|
|
||||||
};
|
|
||||||
//==============================================
|
|
||||||
BOOL CSo7_Interface::PauseScanAndGetData(float *GetStorageData,int *GetStorageNumber)
|
|
||||||
{
|
{
|
||||||
BOOL bStatus(FALSE);
|
int _bIsStorage(0),_StoredDataNumber(0);
|
||||||
GetStoreDataStatus();
|
Pro_cmd(GET_SCAN_LASER_STATUS,(LPARAM)&Image_Info);
|
||||||
if (m_bIsStorage)
|
_bIsStorage = Image_Info.gIsLaserStorage;
|
||||||
{
|
_StoredDataNumber= Image_Info.gLaserStoredNumber;
|
||||||
bStatus=m_pDataStorageStop();
|
}
|
||||||
bStatus=GetStoredData(GetStorageData,GetStorageNumber);
|
//========================================
|
||||||
bStatus=m_pDataStorageStart();
|
void CSo7_Interface::GetStoredData(void)
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bStatus=GetStoredData(GetStorageData,GetStorageNumber);
|
|
||||||
}
|
|
||||||
return bStatus;
|
|
||||||
};
|
|
||||||
//==============================================
|
|
||||||
BOOL CSo7_Interface::GetStoredData(float *GetStorageData,int *GetStorageNumber)
|
|
||||||
{
|
{
|
||||||
BOOL bStatus(FALSE);
|
float Laserval[1000];
|
||||||
GetStoreDataStatus();
|
int LaserNum(0);
|
||||||
if (!m_bIsStorage)
|
m_pGET_LASER_STORED_DATA(Laserval,&LaserNum);
|
||||||
{
|
}
|
||||||
LKIF_FLOATVALUE GetStorageValue[MAX_STORAGE_DATA_SIZE];
|
//========================================
|
||||||
bStatus=m_pDataStorageGetData(m_iSetOutNo,m_StoredDataNumber,GetStorageValue,GetStorageNumber);
|
void CSo7_Interface::PauseScanAndGetData(void)
|
||||||
for(int i=0;i<*GetStorageNumber;i++)
|
|
||||||
{
|
|
||||||
switch(GetStorageValue[i].FloatResult)
|
|
||||||
{
|
|
||||||
case LKIF_FLOATRESULT_RANGEOVER_P:
|
|
||||||
{
|
|
||||||
*GetStorageData++=50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LKIF_FLOATRESULT_RANGEOVER_N:
|
|
||||||
{
|
|
||||||
*GetStorageData++=-50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LKIF_FLOATRESULT_WAITING:
|
|
||||||
{
|
|
||||||
*GetStorageData++=0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
*GetStorageData++=GetStorageValue[i].Value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return bStatus;
|
|
||||||
};
|
|
||||||
//==============================================
|
|
||||||
BOOL CSo7_Interface::GetStoreDataStatus()
|
|
||||||
{
|
{
|
||||||
BOOL bStatus(FALSE);
|
float Laserval[1000];
|
||||||
bStatus=m_pDataStorageGetStatus(m_iSetOutNo,&m_bIsStorage,&m_StoredDataNumber);
|
int LaserNum(0);
|
||||||
return bStatus;
|
m_pPAUSE_SCAN_AND_GET_LASER_DATA(Laserval,&LaserNum);
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -9,52 +9,34 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#endif // _MSC_VER > 1000
|
#endif // _MSC_VER > 1000
|
||||||
|
|
||||||
|
typedef void (_cdecl*PRO_CMD)(int nCmd,LPARAM value);
|
||||||
typedef int (WINAPI* pGetLaserStoredData) (float *GetStorageData,int *GetStorageNumber);
|
typedef int (_cdecl*GET_LASER_STORED_DATA)(float *GetStorageData,int *GetStorageNumber);
|
||||||
// Starting the Data Storage
|
typedef int (_cdecl*PAUSE_SCAN_AND_GET_LASER_DATA)(float *GetStorageData,int *GetStorageNumber);
|
||||||
typedef BOOL (WINAPI* pLKIF_DataStorageStart)(void);
|
typedef void (_cdecl*GET_SCAN_LASER_STORAGE_STATUS)(int& _bStatus,int& _StorageNumber);
|
||||||
// Stopping the Data Storage
|
|
||||||
typedef BOOL (WINAPI* pLKIF_DataStorageStop)(void);
|
|
||||||
// Initializing the Data Storage
|
|
||||||
typedef BOOL (WINAPI* pLKIF_DataStorageInit)(void);
|
|
||||||
// Outputting the Data Storage
|
|
||||||
typedef BOOL (WINAPI* pLKIF_DataStorageGetData)(IN int OutNo,IN int NumOutBuffer,OUT LKIF_FLOATVALUE *OutBuffer,OUT int *NumReceived);
|
|
||||||
// Data Storage Accumulation Status Output
|
|
||||||
typedef BOOL (WINAPI* pLKIF_DataStorageGetStatus)(IN int OutNo,OUT BOOL *IsStorage,OUT int *NumStorageData);
|
|
||||||
// Set Data Storage
|
|
||||||
typedef BOOL (WINAPI* pLKIF_SetDataStorage)(IN LKIF_TARGETOUT TargetOut,IN int NumStorage,IN LKIF_STORAGECYCLE StorageCycle);
|
|
||||||
|
|
||||||
//======================================================================================
|
//======================================================================================
|
||||||
class CSo7_Interface
|
class CSo7_Interface
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
int m_iSetOutNo;
|
|
||||||
int m_NeedStorageDataNumber;
|
|
||||||
LKIF_STORAGECYCLE m_StorageCycle;
|
|
||||||
HINSTANCE m_hImageDLL;
|
HINSTANCE m_hImageDLL;
|
||||||
|
Dev_Info Image_Info;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
CSo7_Interface();
|
CSo7_Interface();
|
||||||
~CSo7_Interface();
|
~CSo7_Interface();
|
||||||
|
|
||||||
//»ñÈ¡Êý¾ÝµÄº¯ÊýÖ¸Õë
|
//»ñÈ¡Êý¾ÝµÄº¯ÊýÖ¸Õë
|
||||||
pLKIF_GetCalcData m_pGetCalcData;
|
PRO_CMD Pro_cmd;
|
||||||
pLKIF_DataStorageStart m_pDataStorageStart;
|
GET_LASER_STORED_DATA m_pGET_LASER_STORED_DATA;
|
||||||
pLKIF_DataStorageStop m_pDataStorageStop;
|
PAUSE_SCAN_AND_GET_LASER_DATA m_pPAUSE_SCAN_AND_GET_LASER_DATA;
|
||||||
pLKIF_DataStorageInit m_pDataStorageInit;
|
GET_SCAN_LASER_STORAGE_STATUS m_pGET_SCAN_LASER_STORAGE_STATUS;
|
||||||
pLKIF_DataStorageGetData m_pDataStorageGetData;
|
void InitDll();
|
||||||
pLKIF_DataStorageGetStatus m_pDataStorageGetStatus;
|
|
||||||
pLKIF_SetDataStorage m_pSetDataStorage;
|
|
||||||
|
|
||||||
int m_StoredDataNumber;
|
void StartStoreData();
|
||||||
BOOL m_bIsStorage;
|
void StopStoreData();
|
||||||
void KeyenceLaserInit(void);
|
void GetStorageStatus();
|
||||||
void Get_KeyenceLaserData(float *LaserValue1,float *LaserValue2);
|
void GetStoredData();
|
||||||
BOOL StartStoreData(int _NeedStorageDataNumber,int _SampleTime);
|
void PauseScanAndGetData();
|
||||||
BOOL StopStoreData();
|
|
||||||
BOOL GetStoreDataStatus();
|
|
||||||
BOOL GetStoredData(float *GetStorageData,int *GetStorageNumber);
|
|
||||||
BOOL PauseScanAndGetData(float *GetStorageData,int *GetStorageNumber);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -621,3 +621,118 @@ Init:Open device succeed .
|
|||||||
|
|
||||||
Construct Cso7_Proto.
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
Exit: Exit_SO7Usb
|
||||||
|
|
||||||
|
Destruct Cso7_Proto.
|
||||||
|
|
||||||
|
Construct Cso7_Proto.
|
||||||
|
|
||||||
|
Init:Open device succeed .
|
||||||
|
|
||||||
|
_start_machine
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
[HARDWARE]
|
[HARDWARE]
|
||||||
SPEED_BASE_X1=1
|
SPEED_BASE_X1=0
|
||||||
SPEED_MAX_X1=1
|
SPEED_MAX_X1=10
|
||||||
SPEED_START_X1=1
|
SPEED_START_X1=30
|
||||||
SPEED_FRESH_X1=1
|
SPEED_FRESH_X1=10
|
||||||
SPEED_SLOW_X1=1.000
|
SPEED_SLOW_X1=0.000
|
||||||
;
|
;
|
||||||
SPEED_BASE_X2=1
|
SPEED_BASE_X2=0
|
||||||
SPEED_MAX_X2=1
|
SPEED_MAX_X2=10
|
||||||
SPEED_START_X2=1
|
SPEED_START_X2=30
|
||||||
SPEED_FRESH_X2=1
|
SPEED_FRESH_X2=10
|
||||||
SPEED_SLOW_X2=1.000
|
SPEED_SLOW_X2=0.000
|
||||||
;
|
;
|
||||||
SPEED_BASE_X3=1
|
SPEED_BASE_X3=0
|
||||||
SPEED_MAX_X3=1
|
SPEED_MAX_X3=1
|
||||||
SPEED_START_X3=1
|
SPEED_START_X3=30
|
||||||
SPEED_FRESH_X3=1
|
SPEED_FRESH_X3=10
|
||||||
SPEED_SLOW_X3=1.000
|
SPEED_SLOW_X3=0.000
|
||||||
;
|
;
|
||||||
SPEED_BASE_X4=1
|
SPEED_BASE_X4=0
|
||||||
SPEED_MAX_X4=1
|
SPEED_MAX_X4=1
|
||||||
SPEED_START_X4=1
|
SPEED_START_X4=30
|
||||||
SPEED_FRESH_X4=1
|
SPEED_FRESH_X4=10
|
||||||
SPEED_SLOW_X4=1.000
|
SPEED_SLOW_X4=0.000
|
||||||
;
|
;
|
||||||
SPEED_BASE_X5=1
|
SPEED_BASE_X5=0
|
||||||
SPEED_MAX_X5=1
|
SPEED_MAX_X5=1
|
||||||
SPEED_START_X5=1
|
SPEED_START_X5=30
|
||||||
SPEED_FRESH_X5=1
|
SPEED_FRESH_X5=10
|
||||||
SPEED_SLOW_X5=1.000
|
SPEED_SLOW_X5=0.000
|
||||||
;
|
;
|
||||||
SPEED_BASE_Y1=1
|
SPEED_BASE_Y1=1
|
||||||
SPEED_MAX_Y1=1
|
SPEED_MAX_Y1=1
|
||||||
@@ -93,9 +93,9 @@ X_MOTOR_PRECISION=0.100
|
|||||||
Y_MOTOR_PRECISION=0.100
|
Y_MOTOR_PRECISION=0.100
|
||||||
Z_MOTOR_PRECISION=0.100
|
Z_MOTOR_PRECISION=0.100
|
||||||
;
|
;
|
||||||
X_MOTOR_WHEELBASE=1.000
|
X_MOTOR_WHEELBASE=20.000
|
||||||
Y_MOTOR_WHEELBASE=1.000
|
Y_MOTOR_WHEELBASE=20.000
|
||||||
Z_MOTOR_WHEELBASE=1.000
|
Z_MOTOR_WHEELBASE=1.500
|
||||||
;
|
;
|
||||||
MOTOR_PULSE_NUM=10000
|
MOTOR_PULSE_NUM=10000
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -350,7 +350,7 @@ BEGIN
|
|||||||
PUSHBUTTON "MoveTo",IDC_BUTTON_ZOOM_MOVETO,263,43,50,14
|
PUSHBUTTON "MoveTo",IDC_BUTTON_ZOOM_MOVETO,263,43,50,14
|
||||||
END
|
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
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Option Dialog"
|
CAPTION "Option Dialog"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
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 "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 "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 "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
|
CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,48,89,69,10
|
||||||
DEFPUSHBUTTON "OK",IDOK,181,129,50,14
|
DEFPUSHBUTTON "OK",IDOK,181,145,50,14
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,240,129,50,14
|
PUSHBUTTON "Cancel",IDCANCEL,241,145,50,14
|
||||||
GROUPBOX "测试选项",IDC_STATIC,23,17,263,92
|
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
|
END
|
||||||
|
|
||||||
IDD_SO7_VIDEOCARD_SDK3000 DIALOGEX 0, 0, 488, 316
|
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
|
CONTROL "V",IDC_CHECK_REPETESTV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,37,267,20,10
|
||||||
END
|
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
|
IDD_S07_OPTION_DIALOG, DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
LEFTMARGIN, 7
|
LEFTMARGIN, 7
|
||||||
RIGHTMARGIN, 290
|
RIGHTMARGIN, 291
|
||||||
TOPMARGIN, 7
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 143
|
BOTTOMMARGIN, 159
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_SO7_VIDEOCARD_SDK3000, DIALOG
|
IDD_SO7_VIDEOCARD_SDK3000, DIALOG
|
||||||
@@ -578,6 +611,23 @@ BEGIN
|
|||||||
TOPMARGIN, 7
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 429
|
BOTTOMMARGIN, 429
|
||||||
END
|
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
|
END
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
#include "..\..\..\SevenOcean\SO7_Proto.h"
|
||||||
#include "ProcessButton.h"
|
#include "ProcessButton.h"
|
||||||
|
|
||||||
#include "VideoCardDefine.h"
|
#include "VideoCardDefine.h"
|
||||||
#include "..\..\..\Videocard\SDK3000\sdk3000_7130.h"
|
#include "..\..\..\Videocard\SDK3000\sdk3000_7130.h"
|
||||||
#include "Videocard_SDK3000.h"
|
#include "Videocard_SDK3000.h"
|
||||||
@@ -12,11 +13,19 @@
|
|||||||
#include "..\..\..\Videocard\SV2000E\DXMediaCap.h"
|
#include "..\..\..\Videocard\SV2000E\DXMediaCap.h"
|
||||||
#include "..\..\..\Videocard\SV2000E\dataAcq.h"
|
#include "..\..\..\Videocard\SV2000E\dataAcq.h"
|
||||||
#include "Videocard_SV2000E.h"
|
#include "Videocard_SV2000E.h"
|
||||||
|
|
||||||
|
#include "..\..\..\Videocard\TC4000\Sa7134Capture.h"
|
||||||
|
#include "Videocard_TC4000.h"
|
||||||
|
|
||||||
#include "SO7_UtilDlg.h"
|
#include "SO7_UtilDlg.h"
|
||||||
#include "..\..\..\Keyence\Keyence_Laser.h"
|
#include "..\..\..\Keyence\Keyence_Laser.h"
|
||||||
#include "..\..\..\Keyence\Keyence_Laser_LK_H.h"
|
#include "..\..\..\Keyence\Keyence_Laser_LK_H.h"
|
||||||
#include "..\..\..\Keyence\\Keyence_Proto.h"
|
#include "..\..\..\Keyence\\Keyence_Proto.h"
|
||||||
#include "Keyence_UtilDlg.h"
|
#include "Keyence_UtilDlg.h"
|
||||||
|
|
||||||
|
#include "..\..\..\SevenOcean\dll.h"
|
||||||
|
#include "..\..\..\SevenOcean\So7_Interface.h"
|
||||||
|
#include "So7_Util_ImageDll.h"
|
||||||
#include "afxdialogex.h"
|
#include "afxdialogex.h"
|
||||||
#include "So7_Option.h"
|
#include "So7_Option.h"
|
||||||
|
|
||||||
@@ -24,6 +33,8 @@ CSO7_Proto* m_pSO7_Proto=NULL;
|
|||||||
CKeyence_Laser* m_pKeyence_Laser=NULL;
|
CKeyence_Laser* m_pKeyence_Laser=NULL;
|
||||||
CKeyence_Laser_LK_H* m_pKeyence_Laser_LK_H=NULL;
|
CKeyence_Laser_LK_H* m_pKeyence_Laser_LK_H=NULL;
|
||||||
CKeyence_Proto* m_pKeyence_Proto=NULL;
|
CKeyence_Proto* m_pKeyence_Proto=NULL;
|
||||||
|
|
||||||
|
CSo7_Interface* m_pSo7_Interface=NULL;
|
||||||
// CSo7_Option dialog
|
// CSo7_Option dialog
|
||||||
|
|
||||||
IMPLEMENT_DYNAMIC(CSo7_Option, CDialog)
|
IMPLEMENT_DYNAMIC(CSo7_Option, CDialog)
|
||||||
@@ -142,6 +153,27 @@ void CSo7_Option::OnBnClickedOk()
|
|||||||
pVideocard_SV2000E->DoModal();
|
pVideocard_SV2000E->DoModal();
|
||||||
delete pVideocard_SV2000E;
|
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>
|
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<Link>
|
<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>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
<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>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@@ -213,6 +213,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\SevenOcean\CMMIO_BASE.CPP" />
|
<ClCompile Include="..\..\..\SevenOcean\CMMIO_BASE.CPP" />
|
||||||
<ClCompile Include="..\..\..\SevenOcean\CMMIO_SERIAL.CPP" />
|
<ClCompile Include="..\..\..\SevenOcean\CMMIO_SERIAL.CPP" />
|
||||||
|
<ClCompile Include="..\..\..\SevenOcean\So7_Interface.cpp" />
|
||||||
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto.cpp" />
|
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto.cpp" />
|
||||||
<ClCompile Include="..\LOGGER.CPP" />
|
<ClCompile Include="..\LOGGER.CPP" />
|
||||||
<ClCompile Include="..\Proto_Util.cpp" />
|
<ClCompile Include="..\Proto_Util.cpp" />
|
||||||
@@ -238,6 +239,7 @@
|
|||||||
<ClCompile Include="So7_Option.cpp" />
|
<ClCompile Include="So7_Option.cpp" />
|
||||||
<ClCompile Include="SO7_Send_Parameter.cpp" />
|
<ClCompile Include="SO7_Send_Parameter.cpp" />
|
||||||
<ClCompile Include="SO7_UtilDlg.cpp" />
|
<ClCompile Include="SO7_UtilDlg.cpp" />
|
||||||
|
<ClCompile Include="So7_Util_ImageDll.cpp" />
|
||||||
<ClCompile Include="SO7_VolComp.cpp" />
|
<ClCompile Include="SO7_VolComp.cpp" />
|
||||||
<ClCompile Include="stdafx.cpp">
|
<ClCompile Include="stdafx.cpp">
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||||
@@ -247,6 +249,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Videocard_SDK3000.cpp" />
|
<ClCompile Include="Videocard_SDK3000.cpp" />
|
||||||
<ClCompile Include="Videocard_SV2000E.cpp" />
|
<ClCompile Include="Videocard_SV2000E.cpp" />
|
||||||
|
<ClCompile Include="Videocard_TC4000.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\..\Animatics\Animatics_Proto.h" />
|
<ClInclude Include="..\..\..\Animatics\Animatics_Proto.h" />
|
||||||
@@ -260,6 +263,8 @@
|
|||||||
<ClInclude Include="..\..\..\SevenOcean\CMD_H.h" />
|
<ClInclude Include="..\..\..\SevenOcean\CMD_H.h" />
|
||||||
<ClInclude Include="..\..\..\SevenOcean\CMMIO_BASE.H" />
|
<ClInclude Include="..\..\..\SevenOcean\CMMIO_BASE.H" />
|
||||||
<ClInclude Include="..\..\..\SevenOcean\CMMIO_SERIAL.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_Interface.h" />
|
||||||
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto.h" />
|
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto.h" />
|
||||||
<ClInclude Include="..\..\..\Videocard\SDK3000\sdk3000_7130.h" />
|
<ClInclude Include="..\..\..\Videocard\SDK3000\sdk3000_7130.h" />
|
||||||
@@ -287,6 +292,7 @@
|
|||||||
<ClInclude Include="So7_Option.h" />
|
<ClInclude Include="So7_Option.h" />
|
||||||
<ClInclude Include="SO7_Send_Parameter.h" />
|
<ClInclude Include="SO7_Send_Parameter.h" />
|
||||||
<ClInclude Include="SO7_UtilDlg.h" />
|
<ClInclude Include="SO7_UtilDlg.h" />
|
||||||
|
<ClInclude Include="So7_Util_ImageDll.h" />
|
||||||
<ClInclude Include="SO7_VolComp.h" />
|
<ClInclude Include="SO7_VolComp.h" />
|
||||||
<ClInclude Include="STATUS_MOTION.H" />
|
<ClInclude Include="STATUS_MOTION.H" />
|
||||||
<ClInclude Include="stdafx.h" />
|
<ClInclude Include="stdafx.h" />
|
||||||
@@ -294,6 +300,7 @@
|
|||||||
<ClInclude Include="VideoCardDefine.h" />
|
<ClInclude Include="VideoCardDefine.h" />
|
||||||
<ClInclude Include="Videocard_SDK3000.h" />
|
<ClInclude Include="Videocard_SDK3000.h" />
|
||||||
<ClInclude Include="Videocard_SV2000E.h" />
|
<ClInclude Include="Videocard_SV2000E.h" />
|
||||||
|
<ClInclude Include="Videocard_TC4000.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\..\..\Animatics\IntegMotorInterface.tlb" />
|
<None Include="..\..\..\Animatics\IntegMotorInterface.tlb" />
|
||||||
|
|||||||
@@ -109,6 +109,15 @@
|
|||||||
<ClCompile Include="..\..\..\Keyence\Keyence_Laser_LK_H.cpp">
|
<ClCompile Include="..\..\..\Keyence\Keyence_Laser_LK_H.cpp">
|
||||||
<Filter>Sources Files</Filter>
|
<Filter>Sources Files</Filter>
|
||||||
</ClCompile>
|
</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>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="CaptureDataDlg.h">
|
<ClInclude Include="CaptureDataDlg.h">
|
||||||
@@ -246,6 +255,18 @@
|
|||||||
<ClInclude Include="..\..\..\Keyence\LKIFCommonDefine.h">
|
<ClInclude Include="..\..\..\Keyence\LKIFCommonDefine.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</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>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="ReadMe.txt" />
|
<None Include="ReadMe.txt" />
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
#include "afxdialogex.h"
|
#include "afxdialogex.h"
|
||||||
|
|
||||||
static BYTE g_DataBuffer[640*480*2];
|
static BYTE g_DataBuffer[640*480*2];
|
||||||
int g_nPic(0);
|
|
||||||
|
|
||||||
HANDLE g_hEventCap = NULL;
|
HANDLE g_hEventCap = NULL;
|
||||||
HANDLE g_hEventExt = NULL;
|
HANDLE g_hEventExt = NULL;
|
||||||
|
|||||||
@@ -16,29 +16,6 @@ static const long SaturationDefault = 5000;
|
|||||||
static const long HueDefault = 5000;
|
static const long HueDefault = 5000;
|
||||||
static const long SharpnessDefault = 4;
|
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];
|
static BYTE g_DataBuffer[640*480*2];
|
||||||
// CVideocard_SV2000E dialog
|
// 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_DIALOG1 163
|
||||||
#define IDD_SO7_VIDEOCARD_SV2000E 163
|
#define IDD_SO7_VIDEOCARD_SV2000E 163
|
||||||
#define IDD_SO7_UTIL_SETUP_CONFIGURE 164
|
#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_INIT_MVUSB 1001
|
||||||
#define IDC_BUTTON_START_MACHINE 1002
|
#define IDC_BUTTON_START_MACHINE 1002
|
||||||
#define IDC_BUTTON_START_POLL_58 1004
|
#define IDC_BUTTON_START_POLL_58 1004
|
||||||
@@ -603,6 +605,7 @@
|
|||||||
#define IDC_BTN_CONFIGURE_CALIBRATEV 1518
|
#define IDC_BTN_CONFIGURE_CALIBRATEV 1518
|
||||||
#define IDC_BUTTON_SETUP_SO7CONFIG 1518
|
#define IDC_BUTTON_SETUP_SO7CONFIG 1518
|
||||||
#define IDC_BUTTON_SCAN_KEYENCE_LK_GLASER 1518
|
#define IDC_BUTTON_SCAN_KEYENCE_LK_GLASER 1518
|
||||||
|
#define IDC_BUTTON_IMAGEDLL_START_SCAN_LASER 1518
|
||||||
#define IDC_STATIC_CANVAS 1519
|
#define IDC_STATIC_CANVAS 1519
|
||||||
#define IDC_BUTTON_SCAN_KEYENCE_LK_HLASER 1519
|
#define IDC_BUTTON_SCAN_KEYENCE_LK_HLASER 1519
|
||||||
#define IDC_BUTTON_STATUS_OVERHEAT_X 1520
|
#define IDC_BUTTON_STATUS_OVERHEAT_X 1520
|
||||||
@@ -616,6 +619,7 @@
|
|||||||
#define IDC_BUTTON_STOP_SAMPLE_SCURVE 1524
|
#define IDC_BUTTON_STOP_SAMPLE_SCURVE 1524
|
||||||
#define IDC_BTN_CONFIGURE_MOVEVOUT 1524
|
#define IDC_BTN_CONFIGURE_MOVEVOUT 1524
|
||||||
#define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_GLASER 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_CUSTOM1 1525
|
||||||
#define IDC_CUSTOM_CANVAS 1525
|
#define IDC_CUSTOM_CANVAS 1525
|
||||||
#define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_HLASER 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_BUTTON_GET_SCAN_DATA_KEYENCE_LK_GLASER 1555
|
||||||
#define IDC_EDIT_TEST_KEYENCE_MESSAGE 1556
|
#define IDC_EDIT_TEST_KEYENCE_MESSAGE 1556
|
||||||
#define IDC_RADIO_MACHINE_KEYENCE_TM3000 1557
|
#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_BUTTON_GET_SCAN_DATA_KEYENCE_LK_HLASER 1557
|
||||||
#define IDC_RADIO_KEYENCE_LASER_LK_G 1558
|
#define IDC_RADIO_KEYENCE_LASER_LK_G 1558
|
||||||
#define IDC_RADIO_KEYENCE_LASER_LK_H 1559
|
#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
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#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_COMMAND_VALUE 32771
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1560
|
#define _APS_NEXT_CONTROL_VALUE 1570
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Binary file not shown.
@@ -4,6 +4,7 @@
|
|||||||
#if !defined(AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_)
|
#if !defined(AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_)
|
||||||
#define AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_
|
#define AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_
|
||||||
|
|
||||||
|
#include"..\VideocardCommonDefine.h"
|
||||||
|
|
||||||
static const ULONG BrightnessDefault = 0x80;
|
static const ULONG BrightnessDefault = 0x80;
|
||||||
static const ULONG ContrastDefault = 0x44;
|
static const ULONG ContrastDefault = 0x44;
|
||||||
@@ -11,20 +12,7 @@ static const ULONG SaturationDefault = 0x40;
|
|||||||
static const ULONG HueDefault = 0x00;
|
static const ULONG HueDefault = 0x00;
|
||||||
static const ULONG SharpnessDefault = 0x00;
|
static const ULONG SharpnessDefault = 0x00;
|
||||||
|
|
||||||
#define MIN_VAMP_BRIGHTNESS_UNITS 0
|
|
||||||
#define MAX_VAMP_BRIGHTNESS_UNITS 255
|
|
||||||
|
|
||||||
#define MIN_VAMP_CONTRAST_UNITS -128
|
|
||||||
#define MAX_VAMP_CONTRAST_UNITS 127
|
|
||||||
|
|
||||||
#define MIN_VAMP_HUE_UNITS -128
|
|
||||||
#define MAX_VAMP_HUE_UNITS 127
|
|
||||||
|
|
||||||
#define MIN_VAMP_SATURATION_UNITS -128
|
|
||||||
#define MAX_VAMP_SATURATION_UNITS 127
|
|
||||||
|
|
||||||
#define MIN_VAMP_SHARPNESS_UNITS -8
|
|
||||||
#define MAX_VAMP_SHARPNESS_UNITS 7
|
|
||||||
|
|
||||||
//图像格式
|
//图像格式
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -104,29 +92,7 @@ typedef enum
|
|||||||
VideoSubType_RGB32
|
VideoSubType_RGB32
|
||||||
} VideoSubType;
|
} VideoSubType;
|
||||||
|
|
||||||
//视频制式
|
|
||||||
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;
|
|
||||||
|
|
||||||
//场类型
|
//场类型
|
||||||
typedef enum
|
typedef enum
|
||||||
@@ -137,20 +103,6 @@ typedef enum
|
|||||||
Interlaced_Field//复合场
|
Interlaced_Field//复合场
|
||||||
}VideoFieldType;
|
}VideoFieldType;
|
||||||
|
|
||||||
//视频叠加参数
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
LONG cfHeight; //字符高度
|
|
||||||
LONG cfWidth; //字符宽度
|
|
||||||
LONG cfWeight; //字符粗细
|
|
||||||
LONG cfSpacing; //字符间距
|
|
||||||
BOOL cfItalic; //斜体
|
|
||||||
BOOL cfUnderline; //下划线
|
|
||||||
BOOL cfStrikeOut; //删除线
|
|
||||||
COLORREF cfBkColor; //背景色
|
|
||||||
COLORREF cfTextColor; //前景色
|
|
||||||
TCHAR cfFaceName[32]; //字体名
|
|
||||||
}OSDPARAM;
|
|
||||||
|
|
||||||
//视频属性范围
|
//视频属性范围
|
||||||
typedef struct
|
typedef struct
|
||||||
@@ -175,21 +127,12 @@ typedef struct
|
|||||||
BITMAPINFOHEADER bmiHeader; //宽、高、颜色位率等
|
BITMAPINFOHEADER bmiHeader; //宽、高、颜色位率等
|
||||||
} VIDEOSTREAMINFO;
|
} VIDEOSTREAMINFO;
|
||||||
|
|
||||||
//视频源输入频率
|
|
||||||
typedef enum
|
|
||||||
{ //@enum Field frequency
|
|
||||||
FIELD_FREQ_50HZ = 0, //@emem source is 50 Hz (PAL)
|
|
||||||
FIELD_FREQ_60HZ = 1, //@emem source is 60 Hz (NTSC)
|
|
||||||
FIELD_FREQ_0HZ = 2 //@emem source is 0 Hz (NO SIGNL)
|
|
||||||
}eFieldFrequency;
|
|
||||||
|
|
||||||
|
|
||||||
//动态检测回调
|
//动态检测回调
|
||||||
typedef void (CALLBACK *PrcCbMotionDetect)( long lnCardID, BOOL bMove, LPVOID lpContext );
|
typedef void (CALLBACK *PrcCbMotionDetect)( long lnCardID, BOOL bMove, LPVOID lpContext );
|
||||||
//捕获原始流回调
|
//捕获原始流回调
|
||||||
typedef void (CALLBACK *PrcCapSourceStream)( long lnCardID, long pBuf, long lnWidth, long lnHeight, long lnBiCount );
|
typedef void (CALLBACK *PrcCapSourceStream)( long lnCardID, long pBuf, long lnWidth, long lnHeight, long lnBiCount );
|
||||||
//IO报警回调
|
//IO报警回调
|
||||||
typedef void (CALLBACK *PrcIoAlertCallBack)( long lnCardID );
|
typedef void (CALLBACK *PrcIoAlertCallBack_TC4000)( long lnCardID );
|
||||||
typedef void (CALLBACK *PrcPicMessage)( long lnCardID, long pBuf, long lnWidth, long lnHeight);
|
typedef void (CALLBACK *PrcPicMessage)( long lnCardID, long pBuf, long lnWidth, long lnHeight);
|
||||||
//初始化SDK
|
//初始化SDK
|
||||||
HRESULT WINAPI VCAInitSdk();
|
HRESULT WINAPI VCAInitSdk();
|
||||||
@@ -224,7 +167,7 @@ HRESULT WINAPI VCAGetVideoPropertyValue(int nCards, VideoProperty eVideoProperty
|
|||||||
//IO输出
|
//IO输出
|
||||||
HRESULT WINAPI VCAIOAlertOut(int nCards, BOOL bHighLevel);
|
HRESULT WINAPI VCAIOAlertOut(int nCards, BOOL bHighLevel);
|
||||||
//初始化IO输入
|
//初始化IO输入
|
||||||
HRESULT WINAPI VCAInitIOAlertIn(int nCards, PrcIoAlertCallBack ppCall);
|
HRESULT WINAPI VCAInitIOAlertIn(int nCards, PrcIoAlertCallBack_TC4000 ppCall);
|
||||||
//开始等待IO输入
|
//开始等待IO输入
|
||||||
HRESULT WINAPI VCAStartIOAlertIn(int nCards, BOOL bHigh);
|
HRESULT WINAPI VCAStartIOAlertIn(int nCards, BOOL bHigh);
|
||||||
//停止等待IO输入
|
//停止等待IO输入
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
|
|
||||||
#ifndef __LIBDXCAP_DATASTRU__20110805__
|
#ifndef __LIBDXCAP_DATASTRU__20110805__
|
||||||
#define __LIBDXCAP_DATASTRU__20110805__
|
#define __LIBDXCAP_DATASTRU__20110805__
|
||||||
|
|
||||||
|
#include"..\VideocardCommonDefine.h"
|
||||||
|
|
||||||
typedef void* device_handle;
|
typedef void* device_handle;
|
||||||
typedef void* image_handle;
|
typedef void* image_handle;
|
||||||
|
|
||||||
@@ -33,13 +36,6 @@ typedef void* image_handle;
|
|||||||
#define MAX_SHARPNESS 7
|
#define MAX_SHARPNESS 7
|
||||||
|
|
||||||
|
|
||||||
typedef enum { //@enum Decoder control types
|
|
||||||
BRIGHTNESS = 0, //@emem control for brightness
|
|
||||||
CONTRAST = 1, //@emem control for contrast
|
|
||||||
SATURATION = 2, //@emem control for saturation
|
|
||||||
HUE = 3, //@emem control for hue
|
|
||||||
SHARPNESS = 4 //@emem control for sharpness
|
|
||||||
}COLORCONTROL;
|
|
||||||
//ÊÓÆµÖÆÊ½
|
//ÊÓÆµÖÆÊ½
|
||||||
//typedef enum
|
//typedef enum
|
||||||
//{
|
//{
|
||||||
|
|||||||
@@ -0,0 +1,273 @@
|
|||||||
|
#ifndef VC404_CAPTURE_SAA7134
|
||||||
|
#define VC404_CAPTURE_SAA7134
|
||||||
|
|
||||||
|
#ifdef SAA7134CAPTURE_EXPORTS
|
||||||
|
#define SAA7134CAPTURE_API __declspec(dllexport)
|
||||||
|
#else
|
||||||
|
#define SAA7134CAPTURE_API __declspec(dllimport)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include"..\VideocardCommonDefine.h"
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
//注意:VC枚举类型为32位,4字节;这里的枚举类型为4字节。
|
||||||
|
// C++ builder枚举类型为8位,1字节,要重定义,例如:
|
||||||
|
//typedef int COLORCONTROL;
|
||||||
|
//COLORCONTROL BRIGHTNESS = 0;
|
||||||
|
//COLORCONTROL CONTRAST = 1;
|
||||||
|
//COLORCONTROL SATURATION = 2;
|
||||||
|
//COLORCONTROL HUE = 3;
|
||||||
|
//COLORCONTROL SHARPNESS = 4;
|
||||||
|
|
||||||
|
//描述:在VC中enum、ULONG、LONG、BOOL、DWORD 都为32位,4字节,
|
||||||
|
//这里使用的是VC定义标准。
|
||||||
|
/////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum { //@enum Decoder control types
|
||||||
|
XVID_CBR_MODE = 0,
|
||||||
|
XVID_VBR_MODE = 1//,
|
||||||
|
}COMPRESSMODE;
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
COLOR_DECODER = 0, //解码器(包括视频预览和视频捕获)
|
||||||
|
COLOR_PREVIEW = 1, //视频预览
|
||||||
|
COLOR_CAPTURE = 2 //视频捕获
|
||||||
|
}COLORDEVICETYPE;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
VID_CAPTURE_EVENT = 0,
|
||||||
|
AUD_CAPTURE_EVENT1 = 1,
|
||||||
|
AUD_CAPTURE_EVENT2 = 2,
|
||||||
|
IO_ALERT_EVENT = 3,
|
||||||
|
MOTION_DETECT = 4,
|
||||||
|
VID_PREVIEW_EVENT = 5
|
||||||
|
}EVENTTYPE;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
RGB32 = 0x0,
|
||||||
|
RGB24 = 0x1,
|
||||||
|
RGB16 = 0x2,
|
||||||
|
RGB15 = 0x3,
|
||||||
|
YUY2 = 0x4,
|
||||||
|
BTYUV = 0x5,
|
||||||
|
Y8 = 0x6,
|
||||||
|
RGB8 = 0x7,
|
||||||
|
PL422 = 0x8,
|
||||||
|
PL411 = 0x9,
|
||||||
|
YUV12 = 0xA,
|
||||||
|
YUV9 = 0xB,
|
||||||
|
RAW = 0xE
|
||||||
|
}COLORFORMAT;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
CAP_NULL_STREAM = 0, //捕获无效
|
||||||
|
CAP_ORIGIN_STREAM = 1, /*原始流回调*/
|
||||||
|
CAP_MPEG4_STREAM = 2, /*Mpeg4流*/
|
||||||
|
CAP_MPEG4_XVID_STREAM = 3,
|
||||||
|
CAP_ORIGIN_MPEG4_STREAM = 4,
|
||||||
|
CAP_ORIGIN_XVID_STREAM = 5,
|
||||||
|
CAP_WMV9_STREAM = 6,
|
||||||
|
CAP_ORIGIN_WMV9_STREAM = 7
|
||||||
|
|
||||||
|
}CAPMODEL;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MPEG4_AVIFILE_ONLY = 0, //存为MPEG文件
|
||||||
|
MPEG4_CALLBACK_ONLY = 1, //MPEG数据回调
|
||||||
|
MPEG4_AVIFILE_CALLBACK = 2 //存为MPEG文件并回调
|
||||||
|
}MP4MODEL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum { //电平等级
|
||||||
|
HIGH_VOLTAGE = 0, //高电平
|
||||||
|
LOW_VOLTAGE = 1 //低电平
|
||||||
|
}eVOLTAGELEVEL;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
NOT_DISPLAY = 0,
|
||||||
|
PCI_VIEDOMEMORY = 1,
|
||||||
|
PCI_MEMORY_VIDEOMEMORY = 2
|
||||||
|
}DISPLAYTRANSTYPE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//error define area
|
||||||
|
|
||||||
|
#define ERR_SUCCESS 0 //no error,success
|
||||||
|
#define ERR_NODEVICEFOUND 1 //no device found in system
|
||||||
|
#define ERR_UNSUPPORTFUNC 2 //unsupport func tempro?
|
||||||
|
#define ERR_ALLOCRESOURCE 3 //alloc resource error
|
||||||
|
#define ERR_INITDIRECTDRAW 4 //Init Directdraw error
|
||||||
|
#define ERR_INITDIRECTSOUND 5 //Init Directdraw error
|
||||||
|
#define ERR_NOT_10MOONSDEV 6 //it is not device of 10Moons
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//VC4000/VC8000/VC404P公有函数
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
//动态检测回调,
|
||||||
|
//如果VCAEnableMotionDetect 参数nPersistTime = -1;则回调运动检测地图。取消(开始、停止)回调。bMove将无效。
|
||||||
|
//如果VCAEnableMotionDetect 参数nPersistTime != -1;则回调开始、停止运动检测;取消回调运动检测地图。pbuff、dwSize将无效。
|
||||||
|
typedef void (CALLBACK *PrcCbMotionDetect_TC4000)( DWORD dwCard, BOOL bMove, BYTE *pbuff, DWORD dwSize, LPVOID lpContext );
|
||||||
|
//视频捕获原始数据回调
|
||||||
|
typedef void (CALLBACK *PrcVidCapCallBack)( DWORD dwCard, BYTE *pbuff, DWORD dwSize );
|
||||||
|
//视频MPEG压缩数据回调
|
||||||
|
typedef void (CALLBACK *PrcVidMpegCallBack)( DWORD dwCard, BYTE *pbuff, DWORD dwSize, BOOL isKeyFrm );
|
||||||
|
//音频捕获原始数据回调
|
||||||
|
//音频包原始大小16 Bit PCM格式,8080 BYTE,2声道,32000Hz
|
||||||
|
typedef void (CALLBACK *PrcAudCapCallBack)( DWORD dwCard, BYTE *pbuff,DWORD dwSize );
|
||||||
|
//音频MPEG压缩数据回调
|
||||||
|
typedef void (CALLBACK *PrcAudMpegCallBack)( DWORD dwCard, BYTE *pbuff,DWORD dwSize );
|
||||||
|
//IO报警回调
|
||||||
|
typedef void (CALLBACK *PrcIoAlertCallBack)( DWORD dwCard );
|
||||||
|
//视频Mpeg处理回调 ,pPorcess 返回为TRUE 表示当前帧压缩;返回为FALSE 表示丢掉当前帧
|
||||||
|
typedef void (CALLBACK *PrcVidMpegPorCallBack)( DWORD dwCard, BOOL* pPorcess );
|
||||||
|
//音频Mpeg处理回调,pPorcess 返回为TRUE 表示当音频包压缩;返回为FALSE 表示丢掉当前音频包。
|
||||||
|
typedef void (CALLBACK *PrcAudMpegPorCallBack)( DWORD dwCard, BOOL* pPorcess );
|
||||||
|
//注册视频捕获原始数据回调
|
||||||
|
BOOL WINAPI VCARegVidCapCallBack( DWORD dwCard, PrcVidCapCallBack ppCall );
|
||||||
|
//注册视频MPEG压缩数据回调
|
||||||
|
BOOL WINAPI VCARegVidMpegCallBack( DWORD dwCard, PrcVidMpegCallBack ppCall );
|
||||||
|
//设置错误序号
|
||||||
|
void WINAPI VCASetLastError( DWORD dwError );
|
||||||
|
//得到错误序号
|
||||||
|
DWORD WINAPI VCAGetLastError();
|
||||||
|
//初始化SDK,hWndMain:overlay窗口句柄,overlay窗口就是包含多路显示小窗口的大窗口。overlay窗口必须有一个,多路显示小窗口必须包含再其内部。
|
||||||
|
//bInitVidDev:是否初始化视频设备用于预览,当视频不显示,只需视频录像或音频处理时可以设置为FALSE.
|
||||||
|
//bInitAudDev:是否初始化音频设备用于声音播放,当不音频不需要播放,只需音频录像或视频处理时、或没有安装声卡,可以设置为FALSE.
|
||||||
|
BOOL WINAPI VCAInitSdk( HWND hWndMain, DISPLAYTRANSTYPE eDispTransType = PCI_VIEDOMEMORY, BOOL bInitAudDev = FALSE );
|
||||||
|
//释放SDK资源
|
||||||
|
void WINAPI VCAUnInitSdk();
|
||||||
|
//得到设备总数
|
||||||
|
LONG WINAPI VCAGetDevNum();
|
||||||
|
//打开设备,hPreviewWnd为视频预览窗口的句柄,该窗口背景色用户必需设置为RGB(255,0,255)
|
||||||
|
BOOL WINAPI VCAOpenDevice( DWORD dwCard,HWND hPreviewWnd );
|
||||||
|
//关闭设备
|
||||||
|
BOOL WINAPI VCACloseDevice( DWORD dwCard );
|
||||||
|
//开始视频预览
|
||||||
|
BOOL WINAPI VCAStartVideoPreview( DWORD dwCard );
|
||||||
|
//停止视频预览
|
||||||
|
BOOL WINAPI VCAStopVideoPreview( DWORD dwCard );
|
||||||
|
//更新视频预览,比如改变了显示窗口时,调用。
|
||||||
|
BOOL WINAPI VCAUpdateVideoPreview( DWORD dwCard, HWND hPreviewWnd );
|
||||||
|
//更新overlay窗口,当overlay窗口句柄改变或尺寸,位置改变时调用,overlay窗口就是包含多路显示小窗口的大窗口。overlay窗口必须有一个,多路显示小窗口必须包含再其内部。
|
||||||
|
BOOL WINAPI VCAUpdateOverlayWnd(HWND hOverlayWnd);
|
||||||
|
|
||||||
|
//保存快照数据到相应的缓冲区
|
||||||
|
BOOL WINAPI VCASaveBitsToBuf( DWORD dwCard, PVOID pDestBuf, DWORD& dwWidth, DWORD& dwHeight );
|
||||||
|
//保存快照为JPEG文件
|
||||||
|
BOOL WINAPI VCASaveAsJpegFile( DWORD dwCard, LPCTSTR lpFileName, DWORD dwQuality = 100 );
|
||||||
|
//保存快照为BMP文件
|
||||||
|
BOOL WINAPI VCASaveAsBmpFile( DWORD dwCard, LPCTSTR lpFileName );
|
||||||
|
//开始视频捕获
|
||||||
|
BOOL WINAPI VCAStartVideoCapture(unsigned long ,CAPMODEL,MP4MODEL,char const *);
|
||||||
|
//( DWORD dwCard,CAPMODEL enCapMode,MP4MODEL enMp4Mode,LPCTSTR lpFileName );
|
||||||
|
//停止视频捕获
|
||||||
|
BOOL WINAPI VCAStopVideoCapture( DWORD dwCard );
|
||||||
|
//设置视频捕获尺寸, dwWidth和dwHeight最好为16的倍数,否则,动态检测为16*16一个检测小块,检测将会不准确。
|
||||||
|
BOOL WINAPI VCASetVidCapSize( DWORD dwCard, DWORD dwWidth, DWORD dwHeight );
|
||||||
|
//得到视频捕获尺寸
|
||||||
|
BOOL WINAPI VCAGetVidCapSize( DWORD dwCard, DWORD &dwWidth, DWORD &dwHeight );
|
||||||
|
|
||||||
|
/*设置视频捕获帧率,bFrameRateReduction参数为保留参数。
|
||||||
|
PAL显示帧率显示帧率始终为25,NTSC显示帧率始终为30
|
||||||
|
PAL捕获帧率最大为25,NTSC捕获帧率最大为30
|
||||||
|
*/
|
||||||
|
BOOL WINAPI VCASetVidCapFrameRate( DWORD dwCard, DWORD dwFrameRate, BOOL bFrameRateReduction = FALSE );
|
||||||
|
|
||||||
|
//设置MPEG压缩的位率,范围:56bps ~ 10Mbps; 单位Kbps
|
||||||
|
BOOL WINAPI VCASetBitRate( DWORD dwCard, DWORD dwBitRate);
|
||||||
|
//设置MPEG压缩的关键帧间隔,必须大于等于帧率
|
||||||
|
BOOL WINAPI VCASetKeyFrmInterval( DWORD dwCard, DWORD dwKeyFrmInterval);
|
||||||
|
//设置MPEG4_XVID压缩的质量 dwQuantizer: 1 ~ 31 (1为最小量度,压缩质量最好); dwMotionPrecision: 0 ~ 6 (0最小运动精度)
|
||||||
|
BOOL WINAPI VCASetXVIDQuality( DWORD dwCard, DWORD dwQuantizer, DWORD dwMotionPrecision);
|
||||||
|
//设置MPEG4_XVID压缩模式
|
||||||
|
BOOL WINAPI VCASetXVIDCompressMode( DWORD dwCard, COMPRESSMODE enCompessMode );
|
||||||
|
|
||||||
|
//设置动态检测,视频捕获停止时调用有效,VCASetVidCapSize 的设置参数 dwWidth和dwHeight最好为16的倍数,否则,动态检测因16*16一个检测小块,检测将会不准确。
|
||||||
|
BOOL WINAPI VCAEnableMotionDetect( DWORD dwCard,
|
||||||
|
BOOL bEnaDetect, //是否允许动态检测
|
||||||
|
BYTE *pAreaMap, //运动检测地图
|
||||||
|
LONG nSizeOfMap, //pAreaMap尺寸,以BYTE为单位
|
||||||
|
LONG nPersistTime, //物体持续nPersistTime秒不动则认为停止 1-30s ,如果nPersistTime = -1;则回调运动检测地图。取消(开始、停止)回调。
|
||||||
|
INT nFrameRateReduce, // zdp add 降低采样比较倍数
|
||||||
|
LPVOID lpContext, //监测上下文
|
||||||
|
PrcCbMotionDetect_TC4000 OnObjectMove ); //运动/停止回调函数
|
||||||
|
|
||||||
|
//设置视频色彩
|
||||||
|
BOOL WINAPI VCASetVidDeviceColor( DWORD dwCard, COLORCONTROL enCtlType, DWORD dwValue );
|
||||||
|
|
||||||
|
//得到视频源输入频率( 0HZ / 50HZ / 60HZ )对应( 无信号 / PAL制 / NTSC制 ), 参考枚举变量eFieldFrequency
|
||||||
|
BOOL WINAPI VCAGetVidFieldFrq( DWORD dwCard, eFieldFrequency &eVidSourceFieldRate );
|
||||||
|
//设置视频源输入频率( 0HZ / 50HZ / 60HZ )对应( 无信号 / PAL制 / NTSC制 ), 参考枚举变量eFieldFrequency
|
||||||
|
BOOL WINAPI VCASetVidFieldFrq( DWORD dwCard, eFieldFrequency eVidSourceFieldRate );
|
||||||
|
|
||||||
|
//暂停捕获,暂停视频捕获和音频捕获,可用于快速改变音视频捕获类型和文件切换,设置视频捕获字幕叠加
|
||||||
|
BOOL WINAPI VCAPauseCapture( DWORD dwCard );
|
||||||
|
//设置视频捕获文本叠加
|
||||||
|
BOOL WINAPI VCASetVidCapTextOSD( DWORD dwCard, BOOL bEnableOSD, TCHAR* tcText, POINT& ptTopLeft, OSDPARAM* pOSDParm );
|
||||||
|
//设置视频捕获时间、日期叠加,在VCASetVidCapDateTimeOSDPARAM()函数设置后调用有效
|
||||||
|
BOOL WINAPI VCASetVidCapDateTimeOSD( DWORD dwCard, BOOL bEnableOSD, POINT& ptTopLeft);
|
||||||
|
//设置视频捕获字幕叠加
|
||||||
|
BOOL WINAPI VCASetVidCapDateTimeOSDParam( OSDPARAM* pOSDParm );
|
||||||
|
//允许视频Mpeg处理回调
|
||||||
|
BOOL WINAPI VCAEnableVidMpegProcess( DWORD dwCard, BOOL bEnPorcess, PrcVidMpegPorCallBack ppCall );
|
||||||
|
//得到设备芯片ID
|
||||||
|
BOOL WINAPI VCAGetDeviceID( DWORD dwCard, DWORD& dwDeviceID );
|
||||||
|
//初始化视频设备,当视频不显示,只需视频录像或音频处理时、或通过VCAInitSdk()函数已经初始化完成可以不初始化。
|
||||||
|
BOOL WINAPI VCAInitVidDev( DISPLAYTRANSTYPE eDispTransType = PCI_VIEDOMEMORY);
|
||||||
|
//读E2C
|
||||||
|
BOOL WINAPI VCAIsE2C( DWORD dwCard, BOOL& bIsE2C );
|
||||||
|
//读E2C
|
||||||
|
BOOL WINAPI VCAGetE2C( DWORD dwCard, int iSubAddr, BYTE& ucData );
|
||||||
|
//写E2C
|
||||||
|
BOOL WINAPI VCASetE2C( DWORD dwCard, int iSubAddr, BYTE ucData );
|
||||||
|
//检验客户信息 pKey:长度为16 字节,用户加密Key值;bSuccess:表示验证是否通过 。
|
||||||
|
BOOL WINAPI VCACheckValidate( BYTE* pKey, BOOL& bSuccess );
|
||||||
|
|
||||||
|
BOOL WINAPI VCAGetFileLength(DWORD dwCard, DWORD & FileLength);
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//VC404P音频处理函数
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//初始化音频设备,是否初始化音频设备用于声音播放,当不音频不需要播放,只需音频录像或视频处理时、或没有安装声卡或通过VCAInitSdk()函数已经初始化完成可以不初始化。
|
||||||
|
//dwAudFreq:音频播放频率,默认为32K,但有些主板因为某些原因,上传的音频频率可能高于或低于32K,所以根据实际情况,传入这个参数。
|
||||||
|
BOOL WINAPI VCAInitAudDev( DWORD dwAudFreq = 32000 );
|
||||||
|
//注册音频捕获原始数据回调
|
||||||
|
BOOL WINAPI VCARegAudCapCallBack( DWORD dwCard, PrcAudCapCallBack ppCall );
|
||||||
|
//注册音频MPEG压缩数据回调
|
||||||
|
BOOL WINAPI VCARegAudMpegCallBack( DWORD dwCard, PrcAudMpegCallBack ppCall );
|
||||||
|
//开始音频捕获,如果音频捕获方式为MPEG4,视频捕获MPEG4方式开始时,调用有效
|
||||||
|
BOOL WINAPI VCAStartAudioCapture( DWORD dwCard,
|
||||||
|
CAPMODEL enCapMode,
|
||||||
|
MP4MODEL enMp4Mode );
|
||||||
|
|
||||||
|
//允许音频从声卡输出,当dwCard >= 100 时,为静音;开始音频捕获时有效
|
||||||
|
BOOL WINAPI VCASetAudioCardOutOn( DWORD dwCard );
|
||||||
|
//停止音频捕获,如果音频捕获方式为MPEG4,视频捕获MPEG4方式开始时,调用有效
|
||||||
|
BOOL WINAPI VCAStopAudioCapture( DWORD dwCard );
|
||||||
|
//允许音频Mpeg处理回调
|
||||||
|
BOOL WINAPI VCAEnableAudMpegProcess( DWORD dwCard, BOOL bEnPorcess, PrcAudMpegPorCallBack ppCall );
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//VC404P IO处理函数
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//注册IO报警回调
|
||||||
|
BOOL WINAPI VCARegIoAlertCallBack( DWORD dwCard, PrcIoAlertCallBack ppCall );
|
||||||
|
//设置IO输入报警当前电平
|
||||||
|
BOOL WINAPI VCASetIOAlertLevelIn( DWORD dwCard, eVOLTAGELEVEL enCurrentLevel );
|
||||||
|
//开始IO输入报警,enSpringLevel为触发电平
|
||||||
|
BOOL WINAPI VCAStartIOAlertIn( DWORD dwCard, eVOLTAGELEVEL enSpringLevel );
|
||||||
|
//停止IO输入报警
|
||||||
|
BOOL WINAPI VCAStopIOAlertIn( DWORD dwCard );
|
||||||
|
//IO输出报警
|
||||||
|
BOOL WINAPI VCAIOAlertOut( DWORD dwCard, eVOLTAGELEVEL enLevel );
|
||||||
|
#endif
|
||||||
Binary file not shown.
@@ -0,0 +1,78 @@
|
|||||||
|
#ifndef VIDEOCARD_COMMON_DEFINE_H
|
||||||
|
#define VIDEOCARD_COMMON_DEFINE_H
|
||||||
|
|
||||||
|
#define MIN_VAMP_BRIGHTNESS_UNITS 0
|
||||||
|
#define MAX_VAMP_BRIGHTNESS_UNITS 255
|
||||||
|
|
||||||
|
#define MIN_VAMP_CONTRAST_UNITS -128
|
||||||
|
#define MAX_VAMP_CONTRAST_UNITS 127
|
||||||
|
|
||||||
|
#define MIN_VAMP_HUE_UNITS -128
|
||||||
|
#define MAX_VAMP_HUE_UNITS 127
|
||||||
|
|
||||||
|
#define MIN_VAMP_SATURATION_UNITS -128
|
||||||
|
#define MAX_VAMP_SATURATION_UNITS 127
|
||||||
|
|
||||||
|
#define MIN_VAMP_SHARPNESS_UNITS -8
|
||||||
|
#define MAX_VAMP_SHARPNESS_UNITS 7
|
||||||
|
|
||||||
|
|
||||||
|
//视频制式
|
||||||
|
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;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{ //@enum Field frequency
|
||||||
|
FIELD_FREQ_50HZ = 0, //@emem source is 50 Hz (PAL)
|
||||||
|
FIELD_FREQ_60HZ = 1, //@emem source is 60 Hz (NTSC)
|
||||||
|
FIELD_FREQ_0HZ = 2, //@emem source is 0 Hz (NO SIGNL)
|
||||||
|
FIELD_FREQ_50HZ_NULL = 3,
|
||||||
|
FIELD_FREQ_60HZ_NULL = 4
|
||||||
|
}eFieldFrequency;
|
||||||
|
|
||||||
|
typedef enum { //@enum Decoder control types
|
||||||
|
BRIGHTNESS = 0, //@emem control for brightness
|
||||||
|
CONTRAST = 1, //@emem control for contrast
|
||||||
|
SATURATION = 2, //@emem control for saturation
|
||||||
|
HUE = 3, //@emem control for hue
|
||||||
|
SHARPNESS = 4 //@emem control for sharpness
|
||||||
|
}COLORCONTROL;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
|
||||||
|
LONG cfHeight; //字符高度
|
||||||
|
LONG cfWidth; //字符宽度
|
||||||
|
LONG cfWeight; //字符粗细
|
||||||
|
LONG cfSpacing; //字符间距
|
||||||
|
BOOL cfItalic; //斜体
|
||||||
|
BOOL cfUnderline; //下划线
|
||||||
|
BOOL cfStrikeOut; //删除线
|
||||||
|
BOOL bTransparent; //透明
|
||||||
|
COLORREF cfBkColor; //背景色
|
||||||
|
COLORREF cfTextColor; //前景色
|
||||||
|
TCHAR cfFaceName[32]; //字体名
|
||||||
|
|
||||||
|
}OSDPARAM;
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user