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

📄 usbad1.cpp

📁 该软件能够对振动信号进行采集并同时进行频谱分析
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "usbad1.h"
#include "cbw.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TUsbad *Usbad;

float S[2410],S1[2410],X[2410],X0[2410];
float W[1210][2410];W1[1210][2410];

int k0=0,Max,Maxf,Py=0,Qc=50,Qc1=1200;
int i=0,tao,fz,Moni=0,Sav=0,ch=0,hf=0;
double  c1,c2,c3,c4,c5,c30,c31,pj,sp,Zroe=200,At=0,Af=8000,mm=0,Pz;

 int Row,Col,j,k,k1,n;
        int Row2,Col2;
    int BoardNum = 0;
  //  int UDStat = 0;
     int ULStat = 0;
  //  int Chan=0;


    int LowChan = 0;
    int HighChan =0;
    int Gain =BIP5VOLTS  ;//BIP5VOLTS  ;//BIP10VOLTS ;  //  BIPPT005VOLTS
    long Count = 2400;

    long Rate = 9600;    //  long Rate = 3125;
    WORD ADData[2450];

    WORD DataValue = 0;
    //    float    EngUnits;
       unsigned Options;
        float    RevLevel = (float)CURRENTREVNUM;

//---------------------------------------------------------------------------
__fastcall TUsbad::TUsbad(TComponent* Owner)
        : TForm(Owner)
{
  Edit2->Text=Rate;

      for(k=0;k<1200;k++){
       for(n=1;n<2400;n++){
           W[k][n]=-(cos(2*3.1415926*k*n/2400.0)+sin(2*3.1415926*k*n/2400.0));
       }
    }


      for(k=0;k<1200;k++){
         for(n=1;n<2400;n++){
           W1[k][n]=(cos(2*3.1415926*k*n/2400.0)+sin(2*3.1415926*k*n/2400.0));
       }
    }

     
   Edit5->Text=Zroe;
   Edit11->Text=Py;

 // Chart2->BottomAxis->;

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

void __fastcall TUsbad::Button1Click(TObject *Sender)
{
    Timer1->Enabled=true;




}
//---------------------------------------------------------------------------
void __fastcall TUsbad::Timer1Timer(TObject *Sender)
{


  ch=StrToInt(Edit6->Text);
 if(ch==0){   LowChan = 0;   HighChan =0; }
  if(ch==1){   LowChan = 1;   HighChan =1; }
 if(ch==2){   LowChan = 2;   HighChan =2; }
  if(ch==3){   LowChan = 3;   HighChan =3; }


    Edit6->Text=LowChan;

 /*   ULStat = cbDeclareRevision(&RevLevel);
    cbErrHandling (PRINTALL, DONTSTOP);

    Options = CONVERTDATA;
    ULStat = cbAInScan (BoardNum, LowChan, HighChan, Count, &Rate,
                                         Gain, ADData, Options);
      */
   pj=0;
  for(i=0;i<2400;i++){ pj+=ADData[i]-32768.0;  } // 32786
    Edit1->Text=pj/2400.0;
  for(i=0;i<2400;i++){

     if(Moni==0){S[i]=(ADData[i]-32768-pj/2400.0)-Zroe;

     }

   }


    //=============数据回放==================================

   if(Moni==1){
         for(i=0;i<2400;i++){
         S[i]=Table1->FieldValues["立管压力"];
         if(Table1->Eof){Moni=0 ;Timer1->Enabled=false;    }

         else {Table1->MoveBy(1); }

       }
   }

    //=============保存数据==================================

   if(Sav==1){
     for(i=0;i<2400;i++){
     Table1->Append();
     Table1->FieldValues["立管压力"]=S[i];
     Table1->Post();
     }
   }



   k=1;
   for(n=0;n<2400;n++){
   S[n]=10000*cos(2*3.1415926*k*n/240.0)+10000*cos(2*3.1415926*k*n/24.0) ;
    }
    
//===========================================
    for(k=0;k<1200;k++){
    c3=0;
        for(n=1;n<2400;n++){
        c3+=S[n]*W[k][n];
        sp+=abs(S[n]);
      }
      if(c3<0){c3=-1*c3;}

       X[k]=c3/2400;
      sp=sp/2400.0 ;
    }
//=========================================================


 Qc=StrToInt(Edit12->Text);
  Qc1=StrToInt(Edit14->Text);
   for(k=0;k<Qc;k++){

       X[k]=0;
    }
  for(k=Qc1;k<1200;k++){

       X[k]=0;
    }


//===========================================

  // X[500]=10000;
         for(n=1;n<2400;n++){

           c3=0;
           for(k=0;k<1200;k++){
           c3+=X[k]*W1[k][n];

      }
     // if(c3<0){c3=-1*c3;}

     S1[n]=c3/2400.0;

    // S1[n]=(S[n]+8000)*(8000+c3/2400.0)/3600.0;






    }
  /*
  for(n=1;n<800;n++){
    mm=S1[n];
    if(mm<10){tao=n-1;goto EN;}

  }
EN:
 Edit15->Text=tao;
 At=S1[tao*4+2];
if(tao==0) {tao=1;}
k=1;

  for(n=1;n<2400;n++){
    S1[n]=At*sin(2*3.1415926*k*n/(tao*4)) ;;

  }
     */
//=========================================================
   Qc=StrToInt(Edit12->Text);
  Qc1=StrToInt(Edit14->Text);
   for(k=0;k<Qc;k++){

       X[k]=0;
    }
  for(k=Qc1;k<1200;k++){

       X[k]=0;
    }
//===========================================
/*    for(k=0;k<1200;k++){
    c3=0;
        for(n=1;n<2400;n++){
        c3+=S1[n]*W[k][n];

      }
      if(c3<0){c3=-1*c3;}

       X[k]=c3;

    }
//=========================================================

    */



   Py=StrToInt(Edit11->Text);
   for(k=0;k<1200;k++){

      X0[k]=X[k+Py];


    }





        k0++;
        if(k0>=2400){k0=0;}



    Series1->Clear();
    Series2->Clear();
  //    Series3->Clear();
      Series4->Clear();
      k1=0;//+1;
     for(k=0;k<2400;k++){
           if(k1==2400){k1=0;}
       if(CheckBox1->Checked==true){Series1->Add(S1[k1]*2400,1,clBlue);}
       if(CheckBox2->Checked==true){Series2->Add(S[k1],4,RGB(255,50,0));}
   //    if(CheckBox1->Checked==true){Series3->Add(W[k1]*10,1,RGB(0,255,0));}
       if(CheckBox3->Checked==true){Series4->Add(X0[k1],1,RGB(255,0,0));}
         k1++;
    }

   Max=0;    Maxf=0;
     for(k=0;k<2400;k++){
     if(S[k]>Max){Max=S[k];}
     }


     for(k=0;k<1200;k++){

     if(X[k]>Maxf){Maxf=X[k];fz=k;Pz=X[k];}
   }

    Edit13->Text=Pz;
    Edit3->Text=fz*Rate/Count;
    Edit4->Text=Max-Zroe;

     Edit10->Text=Table1->RecNo;

     //=============保存数据==================================
 // Pz=StrToInt(Edit13->Text);
   if(Sav==1){

     Table2->Append();
     Table2->FieldValues["立管压力"]=Pz;
     Table2->Post();
    }






  if(hf==1){ Timer1->Enabled=false;     }
  if(hf==0) {Timer1->Enabled=true; }

}
//---------------------------------------------------------------------------
void __fastcall TUsbad::Button2Click(TObject *Sender)
{

     Timer1->Enabled=false;

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

void __fastcall TUsbad::ScrollBar1Change(TObject *Sender)
{
   Rate =ScrollBar1->Position;
   Edit2->Text=Rate;
}
//---------------------------------------------------------------------------



void __fastcall TUsbad::ScrollBar2Change(TObject *Sender)
{
      Zroe =ScrollBar2->Position;
   Edit5->Text=Zroe;
}
//---------------------------------------------------------------------------

void __fastcall TUsbad::Button3Click(TObject *Sender)
{

  Moni=0;
}
//---------------------------------------------------------------------------

void __fastcall TUsbad::Button4Click(TObject *Sender)
{
  
    if(Sav==1){Sav=0;Button4->Caption="保存";}
  else {Sav=1;Button4->Caption="不存";}


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

void __fastcall TUsbad::Button5Click(TObject *Sender)
{
  hf=0;
  Table1->First();
   Moni=1;
}
//---------------------------------------------------------------------------


void __fastcall TUsbad::Button6Click(TObject *Sender)
{
    ch=0;
  
}
//---------------------------------------------------------------------------

void __fastcall TUsbad::Button7Click(TObject *Sender)
{
    ch=1;

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

void __fastcall TUsbad::ScrollBar3Change(TObject *Sender)
{
   At =ScrollBar3->Position;
   Edit7->Text=At;
   Chart1->LeftAxis->AutomaticMaximum=false;
   Chart1->LeftAxis->Maximum=At;
   Chart1->LeftAxis->Minimum=-At;


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


void __fastcall TUsbad::ScrollBar4Change(TObject *Sender)
{

     Af =ScrollBar4->Position;
   Edit8->Text=Af;
   Chart2->LeftAxis->AutomaticMaximum=false;
   Chart2->LeftAxis->Maximum=Af;
   Chart2->LeftAxis->Minimum=-Af;




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

void __fastcall TUsbad::Button8Click(TObject *Sender)
{
   Chart2->LeftAxis->AutomaticMaximum=true;
   
}
//---------------------------------------------------------------------------

void __fastcall TUsbad::Button9Click(TObject *Sender)
{
//<<<<
  hf=1;
 Table1->MoveBy(-4800);
  if(hf==1){Timer1->Enabled=true;     }
 // else {hf=1;Timer1->Enabled=false;}

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

void __fastcall TUsbad::Button10Click(TObject *Sender)
{
//>>>>
 hf=1;
// Table1->MoveBy(2400);
  if(hf==1){ Timer1->Enabled=true;     }
//  else {hf=1;Timer1->Enabled=false;}

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


void __fastcall TUsbad::Edit9Change(TObject *Sender)
{


          BoardNum=StrToInt(Edit9->Text);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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