📄 cpzsetup.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <io.h>
#include "cpzsetup.h"
#include "main.h"
#include "global.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tform_cpzsetup *form_cpzsetup;
extern FILE *prn ;
extern is_debug;
int is_13=2; // 0--换长1.2; 1--换长1.3A; 2--换长1.3B
//---------------------------------------------------------------------------
__fastcall Tform_cpzsetup::Tform_cpzsetup(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall Tform_cpzsetup::save_cpzsetupClick(TObject *Sender)
{
if(E_pzc0->Text.Trim()==""){cpz_setup.pzc[0]=0;}else{cpz_setup.pzc[0]=StrToInt(E_pzc0->Text);}
if(E_pzc1->Text.Trim()==""){cpz_setup.pzc[1]=0;}else{cpz_setup.pzc[1]=StrToInt(E_pzc1->Text);}
if(E_pzc2->Text.Trim()==""){cpz_setup.pzc[2]=0;}else{cpz_setup.pzc[2]=StrToInt(E_pzc2->Text);}
if(E_pzc3->Text.Trim()==""){cpz_setup.pzc[3]=0;}else{cpz_setup.pzc[3]=StrToInt(E_pzc3->Text);}
if(E_pzc4->Text.Trim()==""){cpz_setup.pzc[4]=0;}else{cpz_setup.pzc[4]=StrToInt(E_pzc4->Text);}
if(E_pzl_q0->Text.Trim()==""){cpz_setup.pzl[0][0]=0.0;}else{cpz_setup.pzl[0][0]=StrToFloat(E_pzl_q0->Text);}
if(E_pzl_q1->Text.Trim()==""){cpz_setup.pzl[1][0]=0.0;}else{cpz_setup.pzl[1][0]=StrToFloat(E_pzl_q1->Text);}
if(E_pzl_q2->Text.Trim()==""){cpz_setup.pzl[2][0]=0.0;}else{cpz_setup.pzl[2][0]=StrToFloat(E_pzl_q2->Text);}
if(E_pzl_q3->Text.Trim()==""){cpz_setup.pzl[3][0]=0.0;}else{cpz_setup.pzl[3][0]=StrToFloat(E_pzl_q3->Text);}
if(E_pzl_q4->Text.Trim()==""){cpz_setup.pzl[4][0]=0.0;}else{cpz_setup.pzl[4][0]=StrToFloat(E_pzl_q4->Text);}
if(E_pzl_h0->Text.Trim()==""){cpz_setup.pzl[0][1]=0.0;}else{cpz_setup.pzl[0][1]=StrToFloat(E_pzl_h0->Text);}
if(E_pzl_h1->Text.Trim()==""){cpz_setup.pzl[1][1]=0.0;}else{cpz_setup.pzl[1][1]=StrToFloat(E_pzl_h1->Text);}
if(E_pzl_h2->Text.Trim()==""){cpz_setup.pzl[2][1]=0.0;}else{cpz_setup.pzl[2][1]=StrToFloat(E_pzl_h2->Text);}
if(E_pzl_h3->Text.Trim()==""){cpz_setup.pzl[3][1]=0.0;}else{cpz_setup.pzl[3][1]=StrToFloat(E_pzl_h3->Text);}
if(E_pzl_h4->Text.Trim()==""){cpz_setup.pzl[4][1]=0.0;}else{cpz_setup.pzl[4][1]=StrToFloat(E_pzl_h4->Text);}
if(E_cnt->Text.Trim()==""){
cpz_setup.cnt=5;
ShowMessage("cnt为空") ;
}else{ cpz_setup.cnt=StrToInt(E_cnt->Text);}
cpz_setup.dlt_wei[0]=StrToInt(Edit1->Text);
cpz_setup.dlt_wei[1]=StrToInt(Edit2->Text);
cpz_setup.dlt_wei[2]=StrToInt(Edit3->Text);
cpz_setup.dlt_wei[3]=StrToInt(Edit4->Text);
cpz_setup.dlt_wei[4]=StrToInt(Edit5->Text);
cpz_setup.hc[0]=StrToInt(Edit6->Text);
cpz_setup.hc[1]=StrToInt(Edit7->Text);
cpz_setup.hc[2]=StrToInt(Edit8->Text);
cpz_setup.hc[3]=StrToInt(Edit9->Text);
cpz_setup.hc[4]=StrToInt(Edit10->Text);
cpz_setup.lock_wei[0]=CheckBox1->Checked;
cpz_setup.lock_wei[1]=CheckBox2->Checked;
cpz_setup.lock_wei[2]=CheckBox3->Checked;
cpz_setup.lock_wei[3]=CheckBox4->Checked;
cpz_setup.lock_wei[4]=CheckBox5->Checked;
cpz_setup.lock_flag=CheckBox6->Checked;
lock_flag=cpz_setup.lock_flag;
cpz_setup.by_wei=cb_by_wei->Checked;
if(write_cpz_setup()) ShowMessage("write_cpz_setup ok");
else ShowMessage("write_cpz_setup failed");
}
//---------------------------------------------------------------------------
void __fastcall Tform_cpzsetup::ExitClick(TObject *Sender)
{
form_main->Show();
Hide();
}
//---------------------------------------------------------------------------
void __fastcall Tform_cpzsetup::FormShow(TObject *Sender)
{
PageControl1->ActivePage= T_data;
if(!FileExists(CPZDATA)){Memo1->Clear();}
else{ show_cpzdata(CPZDATA);}
e_cols->Text=8;
e_long->Text=11640;
e_zxj->Text=8700;
e_bzznew->Text=0;
sg_jsnew->ColCount=StrToInt(e_cols->Text);
sg_jsnew2->ColCount=sg_jsnew->ColCount;
for(int i=0;i<sg_jsnew->ColCount;i++){
sg_jsnew2->Cells[i][0]=i+1;
sg_jsnew->ColWidths[i]=(sg_jsnew->Width-10)/sg_jsnew->ColCount;
sg_jsnew2->ColWidths[i]=sg_jsnew->ColWidths[i] ;
}
}
void __fastcall Tform_cpzsetup::show_cpzdata(AnsiString file)
{
int cnt;
cnt=(int)(filesize(file.c_str())-2*sizeof(long))/sizeof( _cpz_data);
if(cnt<=0) return;
struct _cpz_data *cpz_data=new _cpz_data[cnt];
long cnt_lr[5];
long cnt_rl[5];
char s[300];
if(cpz_data==NULL){err("cpz_data==NULL");return;}
if(!read_cpz_data(file.c_str(),cnt,cnt_lr,cnt_rl,cpz_data)){delete[] cpz_data; return;}
Memo1->Clear();
Memo1->Lines->Add("文件:" + file + " " +
"车数:" + IntToStr(cnt) + " " +
"趟数:" + "--->" + IntToStr((int)cnt_lr[0]) + " " +
IntToStr((int)cnt_lr[1]) + " " +
IntToStr((int)cnt_lr[2]) + " " +
IntToStr((int)cnt_lr[3]) + " " +
IntToStr((int)cnt_lr[4]) + " " +
"<---" + IntToStr((int)cnt_rl[0]) + " " +
IntToStr((int)cnt_rl[1]) + " " +
IntToStr((int)cnt_rl[2]) + " " +
IntToStr((int)cnt_rl[3]) + " " +
IntToStr((int)cnt_rl[4]) );
// pzl r_q
Memo1->Lines->Add(" ");
sprintf(s,"%42s %42s","pzl_q--->","pzl_q<---");
Memo1->Lines->Add(s);
sprintf(s,"%7s%7s%7s%7s%7s%7s %7s%7s%7s%7s%7s%7s",
"min","max","time","time","pj", "ma-mi", "min","max","time","time","pj","ma-mi");
Memo1->Lines->Add(s);
for(int i=0;i<cnt;i++){
sprintf(s,"%7.2f%7.2f%7s%7s%7.2f%7.2f %7.2f%7.2f%7s%7s%7.2f%7.2f",
cpz_data[i].pzl_min_lr[0], cpz_data[i].pzl_max_lr[0],
cpz_data[i].pzl_min_lr_time[0],cpz_data[i].pzl_max_lr_time[0],
cpz_data[i].pzl_pj_lr[0],cpz_data[i].pzl_max_lr[0]-cpz_data[i].pzl_min_lr[0],
cpz_data[i].pzl_min_rl[0], cpz_data[i].pzl_max_rl[0],
cpz_data[i].pzl_min_rl_time[0],cpz_data[i].pzl_max_rl_time[0],
cpz_data[i].pzl_pj_rl [0],cpz_data[i].pzl_max_rl[0]-cpz_data[i].pzl_min_rl[0]);
Memo1->Lines->Add(s);
}
// pzl r_h
Memo1->Lines->Add(" ");
sprintf(s,"%42s %42s","pzl_h--->","pzl_h<---");
Memo1->Lines->Add(s);
for(int i=0;i<cnt;i++){
sprintf(s,"%7.2f%7.2f%7s%7s%7.2f%7.2f %7.2f%7.2f%7s%7s%7.2f%7.2f",
cpz_data[i].pzl_min_lr[1], cpz_data[i].pzl_max_lr[1],
cpz_data[i].pzl_min_lr_time[1],cpz_data[i].pzl_max_lr_time[1],
cpz_data[i].pzl_pj_lr [1],cpz_data[i].pzl_max_lr[1]-cpz_data[i].pzl_min_lr[1],
cpz_data[i].pzl_min_rl[1], cpz_data[i].pzl_max_rl[1],
cpz_data[i].pzl_min_rl_time[1],cpz_data[i].pzl_max_rl_time[1],
cpz_data[i].pzl_pj_rl [1],cpz_data[i].pzl_max_rl[1]-cpz_data[i].pzl_min_rl[1]);
Memo1->Lines->Add(s);
}
// pzc
Memo1->Lines->Add(" ");
sprintf(s,"%42s %42s",
"pzc--->","pzc<---" );
Memo1->Lines->Add(s);
for(int i=0;i<cnt;i++){
sprintf(s,"%7d%7d%7s%7s%7d%7d %7d%7d%7s%7s%7d%7d" ,
cpz_data[i].pzc_min_lr, cpz_data[i].pzc_max_lr,
cpz_data[i].pzc_min_lr_time,cpz_data[i].pzc_max_lr_time,
cpz_data[i].pzc_pj_lr,cpz_data[i].pzc_max_lr-cpz_data[i].pzc_min_lr,
cpz_data[i].pzc_min_rl, cpz_data[i].pzc_max_rl,
cpz_data[i].pzc_min_rl_time,cpz_data[i].pzc_max_rl_time,
cpz_data[i].pzc_pj_rl,cpz_data[i].pzc_max_rl-cpz_data[i].pzc_min_rl);
Memo1->Lines->Add(s);
}
// spd>60
Memo1->Lines->Add(" ");
for(int i=0;i<cnt;i++){
sprintf(s,"%7d%7d%7s%7s%7s%7d %7d%7d%7s%7s%7s%7d" ,
cpz_data[i].pzc_min_lr_60, cpz_data[i].pzc_max_lr_60,
cpz_data[i].pzc_min_lr_time_60,cpz_data[i].pzc_max_lr_time_60,
"",cpz_data[i].pzc_max_lr_60-cpz_data[i].pzc_min_lr_60,
cpz_data[i].pzc_min_rl_60, cpz_data[i].pzc_max_rl_60,
cpz_data[i].pzc_min_rl_time_60,cpz_data[i].pzc_max_rl_time_60,
"",cpz_data[i].pzc_max_rl_60-cpz_data[i].pzc_min_rl_60);
Memo1->Lines->Add(s);
}
// dlt_wei
Memo1->Lines->Add(" ");
sprintf(s,"%42s %42s",
"weight--->","weight<---");
Memo1->Lines->Add(s);
for(int i=0;i<cnt;i++){
sprintf(s,"%8d%8d%9s%9s%8d %8d%8d%9s%9s%8d",
cpz_data[i].wei_min_lr, cpz_data[i].wei_max_lr,
cpz_data[i].wei_min_lr_time,cpz_data[i].wei_max_lr_time,
cpz_data[i].wei_max_lr-cpz_data[i].wei_min_lr,
cpz_data[i].wei_min_rl, cpz_data[i].wei_max_rl,
cpz_data[i].wei_min_rl_time,cpz_data[i].wei_max_rl_time,
cpz_data[i].wei_max_rl-cpz_data[i].wei_min_rl );
Memo1->Lines->Add(s);
}
delete[] cpz_data;
}
//---------------------------------------------------------------------------
void __fastcall Tform_cpzsetup::printClick(TObject *Sender)
{
if(get_version()>4) return; // win98=4 win2000=5,winxp=5
if(prn==NULL){err("printClick:open prn failed");return;}
for (int i = 0; i < Memo1->Lines->Count; i++){
//err(Memo1->Lines->Strings[i].c_str());
fprintf(prn,"%s\n",Memo1->Lines->Strings[i].c_str());
}
fprintf(prn,"\n\n\n");
//fclose(prn);
}
void __fastcall Tform_cpzsetup::openClick(TObject *Sender)
{
if (!OpenDialog1->Execute()) return;
show_cpzdata(OpenDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall Tform_cpzsetup::T_js_pzcpzlShow(TObject *Sender)
{
read_cpz_setup(CPZSETUP);
E_pzc0 ->Text=cpz_setup.pzc[0];
E_pzc1 ->Text=cpz_setup.pzc[1];
E_pzc2 ->Text=cpz_setup.pzc[2];
E_pzc3 ->Text=cpz_setup.pzc[3];
E_pzc4 ->Text=cpz_setup.pzc[4];
E_pzl_q0 ->Text=FloatToStrF(cpz_setup.pzl[0][0],ffFixed,4,2);
E_pzl_q1 ->Text=FloatToStrF(cpz_setup.pzl[1][0],ffFixed,4,2);
E_pzl_q2 ->Text=FloatToStrF(cpz_setup.pzl[2][0],ffFixed,4,2);
E_pzl_q3 ->Text=FloatToStrF(cpz_setup.pzl[3][0],ffFixed,4,2);
E_pzl_q4 ->Text=FloatToStrF(cpz_setup.pzl[4][0],ffFixed,4,2);
E_pzl_h0 ->Text=FloatToStrF(cpz_setup.pzl[0][1],ffFixed,4,2);
E_pzl_h1 ->Text=FloatToStrF(cpz_setup.pzl[1][1],ffFixed,4,2);
E_pzl_h2 ->Text=FloatToStrF(cpz_setup.pzl[2][1],ffFixed,4,2);
E_pzl_h3 ->Text=FloatToStrF(cpz_setup.pzl[3][1],ffFixed,4,2);
E_pzl_h4 ->Text=FloatToStrF(cpz_setup.pzl[4][1],ffFixed,4,2);
Edit1->Text=cpz_setup.dlt_wei[0]; Edit6->Text=cpz_setup.hc[0];
Edit2->Text=cpz_setup.dlt_wei[1]; Edit7->Text=cpz_setup.hc[1];
Edit3->Text=cpz_setup.dlt_wei[2]; Edit8->Text=cpz_setup.hc[2];
Edit4->Text=cpz_setup.dlt_wei[3]; Edit9->Text=cpz_setup.hc[3];
Edit5->Text=cpz_setup.dlt_wei[4]; Edit10->Text=cpz_setup.hc[4];
E_cnt->Text=cpz_setup.cnt;
CheckBox1->Checked=cpz_setup.lock_wei[0];
CheckBox2->Checked=cpz_setup.lock_wei[1];
CheckBox3->Checked=cpz_setup.lock_wei[2];
CheckBox4->Checked=cpz_setup.lock_wei[3];
CheckBox5->Checked=cpz_setup.lock_wei[4];
CheckBox6->Checked=cpz_setup.lock_flag;
cb_by_wei->Checked=cpz_setup.by_wei;
}
//---------------------------------------------------------------------------
void __fastcall Tform_cpzsetup::jsClick(TObject *Sender)
{
int pzc;
double pzl_q=0.0,pzl_h=0.0;
double d=0.0;
// 换长1.2
// |---------------------------------------------------|
// | |
// | | | |
// | | | |
// | |
// |---------------------------------------------------|
// |1470 | 8700 | |
// | 11640 |
//
// 换长1.3A
// |---------------------------------------------------|
// | |
// | | | |
// | | | |
// | |
// |---------------------------------------------------|
// |2530 | 8000 | |
// | 13060 |
//
// 换长1.3B(车号8066220~8066224)
// |---------------------------------------------------|
// | |
// | | | |
// | | | |
// | |
// |---------------------------------------------------|
// |1925 | 8650 | |
// | 12500 |
//
double zc,zj,bj; // 总长,轴距,边距
if (is_13==0){ zc=11640.0; zj=8700.0; bj=1470.0; } //换长1.2
else if(is_13==1){ zc=13060.0; zj=8000.0; bj=2530.0; } //换长1.3A
else if(is_13==2){ zc=12500.0; zj=8650.0; bj=1925.0; } //换长1.3B
else{
err(" 没有该换长 ");
}
for(int j=0;j<LIE;j++){
for(int i=0;i<HAN;i++){
m[j][i] =StrToInt( ((TEdit *)( ((TList *)(ll ->Items[j])) ->Items[i] ))->Text );
dlt_x[j][i]=StrToInt( ((TEdit *)( ((TList *)(ll3->Items[j])) ->Items[i] ))->Text );
d+= (double)m[j][i]*((x[j][i]+dlt_x[j][i])-zc/2)/(zj/2);
}
}
pzc=(int)d;
int bzz=StrToInt(e_bzz->Text);
if(bzz<=0){
Application->MessageBox(" 标准值 <= 0 ", NULL, MB_OK);
return;
}
for(int j=0;j<LIE;j++){
for(int i=0;i<HAN;i++){
pzl_q+=(double)m[j][i]*( (x[j][i]+dlt_x[j][i]) - bj ) / zj * (y[j][i]-1250.0)/746.5;
pzl_h+=(double)m[j][i]*( bj+zj-(x[j][i]+dlt_x[j][i])) / zj * (y[j][i]-1250.0)/746.5;
// pzl_q+=(double)m[j][i]*(x[j][i]-2530.0) /8000.0*(y[j][i]-1250.0)/746.5;
// pzl_h+=(double)m[j][i]*(10530.0-x[j][i])/8000.0*(y[j][i]-1250.0)/746.5;
}
}
pzl_q /= (bzz+pzc)/2;
pzl_h /= (bzz-pzc)/2;
if(fabs(pzl_q)<0.0001) pzl_q=0.0;
if(fabs(pzl_h)<0.0001) pzl_h=0.0;
l_pzc->Caption=pzc;
l_pzl_q->Caption=FloatToStrF( pzl_q,ffGeneral ,4,7);
l_pzl_h->Caption=FloatToStrF( pzl_h,ffGeneral ,4,7);
}
//---------------------------------------------------------------------------
void __fastcall Tform_cpzsetup::b_jsnewClick(TObject *Sender)
{
const int cols=StrToInt(e_cols->Text);
const int cc=StrToInt(e_long->Text);
const int zxjc=StrToInt(e_zxj->Text);
const int ck=2500;
const int zxjk=1493;
const int bzz=StrToInt(e_bzznew->Text);
e_cols->Text=cols;
e_long->Text=cc;
e_zxj->Text=zxjc;
if(cc<=0 || zxjc<=0 || ck<=0 || zxjk<=0 || bzz<=0 || cols<=0){
ShowMessage(" <=0 ");
return;
}
int pzc;
float pzl_q=0.0,pzl_h=0.0;
double tmp=0.0;
int m[20][4],x[20][4],y[20][4];
for(int i=0;i<cols;i++){
for(int j=0;j<4;j++){
get_mxy(m[i][j],x[i][j],y[i][j],sg_jsnew->Cells[i][j]);
sg_jsnew->Cells[i][j]=IntToStr(m[i][j])+","+IntToStr(x[i][j])+","+IntToStr(y[i][j]);
tmp+= 1.0*m[i][j]*(x[i][j]-cc/2.0)/(zxjc/2.0);
pzl_q+=1.0*m[i][j]*(x[i][j]-(cc-zxjc)/2.0)/zxjc*(y[i][j]-ck/2.0)/(zxjk/2.0);
pzl_h+=1.0*m[i][j]*((cc+zxjc)/2.0-x[i][j])/zxjc*(y[i][j]-ck/2.0)/(zxjk/2.0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -