?? stepcali.cpp
字號(hào):
Def_Stp_Para[i+1] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Motor_Move","Max_Vec",2500,InitDir2);
Def_Stp_Para[i+2] =HIBYTE(Tmp); //最高速度
Def_Stp_Para[i+3] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Motor_Move","Max_Acc",100,InitDir2);
Def_Stp_Para[i+4] =HIBYTE(Tmp); //加速度最大值
Def_Stp_Para[i+5] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Motor_Move","Max_Acc_Stp",500,InitDir2);
Def_Stp_Para[i+6] =HIBYTE(Tmp); //最大加速步數(shù)
Def_Stp_Para[i+7] =LOBYTE(Tmp);
i=130; //掃描
Tmp=GetPrivateProfileInt("Motor_Scan","Start_Vec",30000,InitDir2);
Def_Stp_Para[i+0] =HIBYTE(Tmp); //啟動(dòng)速度
Def_Stp_Para[i+1] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Motor_Scan","Max_Vec",20000,InitDir2);
Def_Stp_Para[i+2] =HIBYTE(Tmp); //最高速度
Def_Stp_Para[i+3] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Motor_Scan","Max_Acc",100,InitDir2);
Def_Stp_Para[i+4] =HIBYTE(Tmp); //加速度最大值
Def_Stp_Para[i+5] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Motor_Scan","Max_Acc_Stp",100,InitDir2);
Def_Stp_Para[i+6] =HIBYTE(Tmp); //最大加速步數(shù)
Def_Stp_Para[i+7] =LOBYTE(Tmp);
//***臺(tái)面坐標(biāo)缺省參數(shù)mm***
i=138;
Tmp=GetPrivateProfileInt("Plant_Para","Max_X_Wid",841,InitDir2);
Def_Stp_Para[i+0] =HIBYTE(Tmp); //X方向最大寬度
Def_Stp_Para[i+1] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Plant_Para","Max_Y_Len",841,InitDir2);
Def_Stp_Para[i+2] =HIBYTE(Tmp); //Y方向最大長(zhǎng)度
Def_Stp_Para[i+3] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Plant_Para","Zero_Pos",10,InitDir2);
Def_Stp_Para[i+4] =HIBYTE(Tmp); //掃描零點(diǎn)位置
Def_Stp_Para[i+5] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Plant_Para","White_Pos",0,InitDir2);
Def_Stp_Para[i+6] =HIBYTE(Tmp); //校正白線(xiàn)位置
Def_Stp_Para[i+7] =LOBYTE(Tmp);
Tmp=GetPrivateProfileInt("Plant_Para","Black_Pos",0,InitDir2);
Def_Stp_Para[i+8] =HIBYTE(Tmp); //校正黑線(xiàn)位置
Def_Stp_Para[i+9] =LOBYTE(Tmp);
//***DSP軟件延時(shí)周期數(shù)缺省參數(shù)***
Tmp=GetPrivateProfileInt("DSP_Para","Wait_Per",2,InitDir2);
Def_Stp_Para[148] =LOBYTE(Tmp);
}
//---------------- 2004.2.23 初始化感光系數(shù) ------------//
// 讀jiaose.ini文件,初始化Def_Stp_Para數(shù)組中的感光參數(shù) //
//------------------------------------------------------------------//
void Stp_GanG_INI()
{
int i,Tmp,Max;
//感光目標(biāo)碼
i=150;
Tmp=GetPrivateProfileInt("CCD_Gang_Dly","GangCode",500,InitDir2);
Max=GetPrivateProfileInt("CCD_Gang_Dly","GangCMAX",800,InitDir2);
if(Tmp<200) Tmp=200; //有效性檢查
else if(Tmp>Max) Tmp=Max;
Def_Stp_Para[i+0] =HIBYTE(Tmp);
Def_Stp_Para[i+1] =LOBYTE(Tmp);
//附加感光時(shí)間參數(shù)
i=150+8;
int j;
char TmpStr[5];
strcpy(TmpStr,"CCD1");
for (j=1;j<=8;j++)
{
TmpStr[3]=LOBYTE(0x30+j);
Tmp=GetPrivateProfileInt("CCD_Gang_Add",TmpStr,100,InitDir2);
R_Check(&Tmp,0,255); //附加感光時(shí)間設(shè)置值進(jìn)行范圍(0~255)檢查
Def_Stp_Para[i] =LOBYTE(Tmp);
i=i+1;
}
//感光延遲時(shí)間參數(shù)
int R,G,B;
char RStr[3],GStr[3],BStr[3];
i=150+16;
strcpy(RStr,"R1");
strcpy(GStr,"G1");
strcpy(BStr,"B1");
for (j=1;j<=8;j++)
{
RStr[1]=LOBYTE(0x30+j);
GStr[1]=LOBYTE(0x30+j);
BStr[1]=LOBYTE(0x30+j);
R=GetPrivateProfileInt("CCD_Gang_Dly",RStr,10,InitDir2);
G=GetPrivateProfileInt("CCD_Gang_Dly",GStr,10,InitDir2);
B=GetPrivateProfileInt("CCD_Gang_Dly",BStr,10,InitDir2);
RGB_Check(&R,&G,&B,0,255); //對(duì)感光時(shí)間R、G、B進(jìn)行范圍(1~254)檢查
Def_Stp_Para[i+0] =LOBYTE(R);
Def_Stp_Para[i+1] =LOBYTE(G);
Def_Stp_Para[i+2] =LOBYTE(B);
i=i+3;
}
}
//---------------- 2004.2.23 初始化靜態(tài)偏移系數(shù) ------------//
// 讀jiaose.ini文件,初始化Def_Stp_Para數(shù)組中的靜態(tài)偏移參數(shù) //
//------------------------------------------------------------------//
void Stp_Offset_INI()
{
// ***** 靜態(tài)偏移下傳參數(shù) (設(shè)置值為-31~+31,下傳值為0~+63) *****
int R,G,B;
int R1,G1,B1;
char RStr[3],GStr[3],BStr[3];
int i=150+40;
strcpy(RStr,"R1");
strcpy(GStr,"G1");
strcpy(BStr,"B1");
for (int j=1;j<=8;j++)
{
RStr[1]=LOBYTE(0x30+j);
GStr[1]=LOBYTE(0x30+j);
BStr[1]=LOBYTE(0x30+j);
R=GetPrivateProfileInt("CCD_Offset",RStr,0,InitDir2);
G=GetPrivateProfileInt("CCD_Offset",GStr,0,InitDir2);
B=GetPrivateProfileInt("CCD_Offset",BStr,0,InitDir2);
RGB_Chk_ChgP(R,G,B,-31,31,32,&R1,&G1,&B1); //對(duì)靜態(tài)偏移R、G、B進(jìn)行范圍(-31~+31)檢查,設(shè)置值為負(fù)值時(shí),將-1~-31轉(zhuǎn)換成33~63
Def_Stp_Para[i+0] =LOBYTE(R1); //CCD1
Def_Stp_Para[i+1] =LOBYTE(G1);
Def_Stp_Para[i+2] =LOBYTE(B1);
i=i+3;
}
}
//---------------- 2004.2.23 初始化靜態(tài)增益及偏色系數(shù) ---------------------//
// 讀jiaose.ini文件,初始化Def_Stp_Para數(shù)組中的靜態(tài)增益及偏色系數(shù)參數(shù) //
//---------------------------------------------------------------------------//
void Stp_GanPs_INI()
{
//增益目標(biāo)碼
int GangCode=GetPrivateProfileInt("CCD_Gang_Dly","GangCode",200,InitDir2);
int GainCode=GetPrivateProfileInt("CCD_Gain","GainCode",980,InitDir2);
int GainCMAX=GetPrivateProfileInt("CCD_Gain","GainCMAX",1000,InitDir2);
if (GainCode<GangCode) GainCode=GangCode; //增益目標(biāo)碼不能小于感光目標(biāo)碼
else if (GainCode>GainCMAX) GainCode=GainCMAX;
Def_Stp_Para[152] =HIBYTE(GainCode); //增益目標(biāo)碼
Def_Stp_Para[153] =LOBYTE(GainCode);
int i,j,Tmp;
//增益系數(shù)
int R,G,B;
char RStr[3],GStr[3],BStr[3];
i=150+64;
strcpy(RStr,"R1");
strcpy(GStr,"G1");
strcpy(BStr,"B1");
for (j=1;j<=8;j++)
{
RStr[1]=LOBYTE(0x30+j);
GStr[1]=LOBYTE(0x30+j);
BStr[1]=LOBYTE(0x30+j);
R=GetPrivateProfileInt("CCD_Gain",RStr,0,InitDir2);
G=GetPrivateProfileInt("CCD_Gain",GStr,0,InitDir2);
B=GetPrivateProfileInt("CCD_Gain",BStr,0,InitDir2);
RGB_Check(&R,&G,&B,0,0x1f); //對(duì)靜態(tài)增益R、G、B進(jìn)行范圍(0~0x1f)檢查
Def_Stp_Para[i+0] =LOBYTE(R);
Def_Stp_Para[i+1] =LOBYTE(G);
Def_Stp_Para[i+2] =LOBYTE(B);
i=i+3;
}
//增益范圍系數(shù)
i=150+88; //起始位置=150+88,每頭一字節(jié)
char TmpStr[5];
strcpy(TmpStr,"CCD1");
for (j=1;j<=5;j++)
{
TmpStr[3]=LOBYTE(0x30+j);
Tmp=GetPrivateProfileInt("CCD_Gan_Range",TmpStr,3,InitDir2);
Def_Stp_Para[i] =LOBYTE(Tmp);
i=i+1;
}
/* ***** 偏色調(diào)整系數(shù)下傳參數(shù) *****
1. 作用:對(duì)增益目標(biāo)碼進(jìn)行比例增加(系數(shù)為正)或比例減小(系數(shù)為負(fù))
2. 最大值:取決于增益目標(biāo)碼GainCode,即Max_Lim=((1024÷GainCode)-1)×100
3. 最小值:取決于感光目標(biāo)碼GangCode,即Min_Lim=((GangCode÷GainCode)-1)×100
4. 最大調(diào)整范圍:感光目標(biāo)碼GangCode~最大目標(biāo)碼1024
5. 系數(shù)的最大范圍:Min_Lim~Max_Lim
6. 在顯示和輸入時(shí)為原始值,在jiaose.ini文件中也為原始值(正負(fù))。
7. 在Def_Stp_Para緩沖區(qū)中保存的及下傳的為加100偏移之后的正數(shù)。
*/
int PS_Min,PS_Max;
PS_Max=(int)(100*((1024.0/GainCode)-1.0)); //偏色系數(shù)的最大值
PS_Min=(int)(100*(((1.0*GangCode)/(1.0*GainCode))-1.0)); //偏色系數(shù)的最小值(負(fù)值)
if (PS_Max >155) PS_Max = 155;
if (PS_Min <-99) PS_Min = -99;
//將計(jì)算的偏色系數(shù)上下限值寫(xiě)入配置文件
char str[36];
sprintf(str, "%d", PS_Min); //最小值
WritePrivateProfileString("CCD_PSAdj","Ps_Min", str, InitDir2);
sprintf(str, "%d", PS_Max); //最大值
WritePrivateProfileString("CCD_PSAdj","Ps_Max", str, InitDir2);
i=150+120;
Def_Stp_Para[i+3] =LOBYTE(PS_Max+100); //下傳最大值
Def_Stp_Para[i+4] =LOBYTE(PS_Min+100); //下傳最小值
//整體偏色系數(shù)
R=GetPrivateProfileInt("CCD_PSAdj","ZTR",0,InitDir2);
G=GetPrivateProfileInt("CCD_PSAdj","ZTG",0,InitDir2);
B=GetPrivateProfileInt("CCD_PSAdj","ZTB",0,InitDir2);
RGB_Check(&R,&G,&B,PS_Min,PS_Max); //對(duì)偏色系數(shù)R、G、B進(jìn)行范圍檢查
Def_Stp_Para[i+0] =LOBYTE(R+100); //R通道整體
Def_Stp_Para[i+1] =LOBYTE(G+100); //G通道整體
Def_Stp_Para[i+2] =LOBYTE(B+100); //B通道整體
//單頭偏色系數(shù)
i=150+96;
strcpy(RStr,"R1");
strcpy(GStr,"G1");
strcpy(BStr,"B1");
for (j=1;j<=8;j++)
{
RStr[1]=LOBYTE(0x30+j);
GStr[1]=LOBYTE(0x30+j);
BStr[1]=LOBYTE(0x30+j);
R=GetPrivateProfileInt("CCD_PSAdj",RStr,0,InitDir2);
G=GetPrivateProfileInt("CCD_PSAdj",GStr,0,InitDir2);
B=GetPrivateProfileInt("CCD_PSAdj",BStr,0,InitDir2);
RGB_Check(&R,&G,&B,PS_Min,PS_Max); //對(duì)偏色系數(shù)R、G、B進(jìn)行范圍檢查
Def_Stp_Para[i+0] =LOBYTE(R+100);
Def_Stp_Para[i+1] =LOBYTE(G+100);
Def_Stp_Para[i+2] =LOBYTE(B+100);
i=i+3;
}
}
//----------------------------- 2004.3.24 ----------------------------------//
// 讀jiaose.ini文件,初始化Def_Stp_Para數(shù)組中的: //
// 1. 分步校正控制參數(shù) //
// 2. 動(dòng)態(tài)增益均值濾波控制參數(shù) //
//--------------------------------------------------------------------------//
void Stp_Cai_CtrP_INI()
{
int i,Tmp;
//***分步校正控制參數(shù)***
i=150+125;
Tmp=GetPrivateProfileInt("Cali_Ctr_Para","Max_F_Num",10,InitDir2);
Def_Stp_Para[i+0] =LOBYTE(Tmp); //最大值查找的次數(shù)
Tmp=GetPrivateProfileInt("Cali_Ctr_Para","Min_F_Num",10,InitDir2);
Def_Stp_Para[i+1] =LOBYTE(Tmp); //最小值查找的次數(shù)
Tmp=GetPrivateProfileInt("Cali_Ctr_Para","GangG_Err",32,InitDir2);
Def_Stp_Para[i+2] =LOBYTE(Tmp); //感光門(mén)限
Tmp=GetPrivateProfileInt("Cali_Ctr_Para","SOff_Err",6,InitDir2);
Def_Stp_Para[i+3] =LOBYTE(Tmp); //靜態(tài)偏移門(mén)限
Tmp=GetPrivateProfileInt("Cali_Ctr_Para","SGain_err",16,InitDir2);
Def_Stp_Para[i+4] =LOBYTE(Tmp); //靜態(tài)增益門(mén)限
Tmp=GetPrivateProfileInt("Cali_Ctr_Para","PGain_err",12,InitDir2);
Def_Stp_Para[i+5] =LOBYTE(Tmp); //動(dòng)態(tài)增益門(mén)限
//***動(dòng)態(tài)增益均值濾波控制參數(shù)***
i=150+134;
Tmp=GetPrivateProfileInt("PGain_Aver_Para","Aver_P_Ena",0,InitDir2);
Def_Stp_Para[i+0] =LOBYTE(Tmp); //均值濾波處理允許=0xA5-->允許
Tmp=GetPrivateProfileInt("PGain_Aver_Para","Aver_Num",8,InitDir2);
Def_Stp_Para[i+1] =LOBYTE(Tmp); //均值范圍:N
Tmp=GetPrivateProfileInt("PGain_Aver_Para","Aver_Num_MI",3,InitDir2);
Def_Stp_Para[i+2] =LOBYTE(Tmp); //N值的2的冪次方 以方便求平均值
Tmp=GetPrivateProfileInt("PGain_Aver_Para","Aver_Err",32,InitDir2);
Def_Stp_Para[i+3] =LOBYTE(Tmp); //象點(diǎn)值偏差r(下傳值 折半匹配時(shí),動(dòng)態(tài)增益效果值與各通道目標(biāo)碼的偏差范圍)
}
//----------------2004.2.23---------------------//
// 對(duì)輸入?yún)?shù)R進(jìn)行范圍(Min~Max)檢查 //
//----------------------------------------------//
void R_Check(int *R,int Min,int Max)
{
if(*R<Min) *R=Min;
else if(*R>Max) *R=Max;
}
//----------------2004.2.23---------------------//
// 對(duì)輸入?yún)?shù)R、G、B進(jìn)行范圍(Min~Max)檢查 //
//----------------------------------------------//
void RGB_Check(int *R,int *G,int *B,int Min,int Max)
{
if(*R<Min) *R=Min;
else if(*R>Max) *R=Max;
if(*G<Min) *G=Min;
else if(*G>Max) *G=Max;
if(*B<Min) *B=Min;
else if(*B>Max) *B=Max;
}
//----------------2004.2.23 供下傳--------------//
// 對(duì)輸入?yún)?shù)R、G、B進(jìn)行范圍(Min~Max)檢查 //
// 若值為負(fù),則將其轉(zhuǎn)換成正數(shù):R=Base-R //
// R、G、B-->R1、G1、B1 //
//----------------------------------------------//
void RGB_Chk_ChgP(int R,int G,int B,int Min,int Max,int Base,int *R1,int *G1,int *B1)
{
*R1=R;
*G1=G;
*B1=B;
if(*R1<Min) *R1=Min; //設(shè)置值的范圍檢查
else if(*R1>Max) *R1=Max;
if(*G1<Min) *G1=Min;
else if(*G1>Max) *G1=Max;
if(*B1<Min) *B1=Min;
else if(*B1>Max) *B1=Max;
if (*R1<0) *R1=Base-*R1; //設(shè)置值為負(fù)值時(shí),將-1~-31轉(zhuǎn)換成33~63
if (*G1<0) *G1=Base-*G1;
if (*B1<0) *B1=Base-*B1;
}
//----------------2004.2.23 供窗口顯示----------//
// 對(duì)上傳參數(shù)R、G、B進(jìn)行范圍轉(zhuǎn)換 //
// 若R>=Base,則將其轉(zhuǎn)換成:R=Base-R //
//----------------------------------------------//
void RGB_Chk_ChgN(int *R,int *G,int *B,int Base)
{
if (*R>=Base) *R=Base-*R; //將32~63轉(zhuǎn)換成0~-31,供窗口顯示
if (*G>=Base) *G=Base-*G;
if (*B>=Base) *B=Base-*B;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -