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

📄 cpzsetup.cpp

📁 数据采集
💻 CPP
📖 第 1 页 / 共 2 页
字号:

//---------------------------------------------------------------------------
#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 + -