⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ganguang.cpp

📁 又VC++实现的基于TWAIN的扫描仪图像输入处理软件
💻 CPP
字号:
// Ganguang.cpp : implementation file

#include "stdafx.h"
#include  <Windows.h>
#include "source10.h"
#include "Ganguang.h"
#include "Setscanner.h"

#include "stepcali.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern char InitDir2[100];
extern unsigned char Def_Stp_Para[300];	//下传缺省参数150B+分步校正参数150B存储缓冲区

///////////////////////////////
//感光时间设置窗口——消息映射//
////////////////////////////////
BEGIN_MESSAGE_MAP(CGanguang, CDialog)
	//{{AFX_MSG_MAP(CGanguang)
	ON_BN_CLICKED(IDC_CuJiao, OnCuJiao)
	ON_BN_CLICKED(IDC_JingJiao, OnJingJiao)
	ON_BN_CLICKED(IDC_Save, OnSave)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

//////////////////////////////////
//	CGanguang dialog			//
//感光时间设置窗口——窗口生成	//
//////////////////////////////////
CGanguang::CGanguang(CWnd* pParent /*=NULL*/)
	: CDialog(CGanguang::IDD, pParent)
{
	//{{AFX_DATA_INIT(CGanguang)
	Stp_GanG_INI();	//初始化Def_Stp_Para数组中的感光参数

	m_GangTime=255;				//感光时间基值
	
	m_GangCode=(Def_Stp_Para[150]<<8) | (Def_Stp_Para[151]);	//感光目标码

	m_GTADD1 = Def_Stp_Para[158+0];	//感光时间附加值
	m_GTADD2 = Def_Stp_Para[158+1];
	m_GTADD3 = Def_Stp_Para[158+2];
	m_GTADD4 = Def_Stp_Para[158+3];
	m_GTADD5 = Def_Stp_Para[158+4];
	
	m_GTR1=Def_Stp_Para[166+0];	//感光时间延迟值
	m_GTG1=Def_Stp_Para[166+1];
	m_GTB1=Def_Stp_Para[166+2];
	
	m_GTR2=Def_Stp_Para[166+3];
	m_GTG2=Def_Stp_Para[166+4];
	m_GTB2=Def_Stp_Para[166+5];
	
	m_GTR3=Def_Stp_Para[166+6];
	m_GTG3=Def_Stp_Para[166+7];
	m_GTB3=Def_Stp_Para[166+8];
	
	m_GTR4=Def_Stp_Para[166+9];
	m_GTG4=Def_Stp_Para[166+10];
	m_GTB4=Def_Stp_Para[166+11];

	m_GTR5=Def_Stp_Para[166+12];
	m_GTG5=Def_Stp_Para[166+13];
	m_GTB5=Def_Stp_Para[166+14];

	m_TSH = _T("请修改感光参数或选择相关操作.........");
	//}}AFX_DATA_INIT
    m_pParent = pParent;
	m_nID = CGanguang::IDD;

}

/* 与上相同
   m_GangTime=Def_Stp_Para[1]*256+Def_Stp_Para[2];
   m_GangCode=Def_Stp_Para[3]*256+Def_Stp_Para[4];
*/

//////////////////////////////////
//感光时间设置窗口——数据交换	//
//////////////////////////////////
void CGanguang::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CGanguang)
	DDX_Text(pDX, IDC_CCD1_R, m_GTR1);
	DDX_Text(pDX, IDC_CCD1_G, m_GTG1);
	DDX_Text(pDX, IDC_CCD1_B, m_GTB1);
	
	DDX_Text(pDX, IDC_CCD2_R, m_GTR2);
	DDX_Text(pDX, IDC_CCD2_G, m_GTG2);
	DDX_Text(pDX, IDC_CCD2_B, m_GTB2);

	DDX_Text(pDX, IDC_CCD3_R, m_GTR3);
	DDX_Text(pDX, IDC_CCD3_G, m_GTG3);
	DDX_Text(pDX, IDC_CCD3_B, m_GTB3);
	
	DDX_Text(pDX, IDC_CCD4_R, m_GTR4);
	DDX_Text(pDX, IDC_CCD4_G, m_GTG4);
	DDX_Text(pDX, IDC_CCD4_B, m_GTB4);

	DDX_Text(pDX, IDC_CCD5_R, m_GTR5);
	DDX_Text(pDX, IDC_CCD5_G, m_GTG5);
	DDX_Text(pDX, IDC_CCD5_B, m_GTB5);

	DDX_Text(pDX, IDC_GangTime, m_GangTime);
	DDX_Text(pDX, IDC_GangCode, m_GangCode);
	
	DDX_Text(pDX, IDC_CCD1_ADD, m_GTADD1);
	DDX_Text(pDX, IDC_CCD2_ADD, m_GTADD2);
	DDX_Text(pDX, IDC_CCD3_ADD, m_GTADD3);
	DDX_Text(pDX, IDC_CCD4_ADD, m_GTADD4);
	DDX_Text(pDX, IDC_CCD5_ADD, m_GTADD5);

	DDX_Text(pDX, IDC_GGStatusL, m_TSH);
	//}}AFX_DATA_MAP
}

//////////////////////////////////
//感光时间设置窗口——关闭窗口	//
//////////////////////////////////
void CGanguang::OnCancel() 
{
	m_TSH ="";
	UpdateData(false);  //将本过程内的变量值变化导出本过程
/*
	if (IDNO == MessageBox("是否关闭感光时间设置窗口?","确认",MB_YESNO))
		{
			m_TSH ="请修改感光参数或选择相关操作.........";
			UpdateData(false);  //将本过程内的变量值变化导出本过程
			return;
		}
*/
	Stp_GanG_INI();	//初始化Def_Stp_Para数组中的感光参数

	CDialog::OnCancel();
}

int CGanguang::DoModal() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::DoModal();
}
//////////////////////////////////////
//感光时间设置窗口——初值获取校正函数	//
//////////////////////////////////////
void CGanguang::OnCuJiao() 
{
	GangJiao(0);		//感光时间初始获取

} 

//////////////////////////////////////
//感光时间设置窗口——精校正函数	//
//////////////////////////////////////
void CGanguang::OnJingJiao() 
{
	GangJiao(1);		//感光时间精校正
}

//////////////////////////////////////
//		感光时间粗精校正函数		//
//////////////////////////////////////
void CGanguang::GangJiao(int Cu_Jin) 
{
    UpdateData(true); //将本过程外的变量值变化导入本过程

	//有效性检查
    int GangCMAX=GetPrivateProfileInt("CCD_Gang_Dly","GangCMAX",800,InitDir2);
	if(m_GangCode<200) m_GangCode=200;		//感光目标码
		else if(m_GangCode>GangCMAX) m_GangCode=GangCMAX;

	//附加感光时间设置值进行范围(0~255)检查
	R_Check(&m_GTADD1,0,255);
	R_Check(&m_GTADD2,0,255);	
	R_Check(&m_GTADD3,0,255);	
	R_Check(&m_GTADD4,0,255);	
	R_Check(&m_GTADD5,0,255);	
 
	//对感光时间设置值进行范围(1~254)检查
	RGB_Check(&m_GTR1,&m_GTG1,&m_GTB1,0,255);	
	RGB_Check(&m_GTR2,&m_GTG2,&m_GTB2,0,255);	
	RGB_Check(&m_GTR3,&m_GTG3,&m_GTB3,0,255);	
	RGB_Check(&m_GTR4,&m_GTG4,&m_GTB4,0,255);	
	RGB_Check(&m_GTR5,&m_GTG5,&m_GTB5,0,255);	

	m_TSH ="";
	UpdateData(false);  //将本过程内的变量值变化导出本过程

	if (Cu_Jin==0)	
	  if (IDNO == MessageBox("是否继续底层感光时间初始获取操作?","确认",MB_YESNO)) 
		{
			m_TSH ="请修改感光参数或选择相关操作.........";
			UpdateData(false);  //将本过程内的变量值变化导出本过程
			return;
		}
	  else
		{
			m_TSH ="扫描仪正在进行感光时间初值获取校正,等待接收校正结果参数.........";
			UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示
		}

	if (Cu_Jin==1)	
		if (IDNO == MessageBox("是否继续底层感光时间精确调整操作?","确认",MB_YESNO))
		{
			m_TSH ="请修改感光参数或选择相关操作.........";
			UpdateData(false);  //将本过程内的变量值变化导出本过程
			return;
		}
	  else
		{
			m_TSH ="扫描仪正在进行感光时间精校正,等待接收校正结果参数.........";
			UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示
		}

	//将输入的参数变量值写入Def_Stp_Para缓冲区,以供校正下传用
	//感光目标码
	Def_Stp_Para[150]	=HIBYTE(m_GangCode);	
	Def_Stp_Para[151]	=LOBYTE(m_GangCode);
	
	//附加感光时间
	int i=158;
	Def_Stp_Para[i+0]	=LOBYTE(m_GTADD1);		//CCD1
	Def_Stp_Para[i+1]	=LOBYTE(m_GTADD2);		//CCD2
	Def_Stp_Para[i+2]	=LOBYTE(m_GTADD3);		//CCD3
	Def_Stp_Para[i+3]	=LOBYTE(m_GTADD4);		//CCD4
	Def_Stp_Para[i+4]	=LOBYTE(m_GTADD5);		//CCD5

	//感光延迟时间
	i=166;
	Def_Stp_Para[i+0]	=LOBYTE(m_GTR1);		//CCD1
	Def_Stp_Para[i+1]	=LOBYTE(m_GTG1);
	Def_Stp_Para[i+2]	=LOBYTE(m_GTB1);
	
	Def_Stp_Para[i+3]	=LOBYTE(m_GTR2);		//CCD2
	Def_Stp_Para[i+4]	=LOBYTE(m_GTG2);
	Def_Stp_Para[i+5]	=LOBYTE(m_GTB2);	
	
	Def_Stp_Para[i+6]	=LOBYTE(m_GTR3);		//CCD3
	Def_Stp_Para[i+7]	=LOBYTE(m_GTG3);
	Def_Stp_Para[i+8]	=LOBYTE(m_GTB3);
	
	Def_Stp_Para[i+9]	=LOBYTE(m_GTR4);		//CCD4
	Def_Stp_Para[i+10]	=LOBYTE(m_GTG4);
	Def_Stp_Para[i+11]	=LOBYTE(m_GTB4);
	
	Def_Stp_Para[i+12]	=LOBYTE(m_GTR5);		//CCD5
	Def_Stp_Para[i+13]	=LOBYTE(m_GTG5);
	Def_Stp_Para[i+14]	=LOBYTE(m_GTB5);

	Step_Cali(Cu_Jin);				//下传底层感光时间初始获取操作命令包并获取显示校正效果参数

	//用从底层获取的校正参数值更新感光校正参数变量值

	//感光目标码
	m_GangCode=(Def_Stp_Para[150]<<8) | (Def_Stp_Para[151]);

	//附加感光时间
	i=158;
	m_GTADD1=Def_Stp_Para[i+0];		//CCD1
	m_GTADD2=Def_Stp_Para[i+1];		//CCD2
	m_GTADD3=Def_Stp_Para[i+2];		//CCD3
	m_GTADD4=Def_Stp_Para[i+3];		//CCD4
	m_GTADD5=Def_Stp_Para[i+4];		//CCD5


	//感光延迟时间
	i=166;
	m_GTR1=Def_Stp_Para[i+0];
	m_GTG1=Def_Stp_Para[i+1];
	m_GTB1=Def_Stp_Para[i+2];
   
	m_GTR2=Def_Stp_Para[i+3];
	m_GTG2=Def_Stp_Para[i+4];
	m_GTB2=Def_Stp_Para[i+5];
   
	m_GTR3=Def_Stp_Para[i+6];
	m_GTG3=Def_Stp_Para[i+7];
	m_GTB3=Def_Stp_Para[i+8];
   
	m_GTR4=Def_Stp_Para[i+9];
	m_GTG4=Def_Stp_Para[i+10];
	m_GTB4=Def_Stp_Para[i+11];
   
	m_GTR5=Def_Stp_Para[i+12];
	m_GTG5=Def_Stp_Para[i+13];
	m_GTB5=Def_Stp_Para[i+14];
   
	m_TSH ="请修改感光参数或选择相关操作.........";

	UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示

}

//////////////////////////////////////
//感光时间设置窗口——参数保存函数	//
//////////////////////////////////////
void CGanguang::OnSave() 
{
    UpdateData(true); //将本过程外的变量值变化导入本过程

	//有效性检查
    int GangCMAX=GetPrivateProfileInt("CCD_Gang_Dly","GangCMAX",800,InitDir2);
	if(m_GangCode<200) m_GangCode=200;		//感光目标码
		else if(m_GangCode>GangCMAX) m_GangCode=GangCMAX;

	//附加感光时间设置值进行范围(0~255)检查
	R_Check(&m_GTADD1,0,255);
	R_Check(&m_GTADD2,0,255);	
	R_Check(&m_GTADD3,0,255);	
	R_Check(&m_GTADD4,0,255);	
	R_Check(&m_GTADD5,0,255);	

	//对感光时间设置值进行范围(1~254)检查
	RGB_Check(&m_GTR1,&m_GTG1,&m_GTB1,0,255);	
	RGB_Check(&m_GTR2,&m_GTG2,&m_GTB2,0,255);	
	RGB_Check(&m_GTR3,&m_GTG3,&m_GTB3,0,255);	
	RGB_Check(&m_GTR4,&m_GTG4,&m_GTB4,0,255);	
	RGB_Check(&m_GTR5,&m_GTG5,&m_GTB5,0,255);	

	m_TSH ="";

	UpdateData(false);  //将本过程内的变量值变化导出本过程
	
	if (IDNO == MessageBox("是否将当前感光时间参数保存到参数文件?","确认",MB_YESNO))
	{
		m_TSH ="请修改感光参数或选择相关操作.........";
		UpdateData(false);  //将本过程内的变量值变化导出本过程
		return;
	}
	char str[36];

	//保存感光时间设置参数到参数文件
	sprintf(str, "%d", m_GangCode);
	WritePrivateProfileString("CCD_Gang_Dly","GangCode", str, InitDir2);	//感光目标码

	//附加感光时间
	sprintf(str, "%d", m_GTADD1);
	WritePrivateProfileString("CCD_Gang_Add","CCD1", str, InitDir2);	//CCD1
	sprintf(str, "%d", m_GTADD2);
	WritePrivateProfileString("CCD_Gang_Add","CCD2", str, InitDir2);	//CCD2
	sprintf(str, "%d", m_GTADD3);
	WritePrivateProfileString("CCD_Gang_Add","CCD3", str, InitDir2);	//CCD3
	sprintf(str, "%d", m_GTADD4);
	WritePrivateProfileString("CCD_Gang_Add","CCD4", str, InitDir2);	//CCD4
	sprintf(str, "%d", m_GTADD5);
	WritePrivateProfileString("CCD_Gang_Add","CCD5", str, InitDir2);	//CCD5

	//感光延迟时间
	sprintf(str, "%d", m_GTR1);
	WritePrivateProfileString("CCD_Gang_Dly","R1", str, InitDir2); 
	sprintf(str, "%d", m_GTG1);
	WritePrivateProfileString("CCD_Gang_Dly","G1", str, InitDir2); 
	sprintf(str, "%d", m_GTB1);
	WritePrivateProfileString("CCD_Gang_Dly","B1", str, InitDir2); 

	sprintf(str, "%d", m_GTR2);
	WritePrivateProfileString("CCD_Gang_Dly","R2", str, InitDir2); 
	sprintf(str, "%d", m_GTG2);
	WritePrivateProfileString("CCD_Gang_Dly","G2", str, InitDir2); 
	sprintf(str, "%d", m_GTB2);
	WritePrivateProfileString("CCD_Gang_Dly","B2", str, InitDir2); 

	sprintf(str, "%d", m_GTR3);
	WritePrivateProfileString("CCD_Gang_Dly","R3", str, InitDir2); 
	sprintf(str, "%d", m_GTG3);
	WritePrivateProfileString("CCD_Gang_Dly","G3", str, InitDir2); 
	sprintf(str, "%d", m_GTB3);
	WritePrivateProfileString("CCD_Gang_Dly","B3", str, InitDir2); 

	sprintf(str, "%d", m_GTR4);
	WritePrivateProfileString("CCD_Gang_Dly","R4", str, InitDir2); 
	sprintf(str, "%d", m_GTG4);
	WritePrivateProfileString("CCD_Gang_Dly","G4", str, InitDir2); 
	sprintf(str, "%d", m_GTB4);
	WritePrivateProfileString("CCD_Gang_Dly","B4", str, InitDir2); 

	sprintf(str, "%d", m_GTR5);
	WritePrivateProfileString("CCD_Gang_Dly","R5", str, InitDir2); 
	sprintf(str, "%d", m_GTG5);
	WritePrivateProfileString("CCD_Gang_Dly","G5", str, InitDir2); 
	sprintf(str, "%d", m_GTB5);
	WritePrivateProfileString("CCD_Gang_Dly","B5", str, InitDir2); 

	m_TSH ="请修改感光参数或选择相关操作.........";
	UpdateData(false);  //将本过程内的变量值变化导出本过程

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -