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

📄 thread.~cp

📁 数据采集
💻 ~CP
📖 第 1 页 / 共 5 页
字号:
    }
    if(found==false) err("direct notfound");
  }else if(bd.hq_mode==HQ_NEWCPZ){
    for(int i=0,ab_cnt1=0,ab_cnt2=0;i<offset_buf;i++){
      if(data_jz(1,i)-zero1>data_jz(3,i)-zero3+1500)  ab_cnt1++;
      else ab_cnt1=0;
      if(ab_cnt1>5){  direct=L_R;break;}

      if(data_jz(3,i)-zero3>data_jz(1,i)-zero1+1500)  ab_cnt2++;
      else ab_cnt2=0;
      if(ab_cnt2>5){  direct=R_L;break;}
    }
  }else{
    for(int i=0,ab_cnt1=0,ab_cnt2=0;i<offset_buf;i++){
      if(data_jz(1,i)-zero1>data_jz(2,i)-zero2+1500)  ab_cnt1++;
      else ab_cnt1=0;
      if(ab_cnt1>5){  direct=L_R;break;}

      if(data_jz(2,i)-zero2>data_jz(1,i)-zero1+1500)  ab_cnt2++;
      else ab_cnt2=0;
      if(ab_cnt2>5){  direct=R_L;break;}
    }
  }
  //if(direct==L_R) err("L_R");
  //else err("R_L");
}

void __fastcall TDonThread::c_cpz() //计算超偏载
{
   // add double for overflow
   wei_n1[ce_cnt]=(double)wei[ce_cnt]*ad_n1[ce_cnt]/qin_hou[ce_cnt];
   wei_n2[ce_cnt]=(double)wei[ce_cnt]*ad_n2[ce_cnt]/qin_hou[ce_cnt];
   wei_n3[ce_cnt]=(double)wei[ce_cnt]*ad_n3[ce_cnt]/qin_hou[ce_cnt];
   wei_n4[ce_cnt]=(double)wei[ce_cnt]*ad_n4[ce_cnt]/qin_hou[ce_cnt];
   wei_w1[ce_cnt]=(double)wei[ce_cnt]*ad_w1[ce_cnt]/qin_hou[ce_cnt];
   wei_w2[ce_cnt]=(double)wei[ce_cnt]*ad_w2[ce_cnt]/qin_hou[ce_cnt];
   wei_w3[ce_cnt]=(double)wei[ce_cnt]*ad_w3[ce_cnt]/qin_hou[ce_cnt];
   wei_w4[ce_cnt]=wei[ce_cnt]-wei_w1[ce_cnt]-wei_w2[ce_cnt]-wei_w3[ce_cnt]-
                  wei_n1[ce_cnt]-wei_n2[ce_cnt]-wei_n3[ce_cnt]-wei_n4[ce_cnt];

   // 纵向偏载
   w[ce_cnt]=(wei_n1[ce_cnt]+wei_n2[ce_cnt]+wei_w1[ce_cnt]+wei_w2[ce_cnt])-
             (wei_n3[ce_cnt]+wei_n4[ce_cnt]+wei_w3[ce_cnt]+wei_w4[ce_cnt]);
   // 前后轴的横向偏载率
   r_q[ce_cnt]=(float)(wei_n1[ce_cnt]+wei_n2[ce_cnt]-wei_w1[ce_cnt]-wei_w2[ce_cnt])/
               (float)(wei_n1[ce_cnt]+wei_n2[ce_cnt]+wei_w1[ce_cnt]+wei_w2[ce_cnt]);
   r_h[ce_cnt]=(float)(wei_n3[ce_cnt]+wei_n4[ce_cnt]-wei_w3[ce_cnt]-wei_w4[ce_cnt])/
               (float)(wei_n3[ce_cnt]+wei_n4[ce_cnt]+wei_w3[ce_cnt]+wei_w4[ce_cnt]);
}

void __fastcall TDonThread::c_newcpz() //计算HQ_CPZ24
{
   // add double for overflow
   if(qin_hou[ce_cnt]!=0){
     wei_n1[ce_cnt]=(double)wei[ce_cnt]*ad_n1[ce_cnt]/qin_hou[ce_cnt];
     wei_n2[ce_cnt]=(double)wei[ce_cnt]*ad_n2[ce_cnt]/qin_hou[ce_cnt];
     wei_n3[ce_cnt]=(double)wei[ce_cnt]*ad_n3[ce_cnt]/qin_hou[ce_cnt];
     wei_n4[ce_cnt]=(double)wei[ce_cnt]*ad_n4[ce_cnt]/qin_hou[ce_cnt];
     wei_w1[ce_cnt]=(double)wei[ce_cnt]*ad_w1[ce_cnt]/qin_hou[ce_cnt];
     wei_w2[ce_cnt]=(double)wei[ce_cnt]*ad_w2[ce_cnt]/qin_hou[ce_cnt];
     wei_w3[ce_cnt]=(double)wei[ce_cnt]*ad_w3[ce_cnt]/qin_hou[ce_cnt];
     wei_w4[ce_cnt]=real_wei-wei_w1[ce_cnt]-wei_w2[ce_cnt]-wei_w3[ce_cnt]-
                             wei_n1[ce_cnt]-wei_n2[ce_cnt]-wei_n3[ce_cnt]-wei_n4[ce_cnt];
   }else err("c_newcpz:devide by 0");
   if( wei_n1[ce_cnt]<=0 ||wei_n2[ce_cnt]<=0 ||wei_n3[ce_cnt]<=0 ||wei_n4[ce_cnt]<=0 ||
       wei_w1[ce_cnt]<=0 ||wei_w2[ce_cnt]<=0 ||wei_w3[ce_cnt]<=0 ||wei_w4[ce_cnt]<=0 ){
     err("wei_n1<0 ...");
     return;
   }
   js_pzc_pzl(); //已知wei_n1,wei_w1...计算pzc,pzl
}

void __fastcall TDonThread::js_pzc_pzl() //已知wei_n1,wei_w1...计算pzc,pzl
{
   if(direct==L_R){   // --->
     // 偏重差 有正负  --->
     w[ce_cnt]=(wei_n3[ce_cnt]+wei_n4[ce_cnt]+wei_w3[ce_cnt]+wei_w4[ce_cnt])-
               (wei_n1[ce_cnt]+wei_n2[ce_cnt]+wei_w1[ce_cnt]+wei_w2[ce_cnt]);

     // 前后转向架的偏载率 有正负  --->
     if(wei_n3[ce_cnt]+wei_w3[ce_cnt]+wei_n4[ce_cnt]+wei_w4[ce_cnt]!=0){
       r_q[ce_cnt]=(float(wei_w3[ce_cnt]+wei_w4[ce_cnt])-(wei_n3[ce_cnt]+wei_n4[ce_cnt]))/
                   (float(wei_w3[ce_cnt]+wei_w4[ce_cnt])+(wei_n3[ce_cnt]+wei_n4[ce_cnt]))*100;
     }else{r_q[ce_cnt]=0; err("c_newcpz:r_q: devide by 0");}

     if(wei_n1[ce_cnt]+wei_w1[ce_cnt]+wei_n1[ce_cnt]+wei_w1[ce_cnt]!=0){
       r_h[ce_cnt]=(float(wei_w1[ce_cnt]+wei_w2[ce_cnt])-(wei_n1[ce_cnt]+wei_n2[ce_cnt]))/
                   (float(wei_w1[ce_cnt]+wei_w2[ce_cnt])+(wei_n1[ce_cnt]+wei_n2[ce_cnt]))*100;
     }else{r_h[ce_cnt]=0; err("c_newcpz:r_h: devide by 0");}

     //整车偏载率  --->
     if(wei[ce_cnt]!=0){
       r_zc[ce_cnt]=(float(wei_w1[ce_cnt]+wei_w2[ce_cnt]+wei_w3[ce_cnt]+wei_w4[ce_cnt])-
                     float(wei_n1[ce_cnt]+wei_n2[ce_cnt]+wei_n3[ce_cnt]+wei_n4[ce_cnt]))/
                    (float)wei[ce_cnt] *100.0;
     }else{r_zc[ce_cnt]=0;err("c_newcpz:r_zc: devide by 0");}


     // 4根轴的偏载率   --->
     if(wei_n1[ce_cnt]+wei_w1[ce_cnt]!=0)
       y1[ce_cnt]=(float)(wei_w1[ce_cnt]-wei_n1[ce_cnt])/(wei_w1[ce_cnt]+wei_n1[ce_cnt])*100;
     else{y1[ce_cnt]=0; err("c_newcpz:devide by 0");}
     if(wei_n2[ce_cnt]+wei_w2[ce_cnt]!=0)
       y2[ce_cnt]=(float)(wei_w2[ce_cnt]-wei_n2[ce_cnt])/(wei_w2[ce_cnt]+wei_n2[ce_cnt])*100;
     else{y2[ce_cnt]=0; err("c_newcpz:devide by 0");}
     if(wei_n3[ce_cnt]+wei_w3[ce_cnt]!=0)
       y3[ce_cnt]=(float)(wei_w3[ce_cnt]-wei_n3[ce_cnt])/(wei_w3[ce_cnt]+wei_n3[ce_cnt])*100;
     else{y3[ce_cnt]=0; err("c_newcpz:devide by 0");}
     if(wei_n4[ce_cnt]+wei_w4[ce_cnt]!=0)
       y4[ce_cnt]=(float)(wei_w4[ce_cnt]-wei_n4[ce_cnt])/(wei_w4[ce_cnt]+wei_n4[ce_cnt])*100;
     else{y4[ce_cnt]=0; err("c_newcpz:devide by 0");}

   }else{       // <---
     // 偏重差 有正负  <---
     w[ce_cnt]=(wei_n1[ce_cnt]+wei_n2[ce_cnt]+wei_w1[ce_cnt]+wei_w2[ce_cnt])-
               (wei_n3[ce_cnt]+wei_n4[ce_cnt]+wei_w3[ce_cnt]+wei_w4[ce_cnt]);

     // 前后转向架的偏载率 有正负  <---
     if(wei_n1[ce_cnt]+wei_w1[ce_cnt]+wei_n1[ce_cnt]+wei_w1[ce_cnt]!=0){
       r_q[ce_cnt]=(float(wei_n1[ce_cnt]+wei_n2[ce_cnt])-(wei_w1[ce_cnt]+wei_w2[ce_cnt]))/
                   (float(wei_n1[ce_cnt]+wei_n2[ce_cnt])+(wei_w1[ce_cnt]+wei_w2[ce_cnt]))*100;
     }else{r_q[ce_cnt]=0; err("c_newcpz:r_q: devide by 0");}
     if(wei_n3[ce_cnt]+wei_w3[ce_cnt]+wei_n4[ce_cnt]+wei_w4[ce_cnt]!=0){
       r_h[ce_cnt]=(float(wei_n3[ce_cnt]+wei_n4[ce_cnt])-(wei_w3[ce_cnt]+wei_w4[ce_cnt]))/
                   (float(wei_n3[ce_cnt]+wei_n4[ce_cnt])+(wei_w3[ce_cnt]+wei_w4[ce_cnt]))*100;
     }else{r_h[ce_cnt]=0; err("c_newcpz:r_h: devide by 0");}

     //整车偏载率  <---
     if(wei[ce_cnt]!=0){
       r_zc[ce_cnt]=(float(wei_n1[ce_cnt]+wei_n2[ce_cnt]+wei_n3[ce_cnt]+wei_n4[ce_cnt])-
                     float(wei_w1[ce_cnt]+wei_w2[ce_cnt]+wei_w3[ce_cnt]+wei_w4[ce_cnt]))/
                    (float)wei[ce_cnt] *100.0;
     }else{r_zc[ce_cnt]=0;err("c_newcpz:r_zc: devide by 0");}


     // 4根轴的偏载率   <---
     if(wei_n1[ce_cnt]+wei_w1[ce_cnt]!=0)
       y1[ce_cnt]=(float)(wei_n1[ce_cnt]-wei_w1[ce_cnt])/(wei_w1[ce_cnt]+wei_n1[ce_cnt])*100;
     else{y1[ce_cnt]=0; err("c_newcpz:devide by 0");}
     if(wei_n2[ce_cnt]+wei_w2[ce_cnt]!=0)
       y2[ce_cnt]=(float)(wei_n2[ce_cnt]-wei_w2[ce_cnt])/(wei_w2[ce_cnt]+wei_n2[ce_cnt])*100;
     else{y2[ce_cnt]=0; err("c_newcpz:devide by 0");}
     if(wei_n3[ce_cnt]+wei_w3[ce_cnt]!=0)
       y3[ce_cnt]=(float)(wei_n3[ce_cnt]-wei_w3[ce_cnt])/(wei_w3[ce_cnt]+wei_n3[ce_cnt])*100;
     else{y3[ce_cnt]=0; err("c_newcpz:devide by 0");}
     if(wei_n4[ce_cnt]+wei_w4[ce_cnt]!=0)
       y4[ce_cnt]=(float)(wei_n4[ce_cnt]-wei_w4[ce_cnt])/(wei_w4[ce_cnt]+wei_n4[ce_cnt])*100;
     else{y4[ce_cnt]=0; err("c_newcpz:devide by 0");}
   }
}

void __fastcall TDonThread::c_cpz24()  
{
}

int __fastcall TDonThread::weight_don_kg()
{
  int ret;
  int start_kg;

  if(flag_test==0) offset_buf=0;
  collect_zero();
  don_flag=FALSE;

  if(bd.pb_mode==PB_WG81){ // 武钢81#
    if(flag_test==0) init_kg();    // init
    for(kg_used=0,cnt_exit=0,ce_cnt=0;;){
      if(don_flag==FALSE){ // 等车
        while(don_flag==FALSE){
          Sleep(100); // 提高性能
          if(don_susp==TRUE){return EXIT_ESC;}
          if(kg_now>0){
            if(kg[1].who==1) direct=L_R;
            else direct=R_L;
            don_flag=TRUE;
            Synchronize(show_being);
            form_main->sound();

            Synchronize(repaint);
            start_tm=GetCurrentTime();
            Sleep(300);
          }
        }
      }
      g_direct=direct;
      if(direct==L_R){
        while(1){
          Sleep(100); // 提高性能
          if(kg_used<kg_now) kg_used++;
          //if(kg_used<=kg_now){
          if(kg[kg_used].k1%4==0 && kg[kg_used].k1==kg[kg_used].k4+4){
            start_kg=kg_used;
            break;
          }
          //}
          if( (ret=check_exit()) != NOT_EXIT ) return ret;
        }

        while(kg_now<=start_kg){ // wait for ce down
          Sleep(100); // 提高性能
          if( (ret=check_exit()) != NOT_EXIT ) return ret;
        }
        kg_used++;
      }else { //  R_L
        while(1){
          Sleep(100); // 提高性能
          if(kg_used<kg_now)  kg_used++;
          //if(kg_used<=kg_now){
          if(kg[kg_used].k4%4==0 && kg[kg_used].k4==kg[kg_used].k1+4){
            start_kg=kg_used;
            break;
          }
          //}
          if( (ret=check_exit()) != NOT_EXIT ) return ret;
        }

        while(kg_now<=start_kg){ // wait for ce down
          Sleep(100); // 提高性能
          if( (ret=check_exit()) != NOT_EXIT ) return ret;
        }
        kg_used++;
      }//if L_R
      Sleep(200);  // wait for getdatathread run ; important !!!
      k_dz[ce_cnt]=c_dz(start_kg); //计算档轴比
      if(k_dz[ce_cnt]<bd.k_dz) continue; //判鱼雷罐
      c_wei(kg[start_kg].ofst,kg[start_kg+1].ofst);//计算重量
      c_spd(start_kg);  //计算速度
      *(p_buf_z1+kg[start_kg].ofst)|=0x8000;
      *(p_buf_z1+kg[start_kg+1].ofst)|=0x8000;

      Synchronize(show);//(ce_cnt);
      ce_cnt++;
      if( ce_cnt>MAX_CE-1 ){ return EXIT_OK;}
    }//for
  }// 武钢81#

  else if(bd.pb_mode==PB_SG){ // 水钢
    int head_is_before;
    if(flag_test==0) init_kg();    // init
    for(cnt_exit=0;;){
      if(don_flag==FALSE){ // 等车
        while(don_flag==FALSE){
          Sleep(100);  // 提高性能
          if(don_susp==TRUE){return EXIT_ESC;}
          if(kg_now>0){
            if(kg[1].who==1) direct=L_R;
            else direct=R_L;
            don_flag=TRUE;
            Synchronize(show_being);
            form_main->sound();
              
            Synchronize(repaint);
            start_tm=GetCurrentTime();
            Sleep(300);
          }
        }
      }
      Sleep(100);  // 提高性能
      if( (ret=check_exit()) != NOT_EXIT ) break; // 等车过完
    }

    if(kg[kg_now].k1!=kg[kg_now].k4){ce_cnt=0;return EXIT_OK ;}
    head_is_before=pb_head();

    int go_ce; // 过了多少车
    if(direct==L_R) go_ce=(kg[kg_now].k1-10)/4;
    else go_ce=(kg[kg_now].k4-10)/4;

    for(ce_cnt=0,kg_used=0;kg_used<=kg_now && ce_cnt<go_ce;kg_used++){
         if(direct==L_R){
           if(  kg[kg_used].k1>head_is_before*10 &&
               (kg[kg_used].k1-head_is_before*10) %4 ==0 &&
                kg[kg_used].k1==kg[kg_used].k4+4 ) start_kg=kg_used;
           else continue;
         }else{
           if (  kg[kg_used].k4>head_is_before*10 &&
                (kg[kg_used].k4-head_is_before*10) %4 ==0 &&
                 kg[kg_used].k4==kg[kg_used].k1+4 )  start_kg=kg_used;
           else continue;
         }

         if(kg[start_kg].ofst==0 || kg[start_kg+1].ofst==0 ) break;
         int dlt_ofst=(kg[start_kg+1].ofst-kg[start_kg].ofst)/8;
         c_wei(kg[start_kg].ofst+dlt_ofst+dlt_ofst/2,
               kg[start_kg+1].ofst+dlt_ofst-dlt_ofst/2); //计算重量
         c_spd(start_kg);  //计算速度
         *(p_buf_z1+kg[start_kg].ofst+dlt_ofst+dlt_ofst/2)|=0x8000;
         *(p_buf_z1+kg[start_kg+1].ofst+dlt_ofst-dlt_ofst/2)|=0x8000;
         lock_weight();
         Synchronize(show); //(ce_cnt);
         if( ce_cnt>=MAX_CE-1 ){ return EXIT_OK;}

         ce_cnt++;
    } //for
    return ret;
  } // 水钢

  else if(bd.pb_mode==PB_KP){ // 开普
    int head_is_before;
    if(flag_test==0) init_kg();    // init
    for(cnt_exit=0;;){
      if(don_flag==FALSE){ // 等车
        while(don_flag==FALSE){
          Sleep(100);  // 提高性能
          if(don_susp==TRUE){return EXIT_ESC;}
          if(kg_now>0){
            if(kg[1].who==1) direct=L_R;
            else direct=R_L;
            don_flag=TRUE;
            Synchronize(show_being);
            form_main->sound();
            
            Synchronize(repaint);
            start_tm=GetCurrentTime();
            Sleep(300);
          }
        }
      }
      Sleep(100);  // 提高性能
      if( (ret=check_exit()) != NOT_EXIT ) break; // 等车过完
    }

    if(kg[kg_now].k1!=kg[kg_now].k4){ce_cnt=0;return EXIT_OK ;}

    head_is_before=pb_head();

    int go_ce; // 过了多少车
    int heads=1; // 多少车头
    /*
    if( (kg[kg_now].k4-10)%4==0 )  heads=1;
    else heads=2;*/
    if(direct==L_R) go_ce=(kg[kg_now].k1-10*heads)/4;
    else go_ce=(kg[kg_now].k4-10*heads)/4;

    for(ce_cnt=0,kg_used=0;kg_used<=kg_now && ce_cnt<go_ce;kg_used++){
         if(direct==L_R){
           if(  kg[kg_used].k1>head_is_before*10 &&
                kg[kg_used].k1<=(head_is_before==0?kg[kg_now].k1-10*heads:kg[kg_now].k1) &&
               (kg[kg_used].k1-head_is_before*10) %4 ==0 &&
                kg[kg_used].k1==kg[kg_used].k4+4 &&
                kg[kg_used+1].ofst>kg[kg_used].ofst+120) start_kg=kg_used;
           else continue;
         }else{
           if (  kg[kg_used].k4>head_is_before*10 &&
                 kg[kg_used].k4<=(head_is_before==0?kg[kg_now].k4-10*heads:kg[kg_now].k4) &&
                (kg[kg_used].k4-head_is_before*10) %4 ==0 &&
                 kg[kg_used].k4==kg[kg_used].k1+4 &&
                 kg[kg_used+1].ofst>kg[kg_used].ofst+120) start_kg=kg_used;
           else continue;
         }

         if(kg[start_kg].ofst==0 || kg[start_kg+1].ofst==0 ) break;
         int dlt_ofst=(kg[start_kg+1].ofst-kg[start_kg].ofst)/5;
         c_wei(kg[start_kg].ofst+dlt_ofst,
               kg[start_kg+1].ofst-dlt_ofst); //计算重量
         c_spd(start_kg);  //计算速度
         *(p_buf_z1+kg[start_kg].ofst+dlt_ofst)|=0x8000;
         *(p_buf_z1+kg[start_kg+1].ofst-dlt_ofst)|=0x8000;
         lock_weight();
         Synchronize(show); //(ce_cnt);

⌨️ 快捷键说明

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