?? thread.~cpp
字號:
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);
if( ce_cnt>=MAX_CE-1 ){ return EXIT_OK;}
ce_cnt++;
} //for
return ret;
}// 開普
else if(bd.pb_mode==PB_TG){ // 泰鋼
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-2)/4;
else go_ce=(kg[kg_now].k4-2)/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*2 &&
kg[kg_used].k1<=(head_is_before==0?kg[kg_now].k1-2:kg[kg_now].k1) &&
(kg[kg_used].k1-head_is_before*2) %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*2 &&
kg[kg_used].k4<=(head_is_before==0?kg[kg_now].k4-2:kg[kg_now].k4) &&
(kg[kg_used].k4-head_is_before*2) %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)/5;
c_wei(kg[start_kg].ofst+dlt_ofst,
kg[start_kg+1].ofst-dlt_ofst/2); //計算重量
c_spd(start_kg); //計算速度
*(p_buf_z1+kg[start_kg].ofst+dlt_ofst)|=0x8000;
*(p_buf_z1+kg[start_kg+1].ofst-dlt_ofst/2)|=0x8000;
lock_weight();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -