📄 cpecontrol.cpp
字号:
wVGAHeight = wImgHeight;
if ( bZoomMark == FALSE ){
if ( (winOrgPoint.x + wVGAWidth) > wScreenWidth )
wVGAWidth = (WORD)((wScreenWidth - winOrgPoint.x)&0xfffc) ;
if ( (winOrgPoint.y + wVGAHeight) > wScreenHeight )
wVGAHeight = (WORD)((wScreenHeight - winOrgPoint.y)&0xfffc);
}
else {
wTemp = (wScale - IDM_10_SCALE)*10 + 10;
wTempWidth = wVGAWidth;
wTempHeight = wVGAHeight;
W32_Set_Zoom_Value( (SHORT)wTemp,(SHORT) wTemp, &wTempWidth, &wTempHeight );
if ( (winOrgPoint.x + wTempWidth) > wScreenWidth )
return ;
if ( (winOrgPoint.y + wTempHeight) > wScreenHeight )
return ;
}
wGrabWinX1 = cpeParam[4];
wGrabWinY1 = cpeParam[5];
wGrabWinX2 = (WORD)(wVGAWidth - 1 + cpeParam[4]);
wGrabWinY2 = (WORD)(wVGAHeight - 1 + cpeParam[5]);
wTotal_Frames = W32_Set_Grab_Window(wGrabWinX1, wGrabWinY1, wGrabWinX2, wGrabWinY2);
bGrabMark = TRUE;
//ShowCursor( FALSE );
}
int CCPEControl::RTStop()
{
bRealGrab=m_pThreadRecord->bRealGrab;
TRACE("bRealGraab=%d\n",bRealGrab);
if(bRealGrab==FALSE) return 0;
bGrabMark = FALSE;
W32_CPE_Exit_Grab_VGA( (WORD)winOrgPoint.x, (WORD)winOrgPoint.y );
ShowCursor( TRUE );
bRealGrab=FALSE;
if ( bZoomMark == TRUE )
{
wTemp = (wScale - IDM_10_SCALE)*10 + 10;
W32_Set_Zoom_Value( (SHORT)wTemp,(SHORT) wTemp, &wVGAWidth, &wVGAHeight );
}
W32_WriteVGA2XMS( (WORD)winOrgPoint.x,(WORD) winOrgPoint.y, wVGAWidth, wVGAHeight, wCurrent_Frame );
if ( lpDib!=NULL )
{
GlobalUnlock( hglb );
GlobalFree(hglb);
}
if ( bZoomMark == TRUE )
{
wTempWidth = wScaleWidth;
wTempHeight = wScaleHeight;
}
else {
wTempWidth = wImgWidth;
wTempHeight = wImgHeight;
}
dwDibSize = (DWORD)wTempHeight * 3L;
dwDibSize = dwDibSize * (DWORD)wTempWidth;
hglb = GlobalAlloc( GHND, dwDibSize );
if ( hglb == NULL )
{
//MessageBox( hwnd, "Alloc lpDib error!!!", "Error", MB_OK );
AfxMessageBox("内存空间分配失败!");
return 0;
}
lpDib = (BYTE *)GlobalLock( hglb );
if (lpDib != NULL) {
if ( W32_ReadXMS2Buf( wCurrent_Frame, lpDib) < 0 )
{
// MessageBox( hwnd, "Sorry, ReadXMS2Buf error!!!", "Error", MB_OK );
AfxMessageBox("读取采集数据失败!");
return 0;
}
}
return 0;
}
void CCPEControl::CPEExit()
{
W32_Close_CPE1000();
if(m_pThreadRecord!=NULL){
delete m_pThreadRecord;
m_pThreadRecord=NULL;
}
if (lpDib != NULL){
GlobalUnlock( hglb );
GlobalFree( hglb );
lpDib=NULL;
}
if (lpMark != NULL){
free(lpMark);
lpMark=NULL;
}
}
void CCPEControl::ModifyContrast(int nContrast)
{
if(nContrast>127)nContrast=127;
if(nContrast<0)nContrast=0;
m_MCpeParam[0]=nContrast;
W32_Modify_Contrast( (BYTE)nContrast);
//W32_Modify_Brightness( (BYTE)cpeParam[1] );
//W32_Modify_Saturate( (BYTE)cpeParam[2] );
//W32_Modify_Hue( (BYTE)cpeParam[3] );
if ( bRealGrab ) {
W32_CPE_Exit_Grab_VGA( (WORD)videoX, (WORD)videoY );
bRealGrab = FALSE;
wGrabWinX1 = cpeParam[4];
wGrabWinY1 = cpeParam[5];
wGrabWinX2 = wVGAWidth - 1 + cpeParam[4];
wGrabWinY2 = wVGAHeight - 1 + cpeParam[5];
W32_Set_Grab_Window(wGrabWinX1, wGrabWinY1, wGrabWinX2, wGrabWinY2);
W32_CPE_RealGrab_VGA((WORD)videoX, (WORD)videoY);
bRealGrab = TRUE;
}
}
void CCPEControl::ModifyBright(int nBright)
{
if(nBright>255)nBright=255;
if(nBright<0)nBright=0;
m_MCpeParam[1]=nBright;
//W32_Modify_Contrast( (BYTE)nBright);
W32_Modify_Brightness( (BYTE)nBright);
//W32_Modify_Saturate( (BYTE)cpeParam[2] );
//W32_Modify_Hue( (BYTE)cpeParam[3] );
if ( bRealGrab ) {
W32_CPE_Exit_Grab_VGA( (WORD)videoX, (WORD)videoY );
bRealGrab = FALSE;
wGrabWinX1 = cpeParam[4];
wGrabWinY1 = cpeParam[5];
wGrabWinX2 = wVGAWidth - 1 + cpeParam[4];
wGrabWinY2 = wVGAHeight - 1 + cpeParam[5];
W32_Set_Grab_Window(wGrabWinX1, wGrabWinY1, wGrabWinX2, wGrabWinY2);
W32_CPE_RealGrab_VGA((WORD)videoX, (WORD)videoY);
bRealGrab = TRUE;
}
}
void CCPEControl::ModifySaturate(int nSaturate)
{
if(nSaturate>127)nSaturate=127;
if(nSaturate<0)nSaturate=0;
m_MCpeParam[2]=nSaturate;
//W32_Modify_Contrast( (BYTE)nContrast);
//W32_Modify_Brightness( (BYTE)cpeParam[1] );
W32_Modify_Saturate( (BYTE)nSaturate );
//W32_Modify_Hue( (BYTE)cpeParam[3] );
if ( bRealGrab ) {
W32_CPE_Exit_Grab_VGA( (WORD)videoX, (WORD)videoY );
bRealGrab = FALSE;
wGrabWinX1 = cpeParam[4];
wGrabWinY1 = cpeParam[5];
wGrabWinX2 = wVGAWidth - 1 + cpeParam[4];
wGrabWinY2 = wVGAHeight - 1 + cpeParam[5];
W32_Set_Grab_Window(wGrabWinX1, wGrabWinY1, wGrabWinX2, wGrabWinY2);
W32_CPE_RealGrab_VGA((WORD)videoX, (WORD)videoY);
bRealGrab = TRUE;
}
}
void CCPEControl::ModifyHue(int nHue)
{
if(nHue>127)nHue=127;
if(nHue<0)nHue=0;
m_MCpeParam[3]=nHue;
//W32_Modify_Contrast( (BYTE)nContrast);
//W32_Modify_Brightness( (BYTE)cpeParam[1] );
//W32_Modify_Saturate( (BYTE)nSaturate );
W32_Modify_Hue( (BYTE)nHue);
if ( bRealGrab ) {
W32_CPE_Exit_Grab_VGA( (WORD)videoX, (WORD)videoY );
bRealGrab = FALSE;
wGrabWinX1 = cpeParam[4];
wGrabWinY1 = cpeParam[5];
wGrabWinX2 = wVGAWidth - 1 + cpeParam[4];
wGrabWinY2 = wVGAHeight - 1 + cpeParam[5];
W32_Set_Grab_Window(wGrabWinX1, wGrabWinY1, wGrabWinX2, wGrabWinY2);
W32_CPE_RealGrab_VGA((WORD)videoX, (WORD)videoY);
bRealGrab = TRUE;
}
}
void CCPEControl::ModifyWinX(int nWinX)
{
W32_Modify_Contrast( (BYTE)cpeParam[0] );
W32_Modify_Brightness( (BYTE)cpeParam[1] );
W32_Modify_Saturate( (BYTE)cpeParam[2] );
W32_Modify_Hue( (BYTE)cpeParam[3] );
if(nWinX>127) nWinX=127;
if(nWinX<0) nWinX=0;
m_MCpeParam[4]=nWinX;
if ( bRealGrab ) {
W32_CPE_Exit_Grab_VGA( (WORD)videoX, (WORD)videoY );
bRealGrab = FALSE;
wGrabWinX1 = nWinX;
wGrabWinY1 = m_MCpeParam[5];
wGrabWinX2 = wVGAWidth - 1 +nWinX;
wGrabWinY2 = wVGAHeight - 1 + m_MCpeParam[5];
W32_Set_Grab_Window(wGrabWinX1, wGrabWinY1, wGrabWinX2, wGrabWinY2);
W32_CPE_RealGrab_VGA((WORD)videoX, (WORD)videoY);
bRealGrab = TRUE;
}
}
void CCPEControl::ModifyWinY(int nWinY)
{
W32_Modify_Contrast( (BYTE)cpeParam[0] );
W32_Modify_Brightness( (BYTE)cpeParam[1] );
W32_Modify_Saturate( (BYTE)cpeParam[2] );
W32_Modify_Hue( (BYTE)cpeParam[3] );
if(nWinY>127) nWinY=127;
if(nWinY<0) nWinY=0;
m_MCpeParam[5]=nWinY;
if ( bRealGrab ) {
W32_CPE_Exit_Grab_VGA( (WORD)videoX, (WORD)videoY );
bRealGrab = FALSE;
wGrabWinX1 = m_MCpeParam[4];
wGrabWinY1 = m_MCpeParam[5];
wGrabWinX2 = wVGAWidth - 1 +m_MCpeParam[4];
wGrabWinY2 = wVGAHeight - 1 + m_MCpeParam[5];
W32_Set_Grab_Window(wGrabWinX1, wGrabWinY1, wGrabWinX2, wGrabWinY2);
W32_CPE_RealGrab_VGA((WORD)videoX, (WORD)videoY);
bRealGrab = TRUE;
}
}
void CCPEControl::WriteProfile()
{
CString strIniFile;
char szbuf[10];
strIniFile=AfxGetApp()->m_pszHelpFilePath;
strIniFile=strIniFile.Left(strIniFile.ReverseFind('\\')+1);
strIniFile+="ca-c100.ini";
wsprintf( szbuf, "%d", m_MCpeParam[0] );
WritePrivateProfileString( "Parameters", "Contrast", szbuf, strIniFile );
wsprintf( szbuf, "%d", m_MCpeParam[1] );
WritePrivateProfileString( "Parameters", "Brightness", szbuf, strIniFile );
wsprintf( szbuf, "%d", m_MCpeParam[2] );
WritePrivateProfileString( "Parameters", "Saturate", szbuf, strIniFile );
wsprintf( szbuf, "%d", m_MCpeParam[3] );
WritePrivateProfileString( "Parameters", "Hue", szbuf, strIniFile );
wsprintf( szbuf, "%d", m_MCpeParam[4] );
TRACE("m_MCpeParam[4]=%d\n",m_MCpeParam[4] );
WritePrivateProfileString( "StartPoint", "X_Start", szbuf, strIniFile );
wsprintf( szbuf, "%d", m_MCpeParam[5] );
TRACE("m_MCpeParam[5]=%d\n",m_MCpeParam[5] );
WritePrivateProfileString( "StartPoint", "Y_Start", szbuf, strIniFile );
wsprintf( szbuf, "%d", wCurrent_pixel_Format );
WritePrivateProfileString( "ImageFormat", "format", szbuf, strIniFile );
}
void CCPEControl::ModifyOK()
{
bRealGrab=m_pThreadRecord->bRealGrab;
TRACE("bRealGraab=%d\n",bRealGrab);
if(bRealGrab==TRUE)
{
WriteProfile();
RTStop();
bRealGrab=FALSE;
}
}
void CCPEControl::ModifyCancel()
{
bRealGrab=m_pThreadRecord->bRealGrab;
TRACE("bRealGraab=%d\n",bRealGrab);
if(bRealGrab==TRUE)
{
ModifyParamRestore();
bRealGrab=FALSE;
}
}
int CCPEControl::WriteBMPFile()
{
WORD wFrame;
wFrame=wCurrent_Frame;
LPSTR string1="bmp";
LPSTR string2="*.bmp";
static char BASED_CODE szFilter[]="Image File(*.bmp)|Data File(*.bmp)|*.bmp||";
CFileDialog Dlg(FALSE,string1,string2,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,NULL);
if(Dlg.DoModal()!=IDOK) return -1;
CString FileName;
FileName=Dlg.GetPathName();
CFile file;
if((!file.Open(FileName,CFile::modeCreate|CFile::shareDenyNone|CFile::modeNoTruncate|CFile::modeReadWrite)))
{
AfxMessageBox("打开保存文件失败!");
return -1;
}
file.Close();
char szFileName[260];
for(int j=0;j<260;j++)
szFileName[j]=0;
for( j=0;j<FileName.GetLength();j++)
szFileName[j]=FileName[j];
if ( wCurrent_pixel_Format != RGB24_PACKED )
{
AfxMessageBox("保存格式不是24位真彩色!");
return -1;
}
WORD Frame=1;
if(W32_WriteXMS2Bmp (szFileName,wFrame)<0)
{
AfxMessageBox("位图文件保存失败!");
return -1;
}
else
{
AfxMessageBox("位图文件保存成功!");
return 0;
}
}
void CCPEControl::ModifyParamRestore()
{
W32_Modify_Contrast( (BYTE)cpeParam[0] );
W32_Modify_Brightness( (BYTE)cpeParam[1] );
W32_Modify_Saturate( (BYTE)cpeParam[2] );
W32_Modify_Hue( (BYTE)cpeParam[3] );
if ( bRealGrab ) {
W32_CPE_Exit_Grab_VGA( (WORD)videoX, (WORD)videoY );
bRealGrab = FALSE;
wGrabWinX1 = cpeParam[4];
wGrabWinY1 = cpeParam[5];
wGrabWinX2 = wVGAWidth - 1 + cpeParam[4];
wGrabWinY2 = wVGAHeight - 1 + cpeParam[5];
W32_Set_Grab_Window(wGrabWinX1, wGrabWinY1, wGrabWinX2, wGrabWinY2);
W32_CPE_RealGrab_VGA((WORD)videoX, (WORD)videoY);
bRealGrab = TRUE;
bRealGrab = FALSE;
W32_CPE_Exit_Grab_VGA( (WORD)videoX, (WORD)videoY );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -