UCHAR Scan_Photo(unsigned Channel_Scan)
{
//wuhz 202/05/20
static unsigned int Scan_photoloc_i;
UCHAR Loc_line;
UCHAR Loc_Scan_Count;
UCHAR Loc_ScanFlag;
static unsigned int Data_Loc_o;//12个孔
static unsigned int Data_Loc_j;
static unsigned int Data_Loc_l;
static unsigned int Data_Loc_n;
static unsigned int Data_Loc_m;//每个孔读取11个数据
static unsigned int Data_loc_Col;
static unsigned int Data_Loc_p;
static unsigned int Data_Loc_q;//通道0-5
static unsigned int photo_sample_value;
static unsigned int Sample_value;
static unsigned int position;
static photo_sample_stru *pmt_Data_Load[6];
static unsigned int KValue;
unsigned int line;
UCHAR Data_loc_i;
//UCHAR Now_Channel;
UCHAR Re_Scan;
//wuhz 202/05/20
Loc_line = 0x01;
Loc_Scan_Count = 0;
Loc_ScanFlag = 0xff;
Rewrite_Channel_plus(0);
Re_Scan = 0; // 不扫描
for (Data_Loc_o=0;Data_Loc_o<6;Data_Loc_o++) // 清空荧光数据缓冲区 王勇 10-03-04
{
pmt_Data_Load[Data_Loc_o] = photo_data_point[Data_Loc_o];
//pmt_first = photo_data_point[0];
for (Data_Loc_p=0;Data_Loc_p<1056;Data_Loc_p++) //96孔*11数据=1056
{
pmt_Data_Load[Data_Loc_o]->photo_ad_data[Data_Loc_p][0] = 0;
pmt_Data_Load[Data_Loc_o]->photo_ad_data[Data_Loc_p][1] = 0;
}
Photo_Max_Value[Data_Loc_o] = 0;
}
photo_sample_time = 0;
Photo_Scan_Enable();
//*PIO_CODR = PHOTO_EN;
memset(Photo_Sample_Read_Point,0,sizeof(photo_sample_data_stru));
start_flag=1;//wuhz
//修改扫描方式 wuhz
for (Scan_photoloc_i=0;Scan_photoloc_i<9;Scan_photoloc_i++) // 扫描9次
{
//if (Loc_ScanFlag & Loc_line) //扫描行判断
{
Photo_Sample_Line = Scan_photoloc_i;
photo_sample_time = 0;
Filter_Move(Scan_photoloc_i+1); // 根据行的不同,调整位置
tx_thread_sleep(145);
FilterMotorStatusRead();
while(FilterMotorStatus & 0x08)
{
tx_thread_sleep(1);
FilterMotorStatusRead();
}
tx_thread_sleep(5);
Sample_Reset();
if (Loc_Scan_Count%2==0) // 偶数排扫描,向右运动
{
*Scan_Motor_WRCommand = Liner_Nes_Zero_Return;
Write_Cycle_Wait();
*Scan_Motor_WRCommand = Start_Motor_IntDisable_HighSpeed;
Write_Cycle_Wait();
}
else // 奇数排扫描,向左运动
{
*Scan_Motor_WRCommand = Liner_Pos_Zero_Return;
Write_Cycle_Wait();
*Scan_Motor_WRCommand = Start_Motor_IntDisable_HighSpeed;
Write_Cycle_Wait();
}
tx_thread_sleep(550);
ScanMotorStatusRead(); //扫描马达运行没有停止
while(ScanMotorStatus & 0x08)
{
tx_thread_sleep(1);
ScanMotorStatusRead();
}
tx_thread_sleep(5);
//photo_sample_time+=2;
Loc_Scan_Count ++;
} // 结束判断 if (Loc_ScanFlag & Loc_line)
Loc_line = Loc_line*2;
}
start_flag=0;//wuhz 2021/06/16
*PIO_CODR = PHOTO_EN;
Sample_Reset();
if (Loc_Scan_Count%2!=0) // 电机处于右边位置
{
*Scan_Motor_WRCommand = Liner_Pos_Zero_Return;
Write_Cycle_Wait();
*Scan_Motor_WRCommand = Start_Motor_IntDisable_HighSpeed;
Write_Cycle_Wait();
}
ScanMotorStatusRead(); // 2016/04/16 读电机状态
while(ScanMotorStatus & 0x08)
{
tx_thread_sleep(1);
ScanMotorStatusRead();
}
*PIO_SODR = PHOTO_EN;
tx_thread_sleep(100);
Photo_Scan_Disable();
//Scan_MotorPositionRst();
//2020/12/21
for (Data_Loc_q=0;Data_Loc_q<6;Data_Loc_q++)// 6通道荧光
{
for (line=0;line<8;line++)//8行
{
for (Data_Loc_o=0;Data_Loc_o<12;Data_Loc_o++)// 获得每行12孔的数据
{
Data_Loc_j = (line*12+Data_Loc_o)*11;
if (ChannelFlag[Data_Loc_q] ==0)//第一排
{
if (line%2==0)//偶数行数据定位
Data_Loc_n = Data_Loc_o*COL_DISTANCE_STEP+Scan_Left[Data_Loc_q];
else //奇数行数据定位
Data_Loc_n = (11-Data_Loc_o)*COL_DISTANCE_STEP+Scan_Right[Data_Loc_q];
}
else
{
if (line%2!=0)
Data_Loc_n = Data_Loc_o*COL_DISTANCE_STEP+Scan_Left[Data_Loc_q];
else
Data_Loc_n = (11-Data_Loc_o)*COL_DISTANCE_STEP+Scan_Right[Data_Loc_q];
}
// 2019/12/29 寻找最大值位置
/*photo_sample_value = 0;
if (Data_Loc_n>=25)
{
for (Data_Loc_m = Data_Loc_n-20;Data_Loc_m<Data_Loc_n+21;Data_Loc_m++)
{
Sample_value = Photo_Sample_Read_Point->ad[Data_Loc_q][line][Data_Loc_m];
if (Sample_value>32767)
Sample_value = 0;
if (photo_sample_value<Sample_value)
{
photo_sample_value = Photo_Sample_Read_Point->ad[Data_Loc_q][line][Data_Loc_m];
position = Data_Loc_m;
}
}
Data_Loc_n = position-5;
}*/
photo_sample_value = 0;
#if 0
for (Data_Loc_m=0;Data_Loc_m<11;Data_Loc_m++)//每个孔读取11个数据
{
Data_Loc_l = Data_Loc_n+Data_Loc_m;
if(Data_Loc_q==0 ||Data_Loc_q==1 || Data_Loc_q==2 ||Data_Loc_q==3 ) //第一排 CH2=HEX CH4=CY5 CH1=FAM CH3=ROX
Sample_value = Photo_Sample_Read_Point->ad[Data_Loc_q][line][Data_Loc_l];
if(Data_Loc_q==4|| Data_Loc_q==5) //第二排 X X CH6=CY3 CH5=CY.
Sample_value = Photo_Sample_Read_Point->ad[Data_Loc_q][line+1][Data_Loc_l];
if (Sample_value>32767)
Sample_value = 4;
Sample_value = Sample_value/4;
photo_sample_value += Sample_value;
if (Photo_Max_Value[Data_Loc_q]<Sample_value) // 得到最大值
{
Photo_Max_Value[Data_Loc_q] = Sample_value;
}
} // 结束循环 for (Data_Loc_m=0;Data_Loc_m<11;Data_Loc_m++)
photo_sample_value/=11;
#else
//左右各1mm取最大值
for (Data_Loc_m=0;Data_Loc_m<22;Data_Loc_m++)//每个孔读取22个数据,取最大值
{
if(Data_Loc_m<11)
Data_Loc_l = Data_Loc_n-Data_Loc_m;
else
Data_Loc_l = Data_Loc_n+Data_Loc_m;
if(Data_Loc_q==0 ||Data_Loc_q==1 || Data_Loc_q==2 ||Data_Loc_q==3 ) //第一排 CH2=HEX CH4=CY5 CH1=FAM CH3=ROX
Sample_value = Photo_Sample_Read_Point->ad[Data_Loc_q][line][Data_Loc_l];
if(Data_Loc_q==4|| Data_Loc_q==5) //第二排 X X CH6=CY3 CH5=CY.
Sample_value = Photo_Sample_Read_Point->ad[Data_Loc_q][line+1][Data_Loc_l];
if (Sample_value>32767)
Sample_value = 4;
Sample_value = Sample_value/4;
if (Photo_Max_Value[Data_Loc_q]<Sample_value) // 得到最大值
{
Photo_Max_Value[Data_Loc_q] = Sample_value;
}
}
photo_sample_value = Photo_Max_Value[Data_Loc_q];
#endif
//AD采样值
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j][0] =
(unsigned char)(photo_sample_value/100);
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j][1] =
(unsigned char)(photo_sample_value%100);
//AD 放大倍数
//KValue = PhotoConstValue[Photo_K[Data_Loc_q]];
//wuhz2022/01/19
if(Data_Loc_q == 0)
KValue = PhotoConstValue[Photo_K[2]];//CH1 FAM 通道对应 Photo_K[2]
else if(Data_Loc_q == 1)
KValue = PhotoConstValue[Photo_K[0]];//CH2 HEX 通道对应 Photo_K[0]
else if(Data_Loc_q == 2)
KValue = PhotoConstValue[Photo_K[3]];//CH3 ROX 通道对应 Photo_K[3]
else if(Data_Loc_q == 3)
KValue = PhotoConstValue[Photo_K[1]];//CH4 CY5 通道对应 Photo_K[1]
else if(Data_Loc_q == 4)
KValue = PhotoConstValue[Photo_K[4]];//CH5 CY5.5 通道对应 Photo_K[4]
else if(Data_Loc_q == 5)
KValue = PhotoConstValue[Photo_K[5]];//CH6 CY3 通道对应 Photo_K[5]
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j+1][0] =
(unsigned char)(KValue/100);
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j+1][1] =
(unsigned char)(KValue%100);
// 2018/06/13 8通道修正系数
/*
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j+2][0] = 1;
// (unsigned char)(Channel_Multiple[new_channel]/100);
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j+2][1] = 0;
// (unsigned char)(Channel_Multiple[new_channel]%100);
*/
// 2022/02/06 8通道修正系数
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j+2][0] =(unsigned char)(Channel_Multiple[Data_Loc_q]/100);
//
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j+2][1] = (unsigned char)(Channel_Multiple[Data_Loc_q]%100);
// 2018/06/13 8通道修正系数
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j+3][0] =(unsigned char)(Channel_Multiple[Data_Loc_q]/100);
//
pmt_Data_Load[Data_Loc_q]->photo_ad_data[Data_Loc_j+3][1] = (unsigned char)(Channel_Multiple[Data_Loc_q]%100);
//
}
}
}
//FAM
if (Photo_Max_Value[0]>PHOTO_MAX_VALUE && Photo_K[2]<8 )
{
Photo_K[2]++;
Re_Scan = 1;
}
//HEX
if (Photo_Max_Value[1]>PHOTO_MAX_VALUE && Photo_K[0]<8 )
{
Photo_K[0]++;
Re_Scan = 1;
}
//ROX
if (Photo_Max_Value[2]>PHOTO_MAX_VALUE && Photo_K[3]<8 )
{
Photo_K[3]++;
Re_Scan = 1;
}
//CY5
if (Photo_Max_Value[2]>PHOTO_MAX_VALUE && Photo_K[1]<8 )
{
Photo_K[1]++;
Re_Scan = 1;
}
// // for (Data_Loc_q=0;Data_Loc_q<6;Data_Loc_q++) // 计算6 通道荧光
// for (Data_Loc_q=0;Data_Loc_q<4;Data_Loc_q++) // 计算4 通道荧光
// {
// if (Photo_Max_Value[Data_Loc_q]>PHOTO_MAX_VALUE && Photo_K[Data_Loc_q]<8 /*&& Data_Loc_q==2*/)
// {
// Photo_K[Data_Loc_q]++;
// Re_Scan = 1;
// }
// }
//Re_Scan = 0;
// 2018/10/19
if (RunFile.RunMode==CAL_MODE || RunFile.RunMode==CAL_OPMODE) // 本底测量 增益测量 不能变更
{
Re_Scan = 0;
}
if (Re_Scan == 1)
return 1;
return 0;
}
96pro20220307
最新推荐文章于 2024-02-22 08:49:30 发布