📄 main.cpp
字号:
TxtPulseWidth->Text=FloatToStrF(((TPulseSignal*) Obj)->PulseWidth,2,6,4);
}
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::Update(int chan,int type) //取值
{
TSignal *Obj;
if (chan!=-1)
{
Obj=(TSignal *) SignalList->Items[CurSetChan];
Obj->Free();
SignalList->Delete(CurSetChan);
if (type==0)
{
Obj = new TSinSignal();
((TSinSignal *) Obj)->Amp = StrToFloat(TxtSinAmp->Text);
((TSinSignal *) Obj)->Freq = StrToFloat(TxtSinFreq->Text);
((TSinSignal *) Obj)->Phase= StrToFloat(TxtSinPhase->Text);
((TSinSignal *) Obj)->Ratio= StrToFloat(TxtSinRatio->Text);
SignalList->Insert(CurSetChan, Obj);
}
else if (type==1)
{
Obj = new TRectSignal();
((TRectSignal *) Obj)->Amp =StrToFloat(TxtRectAmp->Text);
((TRectSignal *) Obj)->Freq =StrToFloat(TxtRectFreq->Text);
((TRectSignal *) Obj)->Ratio =StrToFloat(TxtRectRatio->Text);
((TRectSignal *) Obj)->Phase=StrToFloat(TxtRectPhase->Text);
SignalList->Insert(CurSetChan, Obj);
}
else if (type==2)
{
Obj = new TTriSignal();
((TTriSignal *) Obj)->Amp =StrToFloat(TxtTriAmp->Text);
((TTriSignal *) Obj)->Freq =StrToFloat(TxtTriFreq->Text);
((TTriSignal *) Obj)->Phase=StrToFloat(TxtTriPhase->Text);
SignalList->Insert(CurSetChan, Obj);
}
else if (type==3)
{
Obj = new TScanSignal();
((TScanSignal *) Obj)->Amp =StrToFloat(TxtScanAmp->Text);
((TScanSignal *) Obj)->StartFreq =StrToFloat(TxtScanStartFreq->Text);
((TScanSignal *) Obj)->StopFreq =StrToFloat(TxtScanStopFreq->Text);
((TScanSignal *) Obj)->ScanTime=StrToFloat(TxtScanTime->Text);
((TScanSignal *) Obj)->ScanMode=RdgScanMode->ItemIndex;
SignalList->Insert(CurSetChan, Obj);
}
else if (type==4)
{
Obj = new TAmSignal();
((TAmSignal *) Obj)->Amp =StrToFloat(TxtAmAmp->Text);
((TAmSignal *) Obj)->CarrierFreq =StrToFloat(TxtAmCarrierFreq->Text);
((TAmSignal *) Obj)->SignalFreq=StrToFloat(TxtAmSignalFreq->Text);
SignalList->Insert(CurSetChan, Obj);
}
else if (type==5)
{
Obj = new TNoiseSignal();
((TNoiseSignal *) Obj)->Amp =StrToFloat(TxtNoiseAmp->Text);
((TNoiseSignal *) Obj)->FangCha =StrToFloat(TxtNoiseFangCha->Text);
SignalList->Insert(CurSetChan, Obj);
}
else if (type==6)
{
Obj = new TPulseSignal();
((TPulseSignal *) Obj)->Type =CmbPulseType->ItemIndex;
((TPulseSignal *) Obj)->Amp =StrToFloat(TxtPulseAmp->Text);
((TPulseSignal *) Obj)->PulseWidth =StrToFloat(TxtPulseWidth->Text);
SignalList->Insert(CurSetChan, Obj);
}
else if (type==7)
{
Obj = new TNarrowNoiseSignal();
((TNarrowNoiseSignal *) Obj)->Amp =StrToFloat(TxtNarrowNoiseAmp->Text);
((TNarrowNoiseSignal *) Obj)->FangCha =StrToFloat(TxtNarrowNoiseFangCha->Text);
((TNarrowNoiseSignal *) Obj)->StartFreq =StrToFloat(TxtNarrowNoiseStartFreq->Text);
((TNarrowNoiseSignal *) Obj)->StopFreq =StrToFloat(TxtNarrowNoiseStopFreq->Text);
SignalList->Insert(CurSetChan, Obj);
}
}
}
void __fastcall TForm1::CmbMaxChannelChange(TObject *Sender)
{
int count=CmbMaxChannel->ItemIndex+1;
TSignal *Obj;
for (int i=0;i<count;i++)
{
Obj=(TSignal *)SignalList->Items[i];
Obj->Selected=true;
ChType[i]->Enabled=true;
}
for (int i=count;i<16;i++)
{
Obj=(TSignal *)SignalList->Items[i];
Obj->Selected=false;
ChType[i]->Enabled=false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
int type=PgcType->ActivePageIndex;
Update(CurSetChan,type);
int maxchannel=CmbMaxChannel->ItemIndex+1;
int count=CmbMaxChannel->ItemIndex+1;
TSignal *Obj;
for (int i=0;i<count;i++)
{
Obj=(TSignal *)SignalList->Items[i];
Obj->Selected=true;
ChType[i]->Enabled=true;
}
for (int i=count;i<16;i++)
{
Obj=(TSignal *)SignalList->Items[i];
Obj->Selected=false;
ChType[i]->Enabled=false;
}
ForceDirectories(EdtSavePath->Text);
AnsiString filename=EdtSavePath->Text+"\\"+EdtSaveName->Text+CmbTestNo->Text;
AnsiString file;
if(FileExists(filename + ".yec"))
{
bool overwrite =(MessageDlg("当前目录下的数据文件已存在,需要覆盖以前的数据吗? ",
mtInformation,
TMsgDlgButtons() << mbYes << mbNo,
0) == mrYes);
if (!overwrite) return;
}
int length=StrToInt(EdtLength->Text)*1024;
//写yec文件
FILE *filep = fopen((filename+".yec").c_str(), "w+");
fclose(filep);
TYecType *YecType=new TYecType();
TFileHead filehead;
filehead.ADBits=16;
filehead.ADFrom=-32768;
filehead.ADTo=32768;
filehead.VoltageFrom=-5000.0;
filehead.VoltageTo=5000.0;
filehead.Gain=1;
filehead.EU=1.0;
filehead.Price="mV";
filehead.TotalChan=maxchannel;
filehead.NonLinear="line";
filehead.ADGain=1;
filehead.ZeroValue=0;
filehead.Speed=StrToInt(EdtSpeed->Text);
filehead.DataLength=length;
short *data=new short[length];
for (int i=0;i<maxchannel;i++)
{
file=filename+"#"+IntToStr(i+1);
filehead.Chan=i;
Obj=(TSignal *)SignalList->Items[i];
Obj->SetLength(length);
Obj->Speed=StrToFloat(EdtSpeed->Text);
Obj->GetData();
short *shortdata=new short[length];
float minvalue=Obj->Data[0];
float maxvalue=Obj->Data[0];
float max;
for (int j=0;j<length;j++)
{
if (minvalue>Obj->Data[j]) minvalue=Obj->Data[j];
if (maxvalue<Obj->Data[j]) maxvalue=Obj->Data[j];
}
max=fabs(maxvalue);
if (max<fabs(minvalue)) max=fabs(minvalue);
max=max/0.9;
float bei=(filehead.ADTo-filehead.ADFrom)/2.0/max;
filehead.EU=bei*float(filehead.VoltageTo-filehead.VoltageFrom)/float(filehead.ADTo-filehead.ADFrom);
filep = fopen((file+".sts").c_str(), "w+");
fclose(filep);
for (int j=0;j<length;j++)
{
data[j]=short(Obj->Data[j]*bei);
}
YecType->AppendData(file,length,data); //sts file;
YecType->StopSaveData(file,filehead); //tsp file
}
delete []data;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
AnsiString Directory;
if (EdtSavePath->Text!="")
Directory = EdtSavePath->Text;
else
Directory="d:\data";
if(SelectDirectory("数据存放路径选择", WideString(""), Directory))
{
EdtSavePath->Text = Directory;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
AnsiString file= ExtractFilePath(Application->ExeName)+"system.ini";
TIniFile *pIniFile = new TIniFile(file);
pIniFile->WriteString("信号源", "SavePath", EdtSavePath->Text);
pIniFile->WriteString("信号源", "SaveName", EdtSaveName->Text);
pIniFile->WriteInteger("信号源", "TestNo", CmbTestNo->ItemIndex+1);
pIniFile->WriteString("信号源", "Speed", EdtSpeed->Text);
pIniFile->WriteString("信号源", "Length", EdtLength->Text);
pIniFile->WriteInteger("信号源", "MaxChannel",CmbMaxChannel->ItemIndex+1);
delete pIniFile;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -