📄 transmit.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "Setting.H"
#include "RS.H"
#include "TxRx.H"
#include "Function.H"
WordType FrameTx = TotalFrame;
WordType FrameRx = TotalFrame;
float DataBuffer[NullSampleSize / 2 + NullSampleSize + SymbolSize * 3];
main()
{
FILE *ReadFile, *OriSource, *TransmitTxt;
int i, j, k = 0;
short SourceData[SrcVector];
//float ModuData[SymbolSize * (SymPerFrame + 2) + NullSampleSize + HeaderSize];
//float ModuData[SymbolSize * (SymPerFrame + 2) + NullSampleSize];
short ModuData[SymbolSize * (SymPerFrame + 2) + NullSampleSize];
if ((ReadFile = fopen("3@pcm_515out.bin", "rb")) == NULL)
{
printf("Source data file cannot be opened !\n\n");
exit(0);
}
rewind(ReadFile);
fseek(ReadFile, 0, SEEK_SET);
if ((OriSource = fopen("Data_Original.bin", "wb")) == NULL)
{
printf("Original transmitted data file cannot be opened !\n\n");
exit(0);
}
rewind(OriSource);
//if ((TransmitTxt = fopen("Data_Transmit.bin", "wb")) == NULL)
if ((TransmitTxt = fopen("3@pcm_COFDM_Tx.bin", "wb")) == NULL)
{
printf("Transmit file cannot be opened !\n\n");
exit(0);
}
rewind(TransmitTxt);
printf("Channel coding & modulating ...\n\n");
Init_RS();
/* Generate a set of pre-signal */
/* for (i = 0; i < HeaderSize; i++)
{
ModuData[i] = (float)(0.3 * (sin(2 * PI * 0.1125 * i) + sin(2 * PI * 0.05 * i)));
}
fwrite(ModuData, sizeof(float), HeaderSize, TransmitTxt);*/
/* Proceed channel encode & modulation */
for (i = 0; i < 1500; i++)
{
fread(SourceData, sizeof(short), SrcVector, ReadFile);
for (j = 0; j < SrcVector; j++)
{
SourceData[j] &= 1;
}
// fwrite(SourceData, sizeof(short), SrcVector, OriSource);
j = Transmit(SourceData, ModuData);
/* For (float) type saving */
fwrite(ModuData, sizeof(short), j, TransmitTxt);
if (fmod((double)i, 200.0) == 0)
{
printf("Processed speech frame number: %d\n", i);
}
}
printf("\nAccomplished !\n\n");
printf("Actual speech frame number: %d\n", i);
/* Fill up an integrate OFDM frame 200ms in length */
while ( !((j == (SymbolSize * SymPerFrame)) && (FrameTx == TotalFrame)) )
{
for (i = 0; i < SrcVector; i++)
{
SourceData[i] = 0;
}
fwrite(SourceData, sizeof(short), SrcVector, OriSource);
j = Transmit(SourceData, ModuData);
/* For (float) type saving */
fwrite(ModuData, sizeof(short), j, TransmitTxt);
k++;
}
printf("Padded zero speech frame number: %d\n\n", k);
/* Add padded zero samples & generate a set of post-signal */
for (i = 0; i < NullSampleSize; i++)
{
ModuData[i] = 0;
}
fwrite(ModuData, sizeof(short), NullSampleSize, TransmitTxt);
/* for (i = 0; i < HeaderSize; i++)
{
ModuData[i] = (float)(0.3 * (sin(2 * PI * 0.1125 * i) + sin(2 * PI * 0.05 * i)));
}
fwrite(ModuData, sizeof(float), HeaderSize, TransmitTxt);*/
fclose(ReadFile);
fclose(OriSource);
fclose(TransmitTxt);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -