📄 thread.~cp
字号:
}
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 + -