📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <FileCtrl.hpp>
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// 0 1 2 3 4 5 6 7 8 9
AnsiString Type[10]={"正弦波","方波","三角波","扫频信号","调幅波","白噪声","冲击脉冲","窄带随机","窄带随机","瞬态随机"};
SignalList=new TList;
TSignal *Obj;
//默认为8个通道
Obj= new TSinSignal();
SignalList->Add(Obj);
Obj= new TRectSignal();
SignalList->Add(Obj);
Obj= new TTriSignal();
SignalList->Add(Obj);
Obj= new TScanSignal();
SignalList->Add(Obj);
Obj= new TAmSignal();
SignalList->Add(Obj);
Obj= new TNoiseSignal();
SignalList->Add(Obj);
Obj= new TPulseSignal();
SignalList->Add(Obj);
Obj= new TNarrowNoiseSignal();
SignalList->Add(Obj);
for (int i=0;i<9;i++)
{
Obj= new TSinSignal();
SignalList->Add(Obj);
}
CurSetChan=-1; //没有设置通道
for (int i=0;i<8;i++)
{
Obj=(TSignal *)SignalList->Items[i];
ChLabel[i]=new TLabel(GrbSignal);
ChLabel[i]->Parent=GrbSignal;
ChLabel[i]->Left=GrbSignal->Left+4;
ChLabel[i]->Top=GrbSignal->Top+16+i*30;
ChLabel[i]->Caption="CH"+IntToStr(i+1);
ChLabel[i]->Visible=true;
ChType[i]=new TComboBox(GrbSignal);
ChType[i]->Parent=GrbSignal;
ChType[i]->Left=GrbSignal->Left+4+25;
ChType[i]->Top=GrbSignal->Top+16+i*30;
ChType[i]->Width=70;
ChType[i]->Style=csDropDownList;
for (int j=0;j<8;j++)
{
ChType[i]->Items->Add(Type[j]);
}
ChType[i]->ItemIndex=Obj->ID;
ChType[i]->Tag=i;
ChType[i]->OnChange=ChTypeChange;
ChType[i]->OnEnter=ChTypeEnter;
ChType[i]->Visible=true;
}
for (int i=8;i<16;i++)
{
Obj=(TSignal *)SignalList->Items[i];
ChLabel[i]=new TLabel(GrbSignal);
ChLabel[i]->Parent=GrbSignal;
ChLabel[i]->Left=GrbSignal->Left+4+110;
ChLabel[i]->Top=GrbSignal->Top+16+(i-8)*30;
ChLabel[i]->Caption="CH"+IntToStr(i+1);
ChLabel[i]->Visible=true;
ChType[i]=new TComboBox(GrbSignal);
ChType[i]->Parent=GrbSignal;
ChType[i]->Left=GrbSignal->Left+4+135;
ChType[i]->Top=GrbSignal->Top+16+(i-8)*30;
ChType[i]->Width=70;
ChType[i]->Style=csDropDownList;
for (int j=0;j<8;j++)
{
ChType[i]->Items->Add(Type[j]);
}
ChType[i]->ItemIndex=Obj->ID;
ChType[i]->Tag=i;
ChType[i]->OnChange=ChTypeChange;
ChType[i]->OnEnter=ChTypeEnter;
ChType[i]->Visible=true;
}
AnsiString file= ExtractFilePath(Application->ExeName)+"system.ini";
TIniFile *pIniFile = new TIniFile(file);
EdtSavePath->Text=pIniFile->ReadString("信号源", "SavePath", "d:\\data");
EdtSaveName->Text=pIniFile->ReadString("信号源", "SaveName", "test");
CmbTestNo->ItemIndex=pIniFile->ReadInteger("信号源", "TestNo", 1)-1;
EdtSpeed->Text=pIniFile->ReadString("信号源", "Speed", "1000");
EdtLength->Text=pIniFile->ReadString("信号源", "Length", "1");
CmbMaxChannel->ItemIndex=pIniFile->ReadInteger("信号源", "MaxChannel", 4)-1;
delete pIniFile;
}
void __fastcall TForm1::ChTypeEnter(TObject *Sender)
{
TSignal *Obj;
int type=PgcType->ActivePageIndex;
Update(CurSetChan,type);
CurSetChan=((TComboBox *)Sender)->Tag;
type=((TComboBox *)Sender)->ItemIndex;
PgcType->ActivePageIndex=type;
Obj = (TSignal *) SignalList->Items[CurSetChan];
if (type==0) //当前选择是正弦波
{
TxtSinAmp->Text=FloatToStrF(((TSinSignal *) Obj)->Amp,2,6,2);
TxtSinFreq->Text=FloatToStrF(((TSinSignal *) Obj)->Freq,2,6,2);
TxtSinPhase->Text=FloatToStrF(((TSinSignal *) Obj)->Phase,2,6,2);
TxtSinRatio->Text=FloatToStrF(((TSinSignal *) Obj)->Ratio,2,6,2);
}
else if (type==1)
{
TxtRectAmp->Text=FloatToStrF(((TRectSignal *) Obj)->Amp,2,6,2);
TxtRectFreq->Text=FloatToStrF(((TRectSignal *) Obj)->Freq,2,6,2);
TxtRectRatio->Text=FloatToStrF(((TRectSignal *) Obj)->Ratio,2,6,2);
TxtRectPhase->Text=FloatToStrF(((TRectSignal *) Obj)->Phase,2,6,2);
}
else if (type==2)
{
TxtTriAmp->Text=FloatToStrF(((TTriSignal*) Obj)->Amp,2,6,2);
TxtTriFreq->Text=FloatToStrF(((TTriSignal *) Obj)->Freq,2,6,2);
TxtTriPhase->Text=FloatToStrF(((TTriSignal *) Obj)->Phase,2,6,2);
}
else if (type==3)
{
TxtScanAmp->Text=FloatToStrF(((TScanSignal*) Obj)->Amp,2,6,2);
TxtScanStartFreq->Text=FloatToStrF(((TScanSignal *) Obj)->StartFreq,2,6,2);
TxtScanStopFreq->Text=FloatToStrF(((TScanSignal *) Obj)->StopFreq,2,6,2);
TxtScanStartFreq->Text=FloatToStrF(((TScanSignal *) Obj)->StartFreq,2,6,2);
TxtScanTime->Text=FloatToStrF(((TScanSignal *) Obj)->ScanTime,2,6,2);
RdgScanMode->ItemIndex=((TScanSignal *) Obj)->ScanMode;
}
else if (type==4)
{
TxtAmAmp->Text=FloatToStrF(((TAmSignal*) Obj)->Amp,2,6,2);
TxtAmCarrierFreq->Text=FloatToStrF(((TAmSignal *) Obj)->CarrierFreq,2,6,2);
TxtAmSignalFreq->Text=FloatToStrF(((TAmSignal *) Obj)->SignalFreq,2,6,2);
}
else if (type==5)
{
TxtNoiseAmp->Text=FloatToStrF(((TNoiseSignal*) Obj)->Amp,2,6,2);
TxtNoiseFangCha->Text=FloatToStrF(((TNoiseSignal*) Obj)->FangCha,2,6,2);
}
else if (type==6)
{
TxtPulseAmp->Text=FloatToStrF(((TPulseSignal*) Obj)->Amp,2,6,2);
TxtPulseWidth->Text=FloatToStrF(((TPulseSignal*) Obj)->PulseWidth,2,6,4);
CmbPulseType->ItemIndex=((TPulseSignal*) Obj)->Type;
}
else if (type==7)
{
TxtNarrowNoiseAmp->Text=FloatToStrF(((TNarrowNoiseSignal*) Obj)->Amp,2,6,2);
TxtNarrowNoiseFangCha->Text=FloatToStrF(((TNarrowNoiseSignal*) Obj)->FangCha,2,6,2);
TxtNarrowNoiseStartFreq->Text=FloatToStrF(((TNarrowNoiseSignal*) Obj)->StartFreq,2,6,4);
TxtNarrowNoiseStopFreq->Text=FloatToStrF(((TNarrowNoiseSignal*) Obj)->StopFreq,2,6,4);
}
}
void __fastcall TForm1::ChTypeChange(TObject *Sender)
{
TSignal *Obj;
int type=PgcType->ActivePageIndex;
Update(CurSetChan,type);
CurSetChan=((TComboBox *)Sender)->Tag;
type=((TComboBox *)Sender)->ItemIndex;
PgcType->ActivePageIndex=type;
Obj = (TSignal *) SignalList->Items[CurSetChan];
if (Obj->ID!=type) //没有改变信号类型,将信号的参数填上
{
if (type==0)
Obj=new TSinSignal();
else if (type==1)
Obj=new TRectSignal();
else if (type==2)
Obj=new TTriSignal();
else if (type==3)
Obj=new TScanSignal();
else if (type==4)
Obj=new TAmSignal();
else if (type==5)
Obj=new TNoiseSignal();
else if (type==6)
Obj=new TPulseSignal();
else if (type==7)
Obj=new TNarrowNoiseSignal();
}
if (type==0)
{
TxtSinAmp->Text=FloatToStrF(((TSinSignal *) Obj)->Amp,2,6,2);
TxtSinFreq->Text=FloatToStrF(((TSinSignal *) Obj)->Freq,2,6,2);
TxtSinPhase->Text=FloatToStrF(((TSinSignal *) Obj)->Phase,2,6,2);
TxtSinRatio->Text=FloatToStrF(((TSinSignal *) Obj)->Ratio,2,6,2);
}
else if (type==1)
{
TxtRectAmp->Text=FloatToStrF(((TRectSignal *) Obj)->Amp,2,6,2);
TxtRectFreq->Text=FloatToStrF(((TRectSignal *) Obj)->Freq,2,6,2);
TxtRectRatio->Text=FloatToStrF(((TRectSignal *) Obj)->Ratio,2,6,2);
TxtRectPhase->Text=FloatToStrF(((TRectSignal *) Obj)->Phase,2,6,2);
}
else if (type==2)
{
TxtTriAmp->Text=FloatToStrF(((TTriSignal*) Obj)->Amp,2,6,2);
TxtTriFreq->Text=FloatToStrF(((TTriSignal *) Obj)->Freq,2,6,2);
TxtTriPhase->Text=FloatToStrF(((TTriSignal *) Obj)->Phase,2,6,2);
}
else if (type==3)
{
TxtScanAmp->Text=FloatToStrF(((TScanSignal*) Obj)->Amp,2,6,2);
TxtScanStartFreq->Text=FloatToStrF(((TScanSignal *) Obj)->StartFreq,2,6,2);
TxtScanStopFreq->Text=FloatToStrF(((TScanSignal *) Obj)->StopFreq,2,6,2);
TxtScanStartFreq->Text=FloatToStrF(((TScanSignal *) Obj)->StartFreq,2,6,2);
TxtScanTime->Text=FloatToStrF(((TScanSignal *) Obj)->ScanTime,2,6,2);
RdgScanMode->ItemIndex=((TScanSignal *) Obj)->ScanMode;
}
else if (type==4)
{
TxtAmAmp->Text=FloatToStrF(((TAmSignal*) Obj)->Amp,2,6,2);
TxtAmCarrierFreq->Text=FloatToStrF(((TAmSignal *) Obj)->CarrierFreq,2,6,2);
TxtAmSignalFreq->Text=FloatToStrF(((TAmSignal *) Obj)->SignalFreq,2,6,2);
}
else if (type==5)
{
TxtNoiseAmp->Text=FloatToStrF(((TNoiseSignal*) Obj)->Amp,2,6,2);
TxtNoiseFangCha->Text=FloatToStrF(((TNoiseSignal*) Obj)->FangCha,2,6,2);
}
else if (type==6)
{
CmbPulseType->ItemIndex=((TPulseSignal*) Obj)->Type;
TxtPulseAmp->Text=FloatToStrF(((TPulseSignal*) Obj)->Amp,2,6,2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -