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

📄 unit1.cpp

📁 主要用于采样数据的接收
💻 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 + -