📄 gainps.cpp
字号:
Def_Stp_Para[i+8] =LOBYTE(m_GB3);
Def_Stp_Para[i+9] =LOBYTE(m_GR4); //CCD4
Def_Stp_Para[i+10] =LOBYTE(m_GG4);
Def_Stp_Para[i+11] =LOBYTE(m_GB4);
Def_Stp_Para[i+12] =LOBYTE(m_GR5); //CCD5
Def_Stp_Para[i+13] =LOBYTE(m_GG5);
Def_Stp_Para[i+14] =LOBYTE(m_GB5);
//增益范围
i=150+88;
Def_Stp_Para[i+0] =LOBYTE(m_GanR1); //CCD1
Def_Stp_Para[i+1] =LOBYTE(m_GanR2); //CCD2
Def_Stp_Para[i+2] =LOBYTE(m_GanR3); //CCD3
Def_Stp_Para[i+3] =LOBYTE(m_GanR4); //CCD4
Def_Stp_Para[i+4] =LOBYTE(m_GanR5); //CCD5
//将输入的参数变量值写入Def_Stp_Para缓冲区,以供校正下传用
i=150+120;
Def_Stp_Para[i+3] =LOBYTE(m_PSMax+100); //最大值
Def_Stp_Para[i+4] =LOBYTE(m_PSMin+100); //最小值
Def_Stp_Para[i+0] =LOBYTE(m_ZTPSR+100); //整体偏色系数
Def_Stp_Para[i+1] =LOBYTE(m_ZTPSG+100);
Def_Stp_Para[i+2] =LOBYTE(m_ZTPSB+100);
i=150+96;
Def_Stp_Para[i+0] =LOBYTE(m_PSR1+100); //CCD1
Def_Stp_Para[i+1] =LOBYTE(m_PSG1+100);
Def_Stp_Para[i+2] =LOBYTE(m_PSB1+100);
Def_Stp_Para[i+3] =LOBYTE(m_PSR2+100); //CCD2
Def_Stp_Para[i+4] =LOBYTE(m_PSG2+100);
Def_Stp_Para[i+5] =LOBYTE(m_PSB2+100);
Def_Stp_Para[i+6] =LOBYTE(m_PSR3+100); //CCD3
Def_Stp_Para[i+7] =LOBYTE(m_PSG3+100);
Def_Stp_Para[i+8] =LOBYTE(m_PSB3+100);
Def_Stp_Para[i+9] =LOBYTE(m_PSR4+100); //CCD4
Def_Stp_Para[i+10] =LOBYTE(m_PSG4+100);
Def_Stp_Para[i+11] =LOBYTE(m_PSB4+100);
Def_Stp_Para[i+12] =LOBYTE(m_PSR5+100); //CCD5
Def_Stp_Para[i+13] =LOBYTE(m_PSG5+100);
Def_Stp_Para[i+14] =LOBYTE(m_PSB5+100);
Step_Cali(Cu_Jin); //下传底层增益及偏色初始获取操作命令包并获取显示校正效果参数
//用从底层获取的校正参数值更新增益及偏色参数变量值
m_GainCode=(Def_Stp_Para[152]<<8) | (Def_Stp_Para[153]);
i=150+64; //静态增益
m_GR1=Def_Stp_Para[i+0];
m_GG1=Def_Stp_Para[i+1];
m_GB1=Def_Stp_Para[i+2];
m_GR2=Def_Stp_Para[i+3];
m_GG2=Def_Stp_Para[i+4];
m_GB2=Def_Stp_Para[i+5];
m_GR3=Def_Stp_Para[i+6];
m_GG3=Def_Stp_Para[i+7];
m_GB3=Def_Stp_Para[i+8];
m_GR4=Def_Stp_Para[i+9];
m_GG4=Def_Stp_Para[i+10];
m_GB4=Def_Stp_Para[i+11];
m_GR5=Def_Stp_Para[i+12];
m_GG5=Def_Stp_Para[i+13];
m_GB5=Def_Stp_Para[i+14];
//增益范围
i=150+88;
m_GanR1=Def_Stp_Para[i+0]; //CCD1
m_GanR2=Def_Stp_Para[i+1]; //CCD2
m_GanR3=Def_Stp_Para[i+2]; //CCD3
m_GanR4=Def_Stp_Para[i+3]; //CCD4
m_GanR5=Def_Stp_Para[i+4]; //CCD5
i=150+120;
m_ZTPSR=Def_Stp_Para[i+0]-100; //整体偏色系数
m_ZTPSG=Def_Stp_Para[i+1]-100;
m_ZTPSB=Def_Stp_Para[i+2]-100;
i=150+96; //偏色系数
m_PSR1=Def_Stp_Para[i+0]-100;
m_PSG1=Def_Stp_Para[i+1]-100;
m_PSB1=Def_Stp_Para[i+2]-100;
m_PSR2=Def_Stp_Para[i+3]-100;
m_PSG2=Def_Stp_Para[i+4]-100;
m_PSB2=Def_Stp_Para[i+5]-100;
m_PSR3=Def_Stp_Para[i+6]-100;
m_PSG3=Def_Stp_Para[i+7]-100;
m_PSB3=Def_Stp_Para[i+8]-100;
m_PSR4=Def_Stp_Para[i+9]-100;
m_PSG4=Def_Stp_Para[i+10]-100;
m_PSB4=Def_Stp_Para[i+11]-100;
m_PSR5=Def_Stp_Para[i+12]-100;
m_PSG5=Def_Stp_Para[i+13]-100;
m_PSB5=Def_Stp_Para[i+14]-100;
m_TSH ="请修改增益及偏色参数或选择相关操作.........";
UpdateData(false); //将本过程内的变量值变化导出本过程,更新显示
}
//////////////////////////////////////
//增益及偏色设置窗口——参数保存函数 //
//////////////////////////////////////
void CGainPS::OnSave()
{
UpdateData(true); //将本过程外的变量值变化导入本过程
int GangCode=GetPrivateProfileInt("CCD_Gang_Dly","GangCode",500,InitDir2);
int GainCMAX=GetPrivateProfileInt("CCD_Gain","GainCMAX",980,InitDir2);
//对输入的参数值进行有效性检查(不小于感光目标码且不大于980)
if (m_GainCode<GangCode) m_GainCode=GangCode;
else if (m_GainCode>GainCMAX) m_GainCode=GainCMAX;
RGB_Check(&m_GR1,&m_GG1,&m_GB1,0,0x1f); //对静态增益输入值R、G、B进行范围(0~0x1f)检查
RGB_Check(&m_GR2,&m_GG2,&m_GB2,0,0x1f); //对静态增益输入值R、G、B进行范围(0~0x1f)检查
RGB_Check(&m_GR3,&m_GG3,&m_GB3,0,0x1f); //对静态增益输入值R、G、B进行范围(0~0x1f)检查
RGB_Check(&m_GR4,&m_GG4,&m_GB4,0,0x1f); //对静态增益输入值R、G、B进行范围(0~0x1f)检查
RGB_Check(&m_GR5,&m_GG5,&m_GB5,0,0x1f); //对静态增益输入值R、G、B进行范围(0~0x1f)检查
R_Check(&m_GanR1,1,4); //对增益范围输入值进行范围(1~4)检查
R_Check(&m_GanR2,1,4);
R_Check(&m_GanR3,1,4);
R_Check(&m_GanR4,1,4);
R_Check(&m_GanR5,1,4);
//偏色系数在显示和输入时为原始值,在jiaose.ini文件中也为原始值。
//在Def_Stp_Para缓冲区中保存的及下传的为偏移之后的正数。
//偏色系数的最大值取决于增益目标码m_GainCode,即Max_Lim=(1-(1024÷m_GainCode))×100
RGB_Check(&m_PSR1,&m_PSG1,&m_PSB1,m_PSMin,m_PSMax); //对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
RGB_Check(&m_PSR2,&m_PSG2,&m_PSB2,m_PSMin,m_PSMax); //对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
RGB_Check(&m_PSR3,&m_PSG3,&m_PSB3,m_PSMin,m_PSMax); //对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
RGB_Check(&m_PSR4,&m_PSG4,&m_PSB4,m_PSMin,m_PSMax); //对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
RGB_Check(&m_PSR5,&m_PSG5,&m_PSB5,m_PSMin,m_PSMax); //对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
RGB_Check(&m_ZTPSR,&m_ZTPSG,&m_ZTPSB,m_PSMin,m_PSMax); //对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
m_TSH = _T("");
UpdateData(false); //将本过程内的变量值变化导出本过程,更新显示
if (IDNO == MessageBox("是否将当前增益及偏色参数保存到参数文件?","确认",MB_YESNO))
{
m_TSH = _T("请修改增益和偏色参数或选择相关操作.........");
UpdateData(false); //将本过程内的变量值变化导出本过程,更新显示
return;
}
char str[36];
//保存静态增益参数到参数文件
sprintf(str, "%d", m_GainCode);
WritePrivateProfileString("CCD_Gain","GainCode", str, InitDir2);
sprintf(str, "%d", m_GR1);
WritePrivateProfileString("CCD_Gain","R1", str, InitDir2);
sprintf(str, "%d", m_GG1);
WritePrivateProfileString("CCD_Gain","G1", str, InitDir2);
sprintf(str, "%d", m_GB1);
WritePrivateProfileString("CCD_Gain","B1", str, InitDir2);
sprintf(str, "%d", m_GR2);
WritePrivateProfileString("CCD_Gain","R2", str, InitDir2);
sprintf(str, "%d", m_GG2);
WritePrivateProfileString("CCD_Gain","G2", str, InitDir2);
sprintf(str, "%d", m_GB2);
WritePrivateProfileString("CCD_Gain","B2", str, InitDir2);
sprintf(str, "%d", m_GR3);
WritePrivateProfileString("CCD_Gain","R3", str, InitDir2);
sprintf(str, "%d", m_GG3);
WritePrivateProfileString("CCD_Gain","G3", str, InitDir2);
sprintf(str, "%d", m_GB3);
WritePrivateProfileString("CCD_Gain","B3", str, InitDir2);
sprintf(str, "%d", m_GR4);
WritePrivateProfileString("CCD_Gain","R4", str, InitDir2);
sprintf(str, "%d", m_GG4);
WritePrivateProfileString("CCD_Gain","G4", str, InitDir2);
sprintf(str, "%d", m_GB4);
WritePrivateProfileString("CCD_Gain","B4", str, InitDir2);
sprintf(str, "%d", m_GR5);
WritePrivateProfileString("CCD_Gain","R5", str, InitDir2);
sprintf(str, "%d", m_GG5);
WritePrivateProfileString("CCD_Gain","G5", str, InitDir2);
sprintf(str, "%d", m_GB5);
WritePrivateProfileString("CCD_Gain","B5", str, InitDir2);
//保存增益范围
sprintf(str, "%d", m_GanR1);
WritePrivateProfileString("CCD_Gan_Range","CCD1", str, InitDir2);
sprintf(str, "%d", m_GanR2);
WritePrivateProfileString("CCD_Gan_Range","CCD2", str, InitDir2);
sprintf(str, "%d", m_GanR3);
WritePrivateProfileString("CCD_Gan_Range","CCD3", str, InitDir2);
sprintf(str, "%d", m_GanR4);
WritePrivateProfileString("CCD_Gan_Range","CCD4", str, InitDir2);
sprintf(str, "%d", m_GanR5);
WritePrivateProfileString("CCD_Gan_Range","CCD5", str, InitDir2);
//保存偏色系数参数到参数文件
sprintf(str, "%d", m_PSMin); //最小值(偏移PS_Def后写入)
WritePrivateProfileString("CCD_PSAdj","Ps_Min", str, InitDir2);
sprintf(str, "%d", m_PSMax); //最大值(偏移PS_Def后写入)
WritePrivateProfileString("CCD_PSAdj","Ps_Max", str, InitDir2);
sprintf(str, "%d", m_ZTPSR); //整体
WritePrivateProfileString("CCD_PSAdj","ZTR", str, InitDir2);
sprintf(str, "%d", m_ZTPSG);
WritePrivateProfileString("CCD_PSAdj","ZTG", str, InitDir2);
sprintf(str, "%d", m_ZTPSB);
WritePrivateProfileString("CCD_PSAdj","ZTB", str, InitDir2);
sprintf(str, "%d", m_PSR1); //CDD1
WritePrivateProfileString("CCD_PSAdj","R1", str, InitDir2);
sprintf(str, "%d", m_PSG1);
WritePrivateProfileString("CCD_PSAdj","G1", str, InitDir2);
sprintf(str, "%d", m_PSB1);
WritePrivateProfileString("CCD_PSAdj","B1", str, InitDir2);
sprintf(str, "%d", m_PSR2);
WritePrivateProfileString("CCD_PSAdj","R2", str, InitDir2);
sprintf(str, "%d", m_PSG2);
WritePrivateProfileString("CCD_PSAdj","G2", str, InitDir2);
sprintf(str, "%d", m_PSB2);
WritePrivateProfileString("CCD_PSAdj","B2", str, InitDir2);
sprintf(str, "%d", m_PSR3);
WritePrivateProfileString("CCD_PSAdj","R3", str, InitDir2);
sprintf(str, "%d", m_PSG3);
WritePrivateProfileString("CCD_PSAdj","G3", str, InitDir2);
sprintf(str, "%d", m_PSB3);
WritePrivateProfileString("CCD_PSAdj","B3", str, InitDir2);
sprintf(str, "%d", m_PSR4);
WritePrivateProfileString("CCD_PSAdj","R4", str, InitDir2);
sprintf(str, "%d", m_PSG4);
WritePrivateProfileString("CCD_PSAdj","G4", str, InitDir2);
sprintf(str, "%d", m_PSB4);
WritePrivateProfileString("CCD_PSAdj","B4", str, InitDir2);
sprintf(str, "%d", m_PSR5);
WritePrivateProfileString("CCD_PSAdj","R5", str, InitDir2);
sprintf(str, "%d", m_PSG5);
WritePrivateProfileString("CCD_PSAdj","G5", str, InitDir2);
sprintf(str, "%d", m_PSB5);
WritePrivateProfileString("CCD_PSAdj","B5", str, InitDir2);
m_TSH = _T("请修改增益和偏色参数或选择相关操作.........");
UpdateData(false); //将本过程内的变量值变化导出本过程,更新显示
}
void CGainPS::OnCancel()
{
m_TSH = _T("");
UpdateData(false); //将本过程内的变量值变化导出本过程,更新显示
/*
if (IDNO == MessageBox("是否关闭静态增益与偏色校正窗口?","确认",MB_YESNO))
{
m_TSH = _T("请修改增益和偏色参数或选择相关操作.........");
UpdateData(false); //将本过程内的变量值变化导出本过程,更新显示
return;
}
*/
Stp_GanPs_INI(); //初始化Def_Stp_Para数组中的静态增益及偏色系数参数
CDialog::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -