📄 jtcsfs1.cpp
字号:
//---------------------------------------------------------------------------
#include <math.h>
#include <vcl.h>
#pragma hdrstop
#include "jtcsfs1.h"
#include "usb_AD\usbad1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float e = 2.718281828459,pi=3.1415926,alf=0.5e-5,tp,Ap;
float Pli[810],Pli1[810],Rxx[810],spy1[810],spy2[810],spy3[810],rt[810],n[810],n1[810],n2[810],Wb[810],Vb[810];
int i=0,k1=0,fc;//=100000;
int BoardNum = 0;
int ULStat = 0;
int LowChan = 2;
int HighChan =2;
int Gain = BIP10VOLTS;
long Count = 1000;
long Rate = 8000; // long Rate = 3125;
WORD ADData[1100];
unsigned Options;
float RevLevel = (float)CURRENTREVNUM;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
alf=0.00005;
tp=alf/(2*sqrt(pi));
Ap=sqrt(2/alf);
fc=1/(2*tp*pi);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int k=0,j,t,tao;
int Tf=100,tc=10,kc=15,dj=0,Ns=2,dn=0;
float t1,c3,c30,c31,c4;
int ts;
int C[10],d[24];
C[0]=2;C[1]=3;C[2]=4;C[3]=5;C[4]=2;
C[5]=2;C[6]=2;C[7]=2;C[8]=2;C[9]=2;
//// alf=0.5e-5;
tp=alf/(2*sqrt(pi));
Ap=sqrt(2/alf);
fc=1/(2*tp*pi);
Edit1->Text=fc;
for(j=0;j<24;j++){
d[j]=0;
}
if(Edit5->Text=="")Edit5->Text=0;
dj=StrToInt(Edit5->Text);
d[0]=dj&8; d[0]>>=3;
d[1]=dj&4; d[1]>>=2;
d[2]=dj&2; d[2]>>=1;
d[3]=dj&1; //d[3]>>=0
Edit6->Text=d[0]; Edit7->Text=d[1]; Edit8->Text=d[2]; Edit9->Text=d[3];
for(j=0;j<800;j++){
spy1[j]=0;
spy2[j]=0;
spy3[j]=0;
}
for(j=0;j<8;j++){
t=j*Tf+C[j]*tc;
for(ts=-5;ts<5;ts++){
spy1[t+ts]=Ap;
}
}
for(j=0;j<8;j++){
dn=j/Ns;
t=j*Tf+C[j]*tc+kc*d[dn];
for(ts=-20;ts< 20;ts++){
// t1=ts*(2*alf*pi);
t1=2*alf*pi*ts/40.0;
// spy2[t+ts]=2*sqrt(e)*Ap*pi*(ts/1000000.0)*fc*exp(-2*(pi*ts/1000000.0*fc)*(pi*ts*fc/1000000.0));
spy2[t+ts]=2*sqrt(e)*Ap*pi*t1*fc*exp(-2*(pi*t1*fc)*(pi*t1*fc));
// Pli[t+ts]=2*sqrt(e)*Ap*pi*t1*fc*exp(-2*(pi*t1*fc)*(pi*t1*fc));
}
}
for(i=0;i<800;i++){
// Pli[i]=2000*sin(i/10.0);
Pli[i]=2*(rand()%1000);
}
tao=0; i=0; c4=1; c3=0; c30=0;c31=0;
for(i=0;i<800;i++){
for(k=1;k<800;k++){
tao=k-i;
if(i>k)tao=800-i;
Pli1[k]=spy2[tao];
c3+=spy2[k]*Pli1[k];
c30+=spy2[k]*spy2[k];
c31+=spy2[k]*spy2[k];
}
c4=sqrt(c30*c31);
if(c4==0)c4=1;
// Rxx[i]=c3/(c30*c31);
Rxx[i]=c3/sqrt(c30*c31);
}
//====================动态曲线显示============
i++;
if(i>=800){i=0;}
Series1->Clear();
Series2->Clear();
Series3->Clear();
k1=i+1;
for(k=0;k<800;k++){
// if(CheckBox1->Checked==true){Series1->Add(spy1[k],1,clRed);}
if(CheckBox1->Checked==true){Series1->Add(Pli[k],1,clRed);}
if(CheckBox2->Checked==true){Series2->Add(spy2[k],5,RGB(0,255,0));}
if(CheckBox3->Checked==true){Series3->Add((Rxx[k]),5,clYellow);}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
int k=0,j,t,f;
int Tf=100,tc=10,kc=15,dj=0,Ns=2,dn=0;
float A=1,Ak=1,H,rd,nr=1.0,As=1.0,nn=10.0,w=1,pp=0,t2;
int ts;
int C[10],d[24],Hd[24];
C[0]=2;C[1]=3;C[2]=4;C[3]=5;C[4]=2;
C[5]=2;C[6]=2;C[7]=2;C[8]=2;C[9]=2;
// alf=0.5e-5;
tp=alf/(2*sqrt(pi));
Ap=sqrt(2/alf);
fc=1/(2*tp*pi);
Edit18->Text=2*alf*pi;
Edit1->Text=fc;
Label8->Caption=Ap;
if(Edit15->Text=="")Edit15->Text=1;
Ak=StrToFloat(Edit15->Text);
if(Edit16->Text=="")Edit16->Text=1;
nr=StrToFloat(Edit16->Text);
if(Edit17->Text=="")Edit17->Text=1;
As=StrToFloat(Edit17->Text);
if(Edit19->Text=="")Edit19->Text=1;
w=StrToFloat(Edit19->Text);
if(Edit20->Text=="")Edit20->Text=1;
pp=StrToFloat(Edit20->Text);
if(Edit21->Text=="")Edit21->Text=0.5e-5;
alf=StrToFloat(Edit21->Text);
if(CheckBox10->Checked==true){pp=100*((rand()%10)/10.0-0.5);}
for(j=0;j<24;j++){
d[j]=0;
}
for(j=0;j<800;j++){
rt[j]=0;
n[j]=nr*(rand()%100);
if(CheckBox9->Checked==false){n[j]=0;}
// n1[j]=As*sin(pp+j/w);
if(CheckBox8->Checked==false){n1[j]=0;}
n2[j]=As*sin(2*pi+pp+j/(w));
// n2[j]=As*sin(40+pp+j/(w+80));
if(CheckBox8->Checked==false){n2[j]=0;}
Wb[j]=0;
Vb[j]=0;
spy3[j] =0;
Edit4->Text=n[j];
}
A=Ap*Ak;
Label13->Caption=A;
for(j=0;j<800;j++){
rt[j]=Ak*spy2[j]+n[j]+n1[j]+n2[j];
}
for(j=0;j<8;j++){
t=j*Tf+C[j]*tc;
for(ts=-20;ts<20;ts++){
// t2=ts/100000.0;
t2=2*alf*pi*ts/40.0;
// Wb[t+ts]=2*sqrt(e)*A*pi*(ts/100000.0)*fc*exp(-2*(pi*ts/100000.0*fc)*(pi*ts*fc/100000.0));
Wb[t+ts]=2*sqrt(e)*A*pi*t2*fc*exp(-2*(pi*t2*fc)*(pi*t2*fc));
Vb[t+ts]=Wb[t+ts]-Wb[t+ts-kc];
}
}
//==============USB-AD==============
ULStat = cbDeclareRevision(&RevLevel);
cbErrHandling (PRINTALL, DONTSTOP);
Options = CONVERTDATA;
// ULStat = cbAInScan (BoardNum, LowChan, HighChan, Count, &Rate,
ULStat = cbAInScan (BoardNum, LowChan, HighChan, Count, &Rate,
Gain, ADData, Options);
//=========================
for(k=0;k<kc;k++){
Vb[k]=0;
}
rd=0;
Hd[0]=0; Hd[1]=0; Hd[2]=0; Hd[3]=0;
for(k=0;k<4;k++){
H=0;
for(j=k*2*Tf;j<k*2*Tf+2*Tf;j++){
H+=rt[j]*Vb[j];
Edit2->Text=H;
}
if(H<0)Hd[k]=1;
if(H>=0)Hd[k]=0;
}
Edit11->Text=Hd[0]; Edit12->Text=Hd[1]; Edit13->Text=Hd[2]; Edit14->Text=Hd[3];
Hd[0]<<=3;
Hd[1]<<=2;
Hd[2]<<=1;
Hd[3]<<=0;
rd= Hd[0]+Hd[1]+Hd[2]+Hd[3];
Edit10->Text=rd;
//====================动态曲线显示============
i++;
if(i>=800){i=0;}
Series4->Clear();
Series5->Clear();
Series6->Clear();
Series7->Clear();
k1=i+1;
for(k=0;k<800;k++){
if(CheckBox4->Checked==true){Series4->Add(rt[k],1,clRed);}
if(CheckBox5->Checked==true){Series5->Add(Vb[k],5,RGB(0,255,0));}
if(CheckBox6->Checked==true){Series6->Add((Wb[k]),1,RGB(0,0,255));}
if(CheckBox7->Checked==true){Series7->Add((spy1[k]),1,RGB(255,255,0));}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -