96pro20220307

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值