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

📄 main.cpp

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


    //检测通道
  bool flag_bh=false; // 变化
  for(int i=1;i<JIN_SIZE;i++){
    if( jin_j1[0]!=jin_j1[i] || jin_j2[0]!=jin_j2[i] ||
        jin_z1[0]!=jin_z1[i] || jin_z2[0]!=jin_z2[i] ){
      flag_bh=true;
      break;
    }
  }

  static long bak_ofst=0,bb_cnt; // ofst不变 对数据来自串口
  if(bak_ofst!=jin_ofst){
    bb_cnt=0;
    bak_ofst=jin_ofst;
  }else bb_cnt++;

  if( bd.sj_mode!=0){
    if(bb_cnt>=2 ){
      wei_for_see->Font->Color=clRed;
      wei_for_see->Font->Size=14;
      wei_for_see->Caption="请开采集仪";
    }
  }else{
    if(bb_cnt>=2){
      wei_for_see->Font->Color=clRed;
      wei_for_see->Font->Size=14;
      wei_for_see->Caption="没有中断";
    }else if(flag_bh==false){ // 变化
      wei_for_see->Font->Color=clRed;
      wei_for_see->Font->Size=14;
      wei_for_see->Caption= "请开采集仪" ;//+IntToStr((int)bb_cnt);
    }
  }

  if(bd.hq_mode==HQ_2J1Z && bd.pb_mode==PB_WAVE){
    Label5->Caption=cnt_exit;
  }  
}
//---------------------------------------------------------------------------

void __fastcall Tform_main::create_getdatathread()
{
    getDataThread=new TGetdataThread;
    getDataThread->FreeOnTerminate=TRUE;
    if(getDataThread==NULL)
      Application->MessageBox("create getdatathread failed",NULL,MB_OK);
}

void __fastcall Tform_main::create_donthread()
{
    donThread=new TDonThread;
    donThread->FreeOnTerminate=TRUE;
    if(donThread==NULL)
      Application->MessageBox("create donthread failed",NULL,MB_OK);
}

void __fastcall Tform_main::create_lwthread()
{
    lwThread=new TLwThread;
    lwThread->FreeOnTerminate=TRUE;
    if(lwThread==NULL)
      Application->MessageBox("create lwthread failed",NULL,MB_OK);
}

void __fastcall Tform_main::StartDonClick(TObject *Sender)
{
  if(don_susp==true){
    collect_jinzero(); // 静态清零,调试时便于观察零点的变化
    flag_test=0;  // it is not test
    don_susp=FALSE;
    donThread->Resume();
    StartDon->Caption="退出动态称重Esc";
    //write_log("进入动态称重\n");
  }else{
    StartDon->Caption="进入动态称重 F5";
    don_susp=true;
    //write_log("手动退出动态称重\n");
    /*
    if(bd.yh_mode==YH_375){
      bd.hq_mode=HQ_CPZ24;
    } */
  }
}

/*
void __fastcall Tform_main::EndDonClick(TObject *Sender)
{
    don_susp=TRUE;
} */
//---------------------------------------------------------------------------


void __fastcall Tform_main::clearClick(TObject *Sender)
{

//          err(IntToStr((int)random(30)).c_str());
//          return;


  char msg[100];

  collect_jinzero();
  if(bd.hq_mode==HQ_STMBDG || bd.hq_mode==HQ_STMDG||bd.hq_mode==HQ_BDG3|| bd.hq_mode==HQ_NEWBDG){
    sprintf(msg,"  台面1零点AD值 = %ld   台面2零点AD值 = %ld  ",zero_jin1,zero_jin2);
  }else{
    sprintf(msg,"        零点AD值 = %ld       ",zero_jin);
  }
  Application->MessageBox(msg," ",MB_OK);

}
//---------------------------------------------------------------------------

void __fastcall Tform_main::collect_jinzero()
{
  long now_ad_j1,now_ad_z1,now_ad_j2,now_ad_z2;

  if(!flag_collect_over) return; //静态缓冲区里不都是有效数据,不清零

  get_ad_jin(&now_ad_j1,&now_ad_j2,&now_ad_z1,&now_ad_z2);

  if(bd.hq_mode==HQ_2J1Z){
    zero_jin=(now_ad_j1+now_ad_j2)/2*bd.k_j_z +now_ad_z1;
  }else if(bd.hq_mode==HQ_DG){
    if(bd.fx==1 && bd.pb_mode==PB_WAVE)//wave判别方向需2个重力通道
      zero_jin=(now_ad_z1+now_ad_z2)/2;
    else
      zero_jin=now_ad_z1;
  }else if(bd.hq_mode==HQ_BDG){
    if(bd.fx==1 && bd.pb_mode==PB_WAVE)//wave判别方向需2个重力通道
      zero_jin=now_ad_j1*bd.k_j_z +(now_ad_z1+now_ad_z2)/2;
    else
      zero_jin=now_ad_j1*bd.k_j_z +now_ad_z1;
  }else if(bd.hq_mode==HQ_CPZ){
    zero_jin=((now_ad_j1+now_ad_j2)*bd.k_j_z+now_ad_z1+now_ad_z2)/2;
  }else if(bd.hq_mode==HQ_STMDG){
    zero_jin1=now_ad_z1;
    zero_jin2=now_ad_z2;
    zero_jin=zero_jin1+zero_jin2;
  }else if(bd.hq_mode==HQ_STMBDG||bd.hq_mode==HQ_BDG3){
    zero_jin1=now_ad_j1*bd.k_j_z + now_ad_z1;
    zero_jin2=now_ad_j2*bd.k_j_z + now_ad_z2;
    zero_jin=zero_jin1+zero_jin2;
  }else  if(bd.hq_mode==HQ_NEWCPZ){
    long now_ad_j1,now_ad_z1;
    long now_ad_j2,now_ad_z2;
    long now_ad_j3,now_ad_z3;
    long now_ad_j4,now_ad_z4;
    long now_ad_j5;
    long now_ad_j6;
    long now_ad_j7;
    long now_ad_j8;
    get_ad_jin_newcpz(now_ad_j1,now_ad_j2,now_ad_z1,now_ad_z2,
                      now_ad_j3,now_ad_j4,now_ad_z3,now_ad_z4,
                      now_ad_j5,now_ad_j6,now_ad_j7,now_ad_j8 );

    zero_jin=( now_ad_j1+now_ad_j2+now_ad_j3+now_ad_j4+
               now_ad_j5+now_ad_j6+now_ad_j7+now_ad_j8 )/8*bd.k_j_z +
             ( now_ad_z1+now_ad_z2+now_ad_z3+now_ad_z4)/4;

  }else  if(bd.hq_mode==HQ_CPZ24){
    long adj[16],adz[8];
    long tmp_j,tmp_z,i;
    get_ad_jin_cpz24(adj,adz);
    for(i=0,tmp_j=0;i<16;i++) tmp_j+=adj[i];
    for(i=0,tmp_z=0;i<8; i++) tmp_z+=adz[i];
    zero_jin=tmp_j*bd.k_j_z/16+tmp_z/8;
  }else  if(bd.hq_mode==HQ_CPZGZ){
    long adj[16],adz[8];
    long tmp_j,tmp_z,i;
    get_ad_jin_cpz24(adj,adz);
    for(i=0,tmp_j=0;i<4;i++) tmp_j+=adj[i];
    for(i=0,tmp_z=0;i<2; i++) tmp_z+=adz[i];
    zero_jin=tmp_j*bd.k_j_z/2+tmp_z;
  }else  if(bd.hq_mode==HQ_NEWBDG){
    long adj[16],adz[8];
    get_ad_jin_cpz24(adj,adz);
    zero_jin1=(adj[0]+adj[1])/2*bd.k_j_z + now_ad_z1;
    zero_jin2=(adj[2]+adj[3])/2*bd.k_j_z + now_ad_z2;
    zero_jin=zero_jin1+zero_jin2;
  }else{err("collect_jin_zero()");}
}


void __fastcall Tform_main::setupClick(TObject *Sender)
{
  form_password->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall Tform_main::FormHide(TObject *Sender)
{
  Timer1->Enabled=FALSE;
  form_main_is_show=FALSE;
  dir->DisableConstraints();  // 为提高速度
  data->DisableConstraints();
  s_data->Enabled=false;
  s_dir->Enabled=false;
  if(dir->Active==true)  dir->Refresh();
  if(data->Active==true)  data->Refresh();
  dir->Close();
  dir->Open();
  dir->RecNo=dir_no;
  data->Close(); // be sure data is refresh
  if(data->Exists==true){ dataopen();}
}
//---------------------------------------------------------------------------

void __fastcall Tform_main::FormShow(TObject *Sender)
{
  flag_collect=1; //for getdata_thread
  Timer1->Enabled=TRUE;
  form_main_is_show=TRUE;

  dir->EnableConstraints();
  data->EnableConstraints();
  s_data->Enabled=true;
  s_dir->Enabled=true;

  dir->Open();
  dir->RecNo=dir_no;
  try{
    data->Active=false; // important if change tablename
    data->TableName=dirTm->Value;
    if(data->Exists==TRUE){ dataopen();}
  }catch(...){
    Application->MessageBox(" when main show, data open error "," ",MB_OK);
  }
}
//---------------------------------------------------------------------------

void __fastcall Tform_main::PrintClick(TObject *Sender)
{
  if(get_version()>4) return; //  win98=4 win2000=5,winxp=5

  //FILE *prn ;
  char title[60];
  double total_mao=0.0,total_jin=0.0,total_piao=0.0,total_yq=0.0;


  if( bd.use_status==USE_CPZJH ){
    TMsgDlgButtons buttons;
    buttons<<mbYes;
    buttons<<mbNo;
    if(MessageDlg("   打  印  吗 ?     ",mtConfirmation,buttons,0)==mrNo) return;

    //if((prn=fopen("PRN","wb"))==NULL){ err("open prn failed");return ;}
    if(prn==NULL){ err("open prn failed");return ;}
    fprintf(prn,"  %04s-%02s-%02s         %02s:%02s:%02s \n",
                    dirTm->Value.SubString(1,4).c_str(),
                    dirTm->Value.SubString(5,2).c_str(),
                    dirTm->Value.SubString(7,2).c_str(),
                    dirTm->Value.SubString(10,2).c_str(),
                    dirTm->Value.SubString(12,2).c_str(),
                    dirTm->Value.SubString(14,2).c_str()  );
    fprintf(prn,"-------------------------------------------------\n");
    for(data->First();data->Eof!=TRUE;data->Next()){
        int nn=  data->FindField("No")->AsInteger;
        int n1= (int)(data->FindField("N1")->Value*(double)1000.0);
        int n2= (int)(data->FindField("N2")->Value*(double)1000.0);
        int n3= (int)(data->FindField("N3")->Value*(double)1000.0);
        int n4= (int)(data->FindField("N4")->Value*(double)1000.0);
        int w1= (int)(data->FindField("W1")->Value*(double)1000.0);
        int w2= (int)(data->FindField("W2")->Value*(double)1000.0);
        int w3= (int)(data->FindField("W3")->Value*(double)1000.0);
        int w4= (int)(data->FindField("W4")->Value*(double)1000.0);
        int wei_q= dirDirect->Value=="-->" ? (w3+w4+n3+n4):(w1+w2+n1+n2);
        int wei_h= dirDirect->Value=="-->" ? (w1+w2+n1+n2):(w3+w4+n3+n4);
        int pzc  = wei_q - wei_h ;
        int wei  = (int)(data->FindField("Mao")->Value*(double)1000.0);//wei_q + wei_h ;
        int spd  = data->FindField("Spd")->AsInteger ;

        float y1= dirDirect->Value=="-->" ? (float(w1-n1)*100.0)/(w1+n1) : (float(n1-w1)*100.0)/(n1+w1);
        float y2= dirDirect->Value=="-->" ? (float(w2-n2)*100.0)/(w2+n2) : (float(n2-w2)*100.0)/(n2+w2);
        float y3= dirDirect->Value=="-->" ? (float(w3-n3)*100.0)/(w3+n3) : (float(n3-w3)*100.0)/(n3+w3);
        float y4= dirDirect->Value=="-->" ? (float(w4-n4)*100.0)/(w4+n4) : (float(n4-w4)*100.0)/(n4+w4);
        float yq= dirDirect->Value=="-->" ? (float(w3+w4-n3-n4)*100.0)/(w3+w4+n3+n4) :
                                            (float(n1+n2-w1-w2)*100.0)/(n1+n2+w1+w2) ;
        float yh= dirDirect->Value=="-->" ? (float(w1+w2-n1-n2)*100.0)/(w1+w2+n1+n2) :
                                            (float(n3+n4-w3-w4)*100.0)/(n3+n4+w3+w4) ;

        float yzc= dirDirect->Value=="-->" ? (float(w1+w2+w3+w4-n1-n2-n3-n4)*100.0)/wei :
                                             (float(n1+n2+n3+n4-w1-w2-w3-w4)*100.0)/wei ;

        int zuo1,zuo2,zuo3,zuo4;
        int you1,you2,you3,you4;
        //int qin,hou;
        double pzl1,pzl2,pzl3,pzl4;
        if(dirDirect->Value=="-->"){
              zuo1=w4;  you1=n4;  pzl1=y4;
              zuo2=w3;  you2=n3;  pzl2=y3;
              zuo3=w2;  you3=n2;  pzl3=y2;
              zuo4=w1;  you4=n1;  pzl4=y1;
        }else{
              zuo1=n1;  you1=w1;  pzl1=y1;
              zuo2=n2;  you2=w2;  pzl2=y2;
              zuo3=n3;  you3=w3;  pzl3=y3;
              zuo4=n4;  you4=w4;  pzl4=y4;
        }
        //qin=zuo1+zuo2+you1+you2;
        //hou=zuo3+zuo4+you3+you4;
        fprintf(prn,"序号: %d             总重: %d kg          速度:%d km/h\n",
                                                                          nn,wei,spd);
        fprintf(prn,"左轮重1: %d kg       左轮重2: %d kg       左轮重3: %d kg        左轮重4: %d kg\n",
                                                                        zuo1,zuo2,zuo3,zuo4);
        fprintf(prn,"右轮重1: %d kg       右轮重2: %d kg       右轮重3: %d kg        右轮重4: %d kg\n",
                                                                        you1,you2,you3,you4);
        fprintf(prn,"轴1 偏载率:%7.2f%c   轴2 偏载率:%7.2f%c   轴3 偏载率:%7.2f%c    轴4偏载率:%7.2f%c \n",
                                                                        pzl1,'%',pzl2,'%',pzl3,'%',pzl4,'%');
        fprintf(prn,"前架偏载率:%7.2f%c   后架偏载率:%7.2f%c   整车偏载率:%7.2f%c  \n",
                                                                        yq,'%',yh,'%',yzc,'%');
        fprintf(prn,"前架重: %d kg        后架重: %d kg        前后重量差: %d kg     重心偏差: %d mm \n",
                                                                        wei_q,wei_h,pzc,(int)(yzc*746.5/100));
        if(abs(pzc)>=bd.zpz*1000 || yzc*746.5/100>=bd.hpz){
          fprintf(prn,"偏载报警!!\n");
        }
        if(dataYq->Value>bd.cz){
          fprintf(prn,"超载报警!!\n");
        }
        fprintf(prn,"\n");
    }
    fprintf(prn,"-------------------------------------------------\n");
    fprintf(prn,"\n\n\n");
    //fclose(prn);
    return;
  }


  if(bd.yh_mode==YH_WG81){  // 武钢81#
    if(data->Active==TRUE){
      strcpy(title,bd.name);
      strcat(title,"轨道衡过衡报告单");
//      if((prn=fopen("PRN","wb"))!=NULL){
      if(prn!=NULL){
        fprintf(prn,"%60s\n\n",title);
        fprintf(prn,"%10s%4s%10s%8s%8s%8s%12s%6s\n"," ","序号","车号",
               "毛重","皮重","净重","货名","速度");
        fprintf(prn,"%10s------------------------------------------------------------\n"," ");
        for(data->First();data->Eof!=TRUE;data->Next()){
          fprintf(prn,"%10s%4s%10s%8.02f%8.02f%8.02f%12s%6d\n"," ",
               data->FindField("No")->AsString.c_str(),
               data->FindField("Cehao")->AsString.c_str(),
               data->FindField("Mao")->AsFloat,
               data->FindField("Pi")->AsFloat,
               data->FindField("Jin")->AsFloat,
               data->FindField("Name")->AsString.c_str(),
               data->FindField("Spd")->AsInteger );
          total_mao+=(double)(data->FindField("Mao")->AsFloat) ;
          total_jin+=(double)(data->FindField("Jin")->AsFloat) ;
        }
        fprintf(prn,"%10s------------------------------------------------------------\n"," ");
        fprintf(prn,"%10s日期_时间:%s                方向:%4s \n%10s毛重合计:%-8.2f    净重合计:%-8.2f    单位:吨\n ",
                     "",data->TableName.c_str(),
                     dir->FindField("Direct")->AsString.c_str() ,
                     "",total_mao,total_jin);
        fprintf(prn,"\n\n\n");
   

⌨️ 快捷键说明

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