📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "MSCommLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
#include "FFT.c"
#define NUM_FFT 64
unsigned char send_command;
bool sample_ok;
unsigned char sampleData;
unsigned char dataBuf[NUM_FFT];
float dataReal[NUM_FFT];
float dataImage[NUM_FFT];
unsigned char fftA[NUM_FFT];
unsigned int x,y;
bool analyStart;
bool ceshiStart;
int colorR,colorG,colorB;
int i,j;
int counter=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->Color=clSilver;
StatusBar1->SimpleText=
" 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
Form1->Image1->Canvas->Pen->Color=clOlive;
Form1->Image1->Canvas->Rectangle(0,0,514,130);
Form1->Image2->Canvas->Pen->Color=clAqua;
Form1->Image2->Canvas->Rectangle(0,0,514,130);
Form1->Button4->Enabled=false;
Form1->Button6->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
//Exit
Application->Terminate();
StatusBar1->SimpleText="退出... 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Config com1
StatusBar1->SimpleText="配置串口1... 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
MSComm1->CommPort=1; //serial comm 1
MSComm1->InBufferSize=3000;
MSComm1->OutBufferSize=10;
if(MSComm1->PortOpen==true) MSComm1->PortOpen=false;
MSComm1->Break=false;
MSComm1->Handshaking=0;
MSComm1->InputMode=comInputModeBinary;
MSComm1->RThreshold=1;
MSComm1->SThreshold=0;
MSComm1->InputLen=0;
//采用数组接收数据的时候,建议此项=0,否则高速接收易丢数据
MSComm1->Settings="115200,n,8,1";
//串口数据速度及格式设定
//MSComm1->PortOpen = True;
send_command=0;
counter=0;
sample_ok=false;
analyStart=false;
ceshiStart=false;
Form1->Button1->Enabled=false;
StatusBar1->SimpleText="配置完成... 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
send_command=0x81;
OleVariant TxBuff=VarArrayCreate(OPENARRAY(int,(0,0)),varByte);
TxBuff.PutElement(send_command,0);
counter=0;
for(i=0;i<NUM_FFT;i++) dataBuf[i]=0;
MSComm1->PortOpen=true;
MSComm1->Output=TxBuff;
Form1->Button2->Enabled=false;
Form1->Button3->Enabled=false;
Form1->Button4->Enabled=true;
Timer1->Interval=10;
Timer1->Enabled=True;
StatusBar1->SimpleText="数据采集中... 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
send_command=0x80;
OleVariant TxBuff=VarArrayCreate(OPENARRAY(int,(0,0)),varByte);
TxBuff.PutElement(send_command,0);
counter=0;
for(i=0;i<NUM_FFT;i++) dataBuf[i]=0;
MSComm1->PortOpen=true;
MSComm1->Output=TxBuff;
Form1->Button2->Enabled=false;
Form1->Button3->Enabled=false;
Form1->Button4->Enabled=true;
Timer1->Interval=10;
Timer1->Enabled=True;
StatusBar1->SimpleText="数据采集中... 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
//Timer1->Enabled=False;
if(ceshiStart)
{
for(i=0;i<NUM_FFT;i++)
{
dataBuf[i]=random(256);
}
//SignalRect(NUM_FFT,16,dataBuf);
sample_ok=true;
counter=NUM_FFT;
}
if(sample_ok==false)
{
StatusBar1->SimpleText="数据采集失败... 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
}
else
{
sample_ok=false;
StatusBar1->SimpleText=
"数据成功采集... "+IntToStr(counter)+
" 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
}
for(i=0;i<counter;i++)
{
x=3+i*512/NUM_FFT;
y=130-2;
Form1->Image1->Canvas->MoveTo(x,y);
Form1->Image1->Canvas->Pen->Color=clWhite;
Form1->Image1->Canvas->LineTo(x,0);
Form1->Image1->Canvas->MoveTo(x,y);
Form1->Image1->Canvas->Pen->Color=clRed;
Form1->Image1->Canvas->LineTo(x,y-dataBuf[i]/2);
}
if(analyStart)
{
for(i=0;i<NUM_FFT;i++)
{
dataReal[i]=dataBuf[i];
dataImage[i]=0;
}
// FFT
FFT(dataReal,dataImage,NUM_FFT,0);
for(i=0;i<NUM_FFT;i++)
fftA[i]=sqrt(dataReal[i]*dataReal[i]+dataImage[i]*dataImage[i]);
for(i=0;i<NUM_FFT;i++)
{
x=3+i*512/NUM_FFT;
y=130-2;
Form1->Image2->Canvas->MoveTo(x,y);
Form1->Image2->Canvas->Pen->Color=clWhite;
Form1->Image2->Canvas->LineTo(x,0);
Form1->Image2->Canvas->MoveTo(x,y);
Form1->Image2->Canvas->Pen->Color=clNavy;
Form1->Image2->Canvas->LineTo(x,y-fftA[i]/2);//
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{
StatusBar1->SimpleText=
"正在接收数据... 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
//Timer1->Enabled=false;
OleVariant s;
if(MSComm1->CommEvent==comEvReceive){
if(MSComm1->InBufferCount){
s=MSComm1->Input;
for(i=s.ArrayLowBound();i<s.ArrayHighBound()+1;i++){
sampleData=s.GetElement(i)*1;
StatusBar1->SimpleText=
"正在接收数据..."+IntToHex(sampleData,2)+" "+counter+
" 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
if(counter<NUM_FFT) dataBuf[counter++]=sampleData;
else
{
for(i=0;i<NUM_FFT-1;i++) dataBuf[i]=dataBuf[i+1];
dataBuf[NUM_FFT-1]=sampleData;
}
}
}
}
sample_ok=true;
if(send_command==0x81)
{
MSComm1->PortOpen=false;
Form1->Button2->Enabled=true;
Form1->Button3->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
send_command=0x00;
OleVariant TxBuff=VarArrayCreate(OPENARRAY(int,(0,0)),varByte);
TxBuff.PutElement(send_command,0);
counter=0;
for(i=0;i<NUM_FFT;i++) dataBuf[i]=0;
//MSComm1->PortOpen=true;
MSComm1->Output=TxBuff;
Timer1->Enabled=false;
StatusBar1->SimpleText="数据停止采集... 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
MSComm1->PortOpen=false;
Form1->Button2->Enabled=true;
Form1->Button3->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
analyStart=true;
Form1->Button5->Enabled=false;
Form1->Button6->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
analyStart=false;
Form1->Button6->Enabled=false;
Form1->Button5->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
StatusBar1->SimpleText=
" 综合课程设计演示系统 杨逾山&范逸风 联系:young_ys@163.com 2006年12月";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button9Click(TObject *Sender)
{
ceshiStart=true;
Form1->MSComm1->Enabled=false;
Form1->Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button10Click(TObject *Sender)
{
ceshiStart=false;
Form1->Timer1->Enabled=false;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -