📄 test.cpp
字号:
}
if( condition1 && condition2)
{
m_State = ACQUIRED;
gAcquiring = 0;
}
for(i = 0; i<CodeSpan; i++ )
{
out1<<setw(10)<<CodeHist[i];
}
out1.close();
m_AcqCount = 0;
delete [] CodeHist;
delete [] FreqHist;
}
out1.close();
m_AcqFreqSequence[m_AcqCount] = maxFreq;
m_AcqCodeSequence[m_AcqCount] = m_CodePhase;
AcquiringFlag = false;
}
void Channel::Tracking()
{
}
int ii=0;
long WINAPI ThreadTwo(long lParam)
{
ii++;
Channel *p = static_cast<Channel *>(pnt);
p->Acquisition();
ii--;
return 0;
}
void Channel::Run(const CSignal& _sig)
{
if(m_isActive == 0) return;
HANDLE hThread ;
DWORD dwID ;
DWORD dwRetVal = 0;
DWORD exitCode;
m_sig = _sig;
if( (m_State == ACTIVE ) && gAcquiring == 0 )
{
/*pnt = this;
hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadTwo,NULL,0,&dwID );
GetExitCodeThread(hThread,&exitCode);
if(exitCode != STILL_ACTIVE)
{
CloseHandle(hThread);
AcquiringFlag = false;
}*/
Acquisition();
}
if( m_State == TRACKING )
{
Tracking();
}
return;
}
//--------------------------------------------------------------------------------
// Receiver class implementation
class CReceiver{
public:
// Constructor and destructor
CReceiver(const settings& _mySetting):mySetting(_mySetting)
{
unsigned int n;
register int i, j;
n = (int)(_mySetting.Fs/(_mySetting.CodeFreq/_mySetting.CodeLength) + 0.5);
SamplesPerMs = n;
sig = CSignal(n);
for( i=0; i<32; i++)
{
CATable[i] = CACode(i+1).Resample(n/1023.0);
}
// myChannel = new Channel[mySetting.NumberOfChannels];
for( i=0; i<mySetting.NumberOfChannels; i++)
{
myChannel[i] = Channel(mySetting);
myChannel[i].SetChannelPara(mySetting);
myChannel[i].SetPRNNo(mySetting.PRNNoForChannel[i]);
}
int Bins = (int)(mySetting.acqSearchBand*2+1);
SinCarr = new CSignal[Bins];
CosCarr = new CSignal[Bins];
CodeFreqI = new CSignal*[32]; // total PRN # is 32
CodeFreqQ = new CSignal*[32]; // total PRN # is 32
SigAcqNonCoherent = new CSignal[Bins];
for( i=0; i<Bins; i++)
{
SigAcqNonCoherent[i] = CSignal(mySetting.acqSamples);
}
double *frqBins;
frqBins = new double[Bins];
for( i=0; i<Bins; i++ )
{
frqBins[i] = mySetting.IF + 0.5e3*( i - mySetting.acqSearchBand );
SinCarr[i] = Sine(frqBins[i], mySetting.Fs, 0, n).Resample(mySetting.acqSamples* 1.0/SamplesPerMs);
CosCarr[i] = Sine(frqBins[i], mySetting.Fs, 0.25, n).Resample(mySetting.acqSamples* 1.0/SamplesPerMs);
}
delete [] frqBins;
for(i=0; i<32; i++)
{
CodeFreqI[i] = new CSignal[Bins];
CodeFreqQ[i] = new CSignal[Bins];
}
for(i=0; i<32; i++)
{
CSignal sigtmp = CATable[i].Resample(mySetting.acqSamples* 1.0/n);
for(j=0; j<Bins; j++)
{
CodeFreqI[i][j] = sigtmp * SinCarr[j];
CodeFreqQ[i][j] = sigtmp * CosCarr[j];
fft(CodeFreqI[i][j], CodeFreqQ[i][j]);
}
}
};
~CReceiver()
{
delete [] SinCarr;
delete [] CosCarr;
for(int i=0; i<32; i++)
{
delete [] CodeFreqI[i];
delete [] CodeFreqQ[i];
}
delete [] CodeFreqI;
delete [] CodeFreqQ;
delete [] SigAcqNonCoherent;
//delete [] myChannel;
};
void Run();
private:
settings mySetting;
CSignal sig;
unsigned int SamplesPerMs; // samples per milisecond
Channel myChannel[8];
};
void CReceiver::Run()
{
FILE * DataFile;
DataFile = fopen(mySetting.FileName, "rb");
ofstream out1("inout\\out4.da1");
char *aa;
int i;
int AcquringCount;
if ( DataFile == NULL )
{
cout << " data file can not be opened, terminated"<<endl;
exit(1);
}
aa = new char[sig.size()];
try{
for(int j = 0; j<60; j++)
{
fread(aa, sizeof(char), sig.size(), DataFile);
for( i = 0; i<sig.size(); i++ )
{
sig(i) = ((int)aa[i]);
}
if(mySetting.Flag == 0){
sig = CATable[mySetting.PRNNoForChannel[0]-1];
sig.shift(1000);
sig = sig* Sine(mySetting.IF-1300, mySetting.Fs, 0, sig.size()) + Randn(sig.size(), 1,mySetting.NoiseVar);
}
AcquringCount = 0;
gAcquiring = 0;
for( i=0; i<8; i++)
{
myChannel[i].Run(sig);
}
}
for( i=0; i<30; i++)
{
out1<<myChannel[0].m_AcqCodeSequence[i]<<endl;
}
} // end of try
catch(std::exception const& E)
{
std::cerr << "\nERROR: " << E.what() << std::endl;
exit(1);
}
out1.close();
fclose(DataFile);
delete [] aa;
}
int main(int argc, char* argv[]){
ifstream inp;
settings mySetting;
/* bitset<7> a ;
for(int i=0; i<7;i++){
cout<<a[i]<<" ";
}
cout<<"size(bitset) = "<<sizeof(bitset<1>)<<endl;
int num_to_find = 3;
vector<int> v1;
for( int i = 0; i < 10; i++ ) {
v1.push_back(i);
}
vector<int>::iterator result;
result = find( v1.begin(), v1.end(), num_to_find );
if( result == v1.end() ) {
cout << "Did not find any element matching " << num_to_find << endl;
}
else {
cout << "Found a matching element: " << *result << endl;
}*/
clock_t start, endt;
CSignal sig1;
CSignal sig2;
CSignal sig3, sig4;
CSignal sig5, sig6;
int scale;
// Read setup parameters from file
if (argc>1) inp.open(argv[1]); else inp.open("inout\\rec.inp");
if (!inp) {
cerr << "ERROR: Could not open receiver setup file" << endl;
exit(1);
};
GetSetup(inp, mySetting);
CReceiver myRec(mySetting);
globalout.open("inout\\outfile.dat");
myRec.Run();
globalout.close();
/* sig1 = 1;
sig2 = 1;
sig1.ZeroPadding();
sig2.ZeroPadding();
//cout<<setw(4)<<sig1<<setw(4)<<sig2<<endl;
cout<<setw(4)<<sig1<<endl;
cout<<setw(6)<<Sine(1,3.3,1.12,10)<<endl;
CSignal sig3;
sig3 = sig1.Resample(2);
cout<<setw(8)<<sig3<<endl<<endl;
cout<<setw(6)<<Correlate(sig1,sig2)<<endl;
sig1 = CACode(1);
sig2 = sig1;
sig1.shift(1 0);
cout<<sig1.size()<<endl;
sig3.Resize(1023);
*/
/*ofstream out1("inout\\out2.dat");
CSignal sig9;
double samples=8192.0;
int m = 8192;
start = clock();
double f;
for(int i=0; i<30; i++){
f = (2*pi*(mySetting.IF-7e3+i*500)/mySetting.Fs*MAGIC);
for( int j=0; j<8192; j++){
out1<<setw(9)<<SinTab[( ((int)(f*j+0.5))&MAX_TRIG)];
}
out1<<endl;
}
sig1 = CACode(1).Resample(samples/1023)*128 + Randn(8192, 1, 200);
sig2 = CSignal(sig1.size());
sig1.shift(1000);
CFixedFFT myFFT(8192);
myFFT.FFT(sig1, sig2);
sig3 = CACode(1).Resample(samples/1023)*128;
sig4 = CSignal(sig3.size());
myFFT.FFT(sig3, sig4);
sig5 = sig1*sig3 + sig2*sig4;
sig6 = sig1*sig4 - sig2*sig3;
myFFT.FFT(sig5,sig6, 1);
endt = clock();
cout<<"Time duration Haha "<<(double)(endt-start)/CLOCKS_PER_SEC<<" [Sec]"<<endl;
out1<<setw(15)<<(sig5)<<endl;
out1<<setw(15)<<(sig6)<<endl;
out1<<setw(15)<<Magnitude(sig5, sig6)<<endl;
out1.close();*/
cout<<"OK3"<<endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -